這實在不是一個編程問題本身,但我想知道爲什麼XML中的結束標籤需要標籤的名稱。例如,不能關閉標籤中的XML/HTML標籤名稱是否真的有必要?
<a>
<b>stuff</b>
</a>
寫入
<a>
<b>stuff</>
</>
讓每個關閉標籤</>
只是終止了最後打開的標籤?
所以我的問題是
- 將這項工作(即是有任何一個角落的情況下,我沒有想到的,其中這將是模棱兩可/失敗)?
- 如果能行得通,那爲什麼他們不這樣設計呢?
這實在不是一個編程問題本身,但我想知道爲什麼XML中的結束標籤需要標籤的名稱。例如,不能關閉標籤中的XML/HTML標籤名稱是否真的有必要?
<a>
<b>stuff</b>
</a>
寫入
<a>
<b>stuff</>
</>
讓每個關閉標籤</>
只是終止了最後打開的標籤?
所以我的問題是
如果可行,爲什麼'他們'這樣設計呢?
其中一個原因是SGML/XML也被設計爲人類可讀的。你的/a/b
的例子是可讀的,但是一個更復雜的結構可能是一個嘗試解釋的噩夢。
對於混合內容(PCDATA和元素結構混合)尤其如此。
它可以工作,但調試嵌套問題將會很糟糕。例如:
<one><two><nine></><ten></><eight><three></><four>
<five></><six></></>
<seven></>To what element does this text belong?</></></>
如果您確保XML具有正確的縮進,嵌套的問題都不是問題(下面是正確的縮進相同的代碼然而,由於壓痕是微不足道的,我們需要另一種機制來保持。在XML的人可讀的。在這個例子中,人類可讀的指人可以很容易地看到哪些內容屬於哪個元素。的解決方案是,其元件每個閉合標籤是指名稱。
<one>
<two>
<nine>
</nine>
<ten>
</ten>
<eight>
<three>
</>
<four>
<five>
</>
<six>
</>
</>
<seven>
</>
To what element does this text belong?
</>
</>
</>
當我們得到關閉標籤名稱,甚至可以很清楚地看到,即使是不正確縮進的XML文本也屬於元素<eight>
。
<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>
聞起來像SGML。 SGML也允許諸如'
我同意「mu太短」。爲了補充,它需要遵循XML格式「良構」的XML概念,XML 1.0建議(http://www.w3.org/TR/REC-xml/#sec-starttags)的2.1節列出了這個概念。 –
除了我最後的評論之外,SGML是專門用手寫的,所以有很多快捷方式,XML是用軟件支持(XML編輯器或由軟件完全生成的)構建的,所以更簡單/更快的解析器更多比捷徑更重要。 –