2011-07-22 11 views
7

यह वास्तव में प्रोग्रामिंग प्रश्न प्रति से नहीं है, लेकिन मैं सोच रहा था कि एक्सएमएल में एक बंद टैग में टैग का नाम क्यों आवश्यक है।क्या क्लोजिंग टैग के अंदर एक्सएमएल/एचटीएमएल टैग नाम वास्तव में आवश्यक हैं?

<a> 
    <b>stuff</b> 
</a> 

<a> 
    <b>stuff</> 
</> 

नहीं लिखी जा उदाहरण के लिए, हो सकता है ताकि प्रत्येक अंतिम टैग </> केवल समाप्त पिछले टैग खोला?

तो मेरे सवालों का

  1. इस काम (अर्थात/असफल वहाँ किसी भी कोने मामलों मैं की है जिसमें यह अस्पष्ट होगा सोच नहीं कर रहा हूँ कर रहे हैं) हैं कर रहे हैं?
  2. यदि यह काम करेगा, तो उन्होंने 'वे' इस तरह क्यों डिजाइन नहीं किया?
+2

एसजीएमएल की तरह बदबू आ रही है। एसजीएमएल '

+0

मैं "एमयू बहुत छोटा है" से सहमत हूं। जोड़ने के लिए, इसे "अच्छी तरह से गठित" की XML अवधारणा का पालन करना होगा, XML 1.0 अनुशंसा (http://www.w3.org/TR/REC-xml/#sec-starttags) की धारा 2.1 इस सूची को सूचीबद्ध करता है। –

+0

मेरी आखिरी टिप्पणी के आगे, एसजीएमएल का हाथ हाथ से लिखा जाना था, इसलिए बहुत सारे शॉर्टकट थे, एक्सएमएल सॉफ्टवेयर समर्थन के साथ बनाया जाना था (या तो एक एक्सएमएल संपादक या सॉफ़्टवेयर द्वारा पूरी तरह जेनरेट किया गया) ताकि एक सरल/तेज़ पार्सर अधिक हो शॉर्टकट से महत्वपूर्ण है। –

उत्तर

5

अगर यह काम करेगा, क्यों 'वे' इसे उस तरह से डिजाइन नहीं किया?

एक कारण यह है कि एसजीएमएल/एक्सएमएल भी मानव पठनीय होने के लिए डिज़ाइन किया गया है। आपका /a/b उदाहरण पठनीय है, लेकिन एक संरचना अधिक जटिल होगी व्याख्या करने की कोशिश करने के लिए एक दुःस्वप्न होगा।

यह विशेष रूप से मिश्रित सामग्री (पीसीडीएटीए और तत्व संरचना मिश्रित) के साथ सच होगा।

2

यह काम करेगा, लेकिन घोंसले के मुद्दे को डीबग करना भयानक होगा। उदाहरण के लिए:।

<one><two><nine></><ten></><eight><three></><four> 
<five></><six></></> 
<seven></>To what element does this text belong?</></></> 

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

<one> 
<two> 
    <nine> 
    </nine> 
    <ten> 
    </ten> 
    <eight> 
     <three> 
     </> 
     <four> 
      <five> 
      </> 
      <six> 
      </> 
     </> 
     <seven> 
     </> 
     To what element does this text belong? 
    </> 
</> 
</> 

जब हम दे टैग टैग बंद करना, यहां तक ​​कि अनुचित इंडेंट एक्सएमएल में भी देखना स्पष्ट है कि पाठ तत्वसे संबंधित है 0।

<one><two><nine></nine><ten></ten><eight><three></three><four> 
<five></five><six></six></four><seven> 
</seven>To what element does this text belong?</eight></two></one>