这实际上不是一个编程问题本身,但我想知道为什么在XML的结束标记中需要标记的名称。例如,不能
<a>
<b>stuff</b>
</a>
写的
<a>
<b>stuff</>
</>
这样每个结束标记</>
只是终止了最后打开的标记吗?
所以我的问题是
答案 0 :(得分:5)
如果它能起作用,为什么不“他们”那样设计呢?
一个原因是SGML / XML也被设计为人类可读的。您的/a/b
示例是可读的,但更复杂的结构将是尝试解释的噩梦。
对于混合内容(PCDATA和元素结构混合)尤其如此。
答案 1 :(得分:2)
它可以工作,但调试嵌套问题会很糟糕。例如:
<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>