program - xml tutorial pdf




एक्सएमएल में 'स्टैंडअलोन' निर्देश का क्या अर्थ है? (4)

मार्कअप घोषणाएं दस्तावेज़ की सामग्री को प्रभावित कर सकती हैं, जैसा कि किसी XML प्रोसेसर से किसी एप्लिकेशन में पास किया गया है; उदाहरण डिफ़ॉल्ट और इकाई घोषणा विशेषताएँ हैं। स्टैंडअलोन दस्तावेज़ घोषणा, जो एक्सएमएल घोषणा के घटक के रूप में दिखाई दे सकती है, संकेत करता है कि ऐसी घोषणाएं हैं जो दस्तावेज़ इकाई या पैरामीटर इकाइयों में बाहरी दिखाई देती हैं। [परिभाषा: बाहरी मार्कअप घोषणा बाहरी सबसेट में या पैरामीटर इकाई (बाह्य या आंतरिक, बाद में शामिल होने के कारण होने वाली मार्कअप घोषणा के रूप में परिभाषित की जाती है क्योंकि गैर-सत्यापन प्रोसेसर को पढ़ने की आवश्यकता नहीं होती है)।]

http://www.w3.org/TR/xml/#sec-rmd

एक्सएमएल दस्तावेज़ में ' standalone ' निर्देश का क्या अर्थ है?


standalone घोषणा DTD में किसी भी मार्कअप घोषणाओं को अनदेखा करने के लिए पार्सर को बताने का एक तरीका है। इसके बाद डीटीडी केवल सत्यापन के लिए उपयोग किया जाता है।

उदाहरण के तौर पर, विनम्र <img> टैग पर विचार करें। यदि आप एक्सएचटीएमएल 1.0 डीटीडी देखते हैं, तो आप पार्सर को बताते हुए एक मार्कअप घोषणा देखते हैं कि <img> टैग EMPTY होना चाहिए और इसमें src और alt विशेषताएँ हों। जब कोई ब्राउज़र एक्सएचटीएमएल 1.0 दस्तावेज़ के माध्यम से जा रहा है और एक <img> टैग पाता है, तो उसे ध्यान देना चाहिए कि डीटीडी को src और alt विशेषताओं की आवश्यकता है और यदि वे मौजूद नहीं हैं तो उन्हें जोड़ें। यह <img> टैग को भी बंद कर देगा क्योंकि इसे ईएमपीटीई माना जाता है। एक्सएमएल विनिर्देश का अर्थ यह है कि "मार्कअप घोषणाएं दस्तावेज़ की सामग्री को प्रभावित कर सकती हैं।" फिर आप इन नियमों को अनदेखा करने के लिए पार्सर को बताने के लिए standalone घोषणा का उपयोग कर सकते हैं।

चाहे आपका पार्सर वास्तव में ऐसा करता है या नहीं, यह एक और सवाल है, लेकिन मानकों-अनुरूप वैध पार्सर (ब्राउज़र की तरह) चाहिए।

ध्यान दें कि यदि आप एक डीटीडी निर्दिष्ट नहीं करते हैं, तो स्टैंडअलोन घोषणा "का कोई अर्थ नहीं है," इसलिए इसका उपयोग करने का कोई कारण नहीं है जब तक आप एक डीटीडी निर्दिष्ट नहीं करते।


standalone=yes घोषणा का इरादा यह गारंटी देना है कि दस्तावेज़ के अंदर की जानकारी को केवल आंतरिक डीटीडी के आधार पर विश्वसनीय रूप से पुनर्प्राप्त किया जा सकता है, यानी दस्तावेज़ बाहरी संदर्भ के साथ "अकेले खड़े" हो सकता है। एक स्टैंडअलोन दस्तावेज़ को मान्य करने से यह सुनिश्चित होता है कि मान्य और गैर-मान्य प्रोसेसर बिल्कुल वही जानकारी प्रदान करेंगे।

स्टैंडअलोन घोषणा कोई उद्देश्य नहीं देती है यदि किसी दस्तावेज़ में कोई बाहरी डीटीडी नहीं है, और या तो आंतरिक डीटीडी या आंतरिक डीटीडी में कोई पैरामीटर इकाई संदर्भ नहीं है।

