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


272

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

जवाबों:


203

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

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

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

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


9
उदाहरण के लिए और संशोधन की आवश्यकता है। "स्टैंडअलोन = 'नहीं' होने से सामान्य रूप से बिना एक्सएमएल टैग बंद नहीं होगा (यह एसजीएमएल की विशेषता है, लेकिन एक्सएमएल का नहीं)। मान्यता विफल हो जाएगी। यह उन विशेषताओं के लिए मान प्रदान नहीं करेगा जो कि आवश्यक हैं, या तो।
खेमूसेट

2
"स्टैंडअलोन घोषणा डीटीडी में किसी भी मार्कअप घोषणाओं को अनदेखा करने के लिए पार्सर को बताने का एक तरीका है।" यह सही नहीं है। साथ standalone=yes, मार्कअप घोषणाओं को नजरअंदाज नहीं कर रहे हैं, बजाय वे दस्तावेज़ अमान्य XML होने का कारण बन। अगर मैं उत्तर में संपादित करूं तो क्या आप बुरा मानेंगे?
sleske

@sleske कृपया केवल बदलाव करें। यदि वह खुश नहीं है तो लेखक हमेशा वापस आ सकता है।
स्टीफन

@ स्टेफ़न: प्रोत्साहन के लिए धन्यवाद। दुर्भाग्य से, मैं पूरे XML सामान पर वर्तमान नहीं हूं, इसलिए मैं आत्मविश्वास से अभी संपादित नहीं कर सकता। यदि आपके पास अप-टू-डेट ज्ञान :-) है तो खुद को संपादित करने के लिए स्वतंत्र महसूस करें।
सालेके

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

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


2
स्टैंडअलोन = "हाँ" का उपयोग करने से अतिरिक्त वैधता की कमी होती है (अर्थात XML दस्तावेज़ अमान्य हो सकता है)। मैंने इसे उत्तर में संपादित किया, आशा है कि यह ठीक है।
1717

2
@ स्लेसके आपके योगदान के लिए धन्यवाद। मैंने अपनी बात स्पष्ट रूप से बताते हुए आपके संपादन को सरल बनाने का प्रयास किया। अगर मुझे यह गलत लगा तो फिर से संपादित करने के लिए स्वतंत्र महसूस करें।
रिंकी

20

standalone वर्णन करता है कि वर्तमान XML दस्तावेज़ बाहरी मार्कअप घोषणा पर निर्भर करता है।

W3C "एक्स्टेंसिबल मार्कअप लैंग्वेज (XML) 1.0 (पांचवां संस्करण)" में अपने उद्देश्य का वर्णन करता है:


10

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

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


12
इसका क्या मतलब है?
डैन कार्टर 1

4
मैंने इसका खंडन किया क्योंकि इसे मध्यम QI वाले सामान्य मनुष्यों के लिए समझा जा सकता है।
एंड्रिया सिल्वेस्ट्री

8

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

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

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

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

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

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

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

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


यहाँ अन्य उत्तर या तो अधूरे हैं या गलत, मुख्य गलत धारणा है

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

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.