2010-11-05 10 views

उत्तर

10

जितना अधिक दिखाया गया है उतना विस्तार में, आपके दो उदाहरण अर्थात् समान हैं।

यह एक्सएमएल की एक आम गलतफहमी है कि एक अच्छी तरह से गठित XML दस्तावेज़ में भाई तत्वों का क्रम महत्वपूर्ण है। XML 1.0 spec निर्दिष्ट करता है कि विशेषताएं अनियंत्रित हैं, हालांकि यह तत्वों के बारे में कुछ भी नहीं कहती है। इसलिए एक एक्सएमएल प्रोसेसर किसी भी क्रम में तत्व भाई बहनों की रिपोर्ट करने के लिए स्वतंत्र है।

उसने कहा, मुझे नहीं लगता कि किसी भी सामान्य रूप से उपयोग किए गए एक्सएमएल प्रोसेसर एक अलग क्रम में तत्वों को एक दस्तावेज़ में प्रकट होने के क्रम में रिपोर्ट करते हैं।

आप एक 'वैध' दस्तावेज़ के बारे में पूछते हैं - इसका तात्पर्य है कि एक डीटीडी या स्कीमा उपयोग में है, और इसलिए यह मामला प्रासंगिक हो सकता है (या नहीं)। एक डीटीडी या स्कीमा के लिए तंत्र हैं जो यह निर्दिष्ट करने के लिए हैं कि तत्व ऑर्डर दस्तावेज़ के भीतर प्रासंगिक है। हालांकि, आपके उदाहरण एक डीटीडी या स्कीमा का उपयोग नहीं दिखाते हैं।

+0

वास्तव में एक डीटीडी है। धन्यवाद। – Segolas

+0

"यह एक्सएमएल की एक आम गलतफहमी है कि एक अच्छी तरह से गठित XML दस्तावेज़ में तत्वों का क्रम महत्वपूर्ण है।" यह कोई गलतफहमी नहीं है। 3.2.1 देखें। बेशक, एक एक्सएमएल प्रोसेसर अनुक्रम बाधा को संसाधित करने में सक्षम हो सकता है और फिर भी तत्वों को एक अलग क्रम में वापस कर सकता है। यह भी सभी पाठ नोड्स rot13 सकता है। –

+0

@ रॉबर्ट रॉसनी - मैंने "भाई तत्वों" में बदलने के लिए संपादित किया है, हालांकि, मुझे अच्छी तरह से गठित दस्तावेज़ में भाई तत्वों को ऑर्डर करने के लिए 3.2.1 की प्रासंगिकता दिखाई नहीं दे रही है। क्या आप विस्तारित कर सकते हैं? – philhobgen

1

यह आपकी भाषा परिभाषा के डीटीडी (या स्कीमा) पर निर्भर करता है।

1

यह एक्सएमएल का उपभोग करने पर निर्भर करता है। एक्सएमएल दस्तावेज़ अच्छी तरह से गठित (एक्सएसडी के आधार पर) के संदर्भ में तत्वों का क्रम महत्वपूर्ण नहीं हो सकता है, लेकिन कुछ प्रोग्राम/एपीआई एक्सएमएल को वर्णमाला क्रम में (जैसे .NET में DataContractSerializer) में पढ़ने की उम्मीद करते हैं।

इसके अलावा, आदेश अर्थात् महत्वपूर्ण हो सकता है (उदाहरण के लिए यदि XML दस्तावेज़ का प्रतिनिधित्व कर रहा है, तो आदेश बहुत महत्वपूर्ण है)।

+3

मैं * वैध * (यानी कुछ डीटीडी/स्कीमा के अनुरूप) के बीच भेद कर दूंगा और * अच्छी तरह से गठित * (यानी वाक्य रचनात्मक रूप से कानूनी एक्सएमएल) अधिक स्पष्ट है। अभी मैं यह कहने का लुत्फ उठाऊंगा कि यह तर्क "वैध" शब्द का उपयोग करने के तरीके के कारण गलत है। –

+0

@Andrzej - अच्छा बिंदु। मैंने वैध के बजाय अच्छी तरह से गठित उपयोग करने के लिए अपना जवाब अपडेट किया। – RQDQ

+1

तत्वों का क्रम * अच्छी तरह से गठित होने के मामले में कभी भी महत्वपूर्ण नहीं होगा और एक्सएसडी के पास अच्छी तरह से गठित नेस के साथ कुछ लेना देना नहीं है। – Quentin

0

एक्सएमएल दस्तावेजों का एक आदेश बनाए रखता है - उन्हें दो अलग-अलग दस्तावेज माना जाता है।

आपका एप्लिकेशन तत्वों के आदेश को महत्वपूर्ण मानने पर विचार कर सकता है या नहीं। उदाहरण के लिए, एक्सएचटीएमएल में तत्वों का क्रम आवश्यक है। यदि आप स्कीमा या इसी तरह के खिलाफ मान्य हैं, तो यह स्कीमा पर निर्भर करता है कि दोनों दस्तावेज मान्य हैं या नहीं।

ध्यान दें कि विशेषताओं का क्रम महत्वपूर्ण नहीं है (हालांकि एक्सएमएल दस्तावेज जो तत्वों पर विशेषताओं के क्रम में भिन्न होते हैं) को समान माना जाता है।

4

एक्सएमएल के लिए यह महत्वपूर्ण नहीं है। दोनों दस्तावेज निश्चित रूप से अच्छी तरह से गठित एक्सएमएल दस्तावेज हैं। हालांकि, वे मान्य नहीं हो सकते हैं; एक्सएमएल स्कीमा के साथ सत्यापन करते समय, ऑर्डर निर्दिष्ट करना संभव है, और उस क्रम में तत्व प्रदान नहीं करना दस्तावेज़ को स्कीमा के अनुसार अमान्य कर देगा। यह xsd:sequence तत्व के साथ किया जा सकता है जैसा वर्णन here

संबंधित मुद्दे