standalone=yes का उपयोग करने के वास्तविक प्रभाव निम्नलिखित हैं।

  • बाहरी डीटीडी या पैरामीटर इकाई संदर्भों के साथ दस्तावेज़ों को फोर्स करता है यदि वे आंतरिक डीटीडी में घोषित इकाइयों के संदर्भ नहीं रखते हैं (पैरामीटर इकाइयों के प्रतिस्थापन पाठ की गणना नहीं होती है); amp , lt , gt , apos , और quot एकमात्र अपवाद हैं

  • अनदेखा पैरामीटर इकाई संदर्भ के बाद आंतरिक डीटीडी में मार्कअप घोषणाओं को पार्स करने के लिए गैर-मान्य प्रोसेसर को मजबूर करता है

  • यदि दस्तावेज़ में से कोई भी दस्तावेज़ में पाया गया है, तो कोई त्रुटि फेंकने के लिए प्रोसेसर को मान्य करता है, और उनकी संबंधित घोषणा बाह्य डीटीडी में या पैरामीटर इकाई प्रतिस्थापन टेक्स्ट में होती है:

    • डिफ़ॉल्ट मानों के साथ विशेषताएँ, यदि उनके पास उनके मूल्य स्पष्ट रूप से उपलब्ध नहीं हैं
    • इकाई संदर्भ ( amp , lt , gt , apos , और quot )
    • टोकनकृत प्रकारों के साथ गुण, यदि विशेषता का मान सामान्यीकरण द्वारा संशोधित किया जाएगा
    • तत्व सामग्री वाले तत्व, यदि उनकी सामग्री में कोई भी सफेद स्थान होता है

इन सभी के लिए फ्लिप पक्ष यह है कि एक गैर-सत्यापन प्रोसेसर बाहरी डीटीडी को पुनर्प्राप्त करने और उन सभी दस्तावेज़ों के लिए सभी पैरामीटर इकाई संदर्भों का विस्तार करने पर विचार कर सकता है जो स्टैंडअलोन नहीं हैं, भले ही ऐसा करने के लिए कोई दायित्व नहीं है।

यहां अन्य उत्तरों या तो अधूरे या गलत हैं, मुख्य गलतफहमी यह है कि

स्टैंडअलोन घोषणा डीडीडी में किसी भी मार्कअप घोषणाओं को अनदेखा करने के लिए पार्सर को बताने का एक तरीका है। इसके बाद डीटीडी केवल सत्यापन के लिए उपयोग किया जाता है।

स्टैंडअलोन = "हां" का अर्थ है कि एक्सएमएल प्रोसेसर को केवल सत्यापन के लिए डीटीडी का उपयोग करना चाहिए।

काफी विपरीत, एक दस्तावेज़ को स्टैंडअलोन घोषित करने से वास्तव में आंतरिक घोषणाओं को पार्स करने के लिए एक गैर-सत्यापन प्रोसेसर को मजबूर कर दिया जाएगा, जिसे सामान्य रूप से अनदेखा करना चाहिए (यानी पैरामीटर इकाई संदर्भ के बाद)। गैर-सत्यापन प्रोसेसर को अभी भी डिफ़ॉल्ट विशेषता मान प्रदान करने और टोकनयुक्त विशेषताओं को सामान्य करने के लिए आंतरिक डीटीडी में जानकारी का उपयोग करना चाहिए, क्योंकि यह सत्यापन से स्वतंत्र है।


  • स्टैंडअलोन निर्देश एक्सएमएल घोषणा पर एक वैकल्पिक विशेषता है।
  • मान्य मान yes और no , जहां डिफ़ॉल्ट मान no है।
  • विशेषता केवल तभी प्रासंगिक होती है जब DTD का उपयोग किया जाता है। (डीटीडी के बजाय schema का उपयोग करते समय विशेषता अप्रासंगिक है।)
  • standalone="yes" अर्थ है कि एक्सएमएल प्रोसेसर को केवल सत्यापन के लिए डीटीडी का उपयोग करना चाहिए। उस स्थिति में इसका उपयोग नहीं किया जाएगा:
    • विशेषताओं के लिए डिफ़ॉल्ट मान
    • इकाई घोषणाएं
    • मानकीकरण
  • ध्यान दें कि यदि दस्तावेज़ बाहरी डीटीडी का उपयोग करता है तो standalone="yes" वैधता बाधाओं को जोड़ सकता है। जब दस्तावेज़ में ऐसी चीजें होती हैं जिन्हें एक्सएमएल के संशोधन की आवश्यकता होती है, जैसे गुणों के लिए डिफ़ॉल्ट मान, और standalone="yes" का उपयोग किया जाता है तो दस्तावेज़ अमान्य है
  • standalone="yes" दस्तावेज़ प्रसंस्करण के प्रदर्शन को अनुकूलित करने में मदद कर सकता है।

स्रोत: स्टैंडअलोन छद्म-विशेषता केवल तभी प्रासंगिक होती है जब डीटीडी का उपयोग किया जाता है





xml