जवाबों:
standalone
घोषणा में किसी भी मार्कअप घोषणाओं की अनदेखी करने के पार्सर बताने का एक तरीका है DTD । इसके बाद DTD का उपयोग केवल सत्यापन के लिए किया जाता है।
एक उदाहरण के रूप में, विनम्र <img>
टैग पर विचार करें । यदि आप XHTML 1.0 DTD को देखते हैं, तो आपको एक मार्कअप घोषणापत्र दिखाई देता है जो पार्सर को बताता है कि <img>
टैग EMPTY और होने चाहिए src
और alt
विशेषताएँ होनी चाहिए । जब कोई ब्राउज़र XHTML 1.0 दस्तावेज़ से गुजर रहा होता है और उसे एक <img>
टैग मिलता है , तो उसे ध्यान देना चाहिए कि DTD की आवश्यकता src
और alt
विशेषताएँ हैं और यदि वे मौजूद नहीं हैं तो उन्हें जोड़ें। यह <img>
टैग को स्वयं बंद कर देगा क्योंकि यह EMPTY माना जाता है। यह XML विनिर्देशन का अर्थ है "मार्कअप घोषणाओं से दस्तावेज़ की सामग्री प्रभावित हो सकती है।" फिर आप standalone
इन नियमों को अनदेखा करने के लिए पार्सर को बताने के लिए घोषणा का उपयोग कर सकते हैं।
आपका पार्सर वास्तव में ऐसा करता है या नहीं, यह एक और सवाल है, लेकिन मानकों का अनुपालन करने वाला पार्सर (एक ब्राउज़र की तरह) होना चाहिए।
ध्यान दें कि यदि आप डीटीडी निर्दिष्ट नहीं करते हैं, तो स्टैंडअलोन घोषणा का "कोई मतलब नहीं है," इसलिए इसका उपयोग करने का कोई कारण नहीं है जब तक कि आप डीटीडी भी निर्दिष्ट नहीं करते हैं।
standalone=yes
, मार्कअप घोषणाओं को नजरअंदाज नहीं कर रहे हैं, बजाय वे दस्तावेज़ अमान्य XML होने का कारण बन। अगर मैं उत्तर में संपादित करूं तो क्या आप बुरा मानेंगे?
yes
और no
, no
डिफ़ॉल्ट मान कहाँ है।standalone="yes"
इसका मतलब है कि XML प्रोसेसर को केवल सत्यापन के लिए DTD का उपयोग करना चाहिए। उस स्थिति में इसका उपयोग नहीं किया जाएगा :
standalone="yes"
दस्तावेज़ में बाहरी DTD का उपयोग करने पर वैधता की कमी हो सकती है। जब दस्तावेज़ में ऐसी चीज़ें होती हैं जो XML के संशोधन की आवश्यकता होती हैं, जैसे कि विशेषताओं के लिए डिफ़ॉल्ट मान, और standalone="yes"
इसका उपयोग किया जाता है तो दस्तावेज़ अमान्य है ।standalone="yes"
दस्तावेज़ प्रसंस्करण के प्रदर्शन को अनुकूलित करने में मदद मिल सकती है।स्रोत: यदि DTD का उपयोग किया जाता है तो स्टैंडअलोन छद्म विशेषता केवल प्रासंगिक है
standalone
वर्णन करता है कि वर्तमान XML दस्तावेज़ बाहरी मार्कअप घोषणा पर निर्भर करता है।
W3C "एक्स्टेंसिबल मार्कअप लैंग्वेज (XML) 1.0 (पांचवां संस्करण)" में अपने उद्देश्य का वर्णन करता है:
मार्कअप घोषणाएँ दस्तावेज़ की सामग्री को प्रभावित कर सकती हैं, जैसा कि एक एक्सएमएल प्रोसेसर से एक आवेदन में पारित किया जाता है; उदाहरण गुण दोष और इकाई घोषणाएँ हैं। स्टैंडअलोन दस्तावेज़ घोषणा, जो XML घोषणा के घटक के रूप में प्रकट हो सकती है, संकेत देती है कि ऐसी घोषणाएँ हैं या नहीं जो दस्तावेज़ इकाई या पैरामीटर संस्थाओं में बाहरी दिखाई देती हैं। [परिभाषा: एक बाहरी मार्कअप घोषणापत्र को बाहरी उपसमूह या एक पैरामीटर इकाई (बाहरी या आंतरिक, उत्तरार्द्ध को शामिल किया गया है क्योंकि उन्हें पढ़ने के लिए आवश्यक नहीं है) में एक मार्कअप घोषणा के रूप में परिभाषित किया गया है।]
standalone=yes
घोषणा की मंशा इस बात की गारंटी है कि दस्तावेज़ के अंदर की जानकारी केवल आंतरिक DTD के आधार पर विश्वासपूर्वक प्राप्त की जा सकती है, अर्थात दस्तावेज़ बिना किसी बाहरी संदर्भ के "अकेले खड़े हो सकते हैं"। स्टैंडअलोन दस्तावेज़ को मान्य करना यह सुनिश्चित करता है कि गैर-वैध प्रोसेसर के पास दस्तावेज़ को सही ढंग से पार्स करने के लिए उपलब्ध सभी जानकारी होगी।
यदि किसी दस्तावेज़ में कोई बाहरी DTD नहीं है, तो स्टैंडअलोन घोषणा कोई उद्देश्य नहीं रखती है, और आंतरिक DTD का कोई पैरामीटर इकाई संदर्भ नहीं है, क्योंकि ये दस्तावेज़ पहले से ही स्टैंडअलोन हैं।
उपयोग करने के वास्तविक प्रभाव निम्नलिखित हैं standalone=yes
।
बाहरी डीटीडी या पैरामीटर इकाई संदर्भों के साथ दस्तावेजों को पार्स करते समय प्रोसेसर को एक त्रुटि फेंकने के लिए मजबूर करता है, अगर दस्तावेज़ में आंतरिक डीटीडी में घोषित संस्थाओं के संदर्भ नहीं होते हैं (गैर-वैध प्रोसेसर के रूप में पैरामीटर संस्थाओं के प्रतिस्थापन पाठ के अपवाद की आवश्यकता नहीं होती है) यह पार्स); amp
, lt
, gt
, apos
, और quot
केवल अपवाद हैं
जब एक दस्तावेज को स्टैंडअलोन घोषित नहीं किया जाता है, तो एक गैर-वैध प्रोसेसर आंतरिक डीटीडी को पार्स करने से रोकने के लिए स्वतंत्र है जैसे ही यह एक पैरामीटर इकाई संदर्भ का सामना करता है। एक दस्तावेज की घोषणा के रूप में स्टैंडअलोन गैर-वैध प्रोसेसर को आंतरिक डीटीडी में मार्कअप घोषणाओं को पार्स करने के लिए मजबूर करता है, भले ही वे एक या अधिक पैरामीटर इकाई संदर्भों को अनदेखा करते हैं।
निम्नलिखित में से कोई भी दस्तावेज़ में पाए जाने पर प्रोसेसर को त्रुटि देने के लिए मान्य करने के लिए मजबूर करता है, और उनके संबंधित घोषणाएं बाहरी डीटीडी या पैरामीटर इकाई प्रतिस्थापन पाठ में होती हैं:
amp
, lt
, gt
, apos
, और quot
)एक गैर-मान्य प्रोसेसर बाहरी DTD को पुनर्प्राप्त करने और उन दस्तावेजों के लिए सभी पैरामीटर इकाई संदर्भों का विस्तार करने पर विचार कर सकता है जो स्टैंडअलोन नहीं हैं, भले ही ऐसा करने के लिए कोई दायित्व नहीं है, अर्थात सेटिंग standalone=yes
सैद्धांतिक रूप से गैर-मान्य प्रोसेसर (खराब चेतावनी) के लिए प्रदर्शन में सुधार कर सकती है: यह शायद एक फर्क नहीं पड़ेगा)।
यहाँ अन्य उत्तर या तो अधूरे हैं या गलत, मुख्य गलत धारणा है
स्टैंडअलोन घोषणा डीटीडी में किसी भी मार्कअप घोषणाओं की अनदेखी करने के लिए पार्सर को बताने का एक तरीका है। इसके बाद DTD का उपयोग केवल सत्यापन के लिए किया जाता है।
स्टैंडअलोन = "हां" का अर्थ है कि XML प्रोसेसर को केवल सत्यापन के लिए DTD का उपयोग करना चाहिए।
इसके विपरीत, एक दस्तावेज को स्टैंडअलोन घोषित करना वास्तव में एक गैर-वैध प्रोसेसर को आंतरिक घोषणाओं को पार्स करने के लिए मजबूर करेगा, जिसे आम तौर पर अनदेखा करना चाहिए (अर्थात एक अनदेखा पैरामीटर इकाई संदर्भ के बाद)। गैर-मान्य प्रोसेसर अभी भी डिफ़ॉल्ट विशेषता मान प्रदान करने और टोकन विशेषताओं को सामान्य करने के लिए आंतरिक DTD में जानकारी का उपयोग करना चाहिए, क्योंकि यह सत्यापन से स्वतंत्र है।