【问题标题】:Are XML/HTML tag names inside closing tags really necessary?结束标签内的 XML/HTML 标签名称真的有必要吗?
【发布时间】:2011-10-10 18:00:01
【问题描述】:

这真的不是一个编程问题本身,但我想知道为什么在 XML 的结束标记中需要标记的名称。例如,不能

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

写出来

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

所以每个结束标签&lt;/&gt; 只是终止了最后一个打开的标签?

所以我的问题是

  1. 这是否可行(即是否有任何我没有想到的极端情况会导致模棱两可/失败)?
  2. 如果可行,为什么“他们”不这样设计?

【问题讨论】:

  • 闻起来像 SGML。 SGML 也允许 &lt;t/stuff/ 之类的东西,但 SGML 被简化为获取 XML,以便更容易使用和解析。
  • 我同意“亩太短”。补充一下,它需要遵循“格式良好”的 XML 概念,XML 1.0 推荐 (w3.org/TR/REC-xml/#sec-starttags) 的第 2.1 节列出了这一点。
  • 在我上一条评论的基础上,SGML 旨在手动编写,因此有很多快捷方式,XML 旨在通过软件支持构建(XML 编辑器或完全由软件生成)所以更简单/更快的解析器比快捷方式更重要。
  • 使用&lt;/&gt;而不是实际的结束标签有什么好处?
  • 我不同意投票结束。这既是建设性的,也是一个真实的问题,而且是一个很好的问题。

标签: xml tags language-design


【解决方案1】:

如果可行,为什么“他们”不这样设计?

一个原因是 SGML/XML 也被设计成人类可读的。您的/a/b 示例是可读的,但是更复杂的结构将是试图解释的噩梦。

对于混合内容(PCDATA 和元素结构混合)尤其如此。

【讨论】:

    【解决方案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 中,也可以清楚地看到文本属于元素 &lt;eight&gt;

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      • 2013-11-19
      • 2019-04-28
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多