HTML:包含或排除可选的结束标记?

一些HTML1结束标签是可选的,即:

</HTML>
</HEAD>
</BODY>
</P>
</DT>
</DD>
</LI>
</OPTION>
</THEAD>
</TH>
</TBODY>
</TR>
</TD>
</TFOOT>
</COLGROUP>

注意:不要与禁止包含的结束标记混淆,即:

</IMG>
</INPUT>
</BR>
</HR>
</FRAME>
</AREA>
</BASE>
</BASEFONT>
</COL>
</ISINDEX>
</LINK>
</META>
</PARAM>

注意: xhtml与HTML不同。 xhtml是xml的一种形式,它要求每个元素都有一个结束标记。 结束标签可以在html中被禁止 ,但在xhtml强制性的。

是可选的结束标签

  • 理想地包括在内,但如果你忘了他们,我们会接受他们,或者
  • 理想情况下不包括在内,但如果你把它们放进去,我们会接受它们
  • 换句话说,我应该包括它们,还是不应该包含它们?

    HTML 4.01规范谈到了关闭元素标签是可选的,但并未说明是否最好包含它们,或者最好不要包含它们。

    另一方面,DevGuru上的一篇随机文章说道:

    结束标记是可选的。 但是,建议将其包含在内。

    我问的原因是因为你只是知道它是可选的,因为兼容性的原因; 如果他们可以的话,他们会( 必须禁止他们。

    换句话说:HTML 1,2,3对这些(现在是可选的)结束标记做了什么? HTML 5做什么? 我该怎么做?

    注意

    HTML中的某些元素被禁止关闭标签。 您可能会不同意这一点,但这是规范,并不适合辩论。 我在问可选的结束标签,以及意图是什么。

    脚注

    1HTML 4.01


    可选的都是应该在语义上清楚的地方,而不需要结束标记。 如果在它之前没有一个权利,那么每个<li>暗示一个</li>

    禁止使用的结束标签之后都会紧跟着结束标签,因此每次输入<img src="blah" alt="blah"></img>将会是多余的。

    我几乎总是使用可选标签(除非我有一个非常好的理由),因为它提供了更易于读取和更新的代码。


    有些情况下显式标签可以提供帮助,但有时候这是不必要的迂腐行为。

    请注意,HTML规范明确指定何时有效省略标记,因此并不总是错误。

    例如,你永远不需要</body></html> 。 没有人记得明确地放置<tbody> (以至于XHTML为它制定了例外)。

    你不需要</head><body>除非你有DOM操作脚本实际上搜索<head> (那么最好明确地关闭它,因为<head>隐含结束规则可能让你感到意外)。

    嵌套列表在没有</li>情况下实际上更好,因为那样很难创建错误的ul > ul树。

    有效:

    <ul>
      <li>item
      <ul>
        <li>item
      </ul>
    </ul>
    

    无效:

    <ul>
      <li>item</li>
      <ul>
        <li>item</li>
      </ul>
    </ul>
    

    请记住,无论您是否尝试关闭所有元素,都会隐含结束标记。 放置结束标记不会自动使解析更健壮:

    <p>foo <p>bar</p> baz</p>
    

    将解析为:

    <p>foo</p><p>bar</p> baz
    

    它只能帮助您验证文档。


    我在这里添加一些链接来帮助您了解HTML的历史,让您了解各种矛盾。 这不是你的问题的答案,但你会阅读这些不同的摘要后知道更多。

  • 我们是怎么来到这里的? - 潜入HTML5
  • 网络的历史
  • HTML简史
  • HTML的历史记录 - HTML WG Wiki
  • Dive Into HTML5中的一些摘录:

    事实上,“破碎的”HTML标记在Web浏览器中仍然有效,导致作者创建了破损的HTML页面。 很多破碎的页面。 据估计,目前网络上超过99%的HTML页面至少有一个错误。 但是因为这些错误不会导致浏览器显示可见的错误消息,所以没有人修复过它们。

    W3C认为这是网络的一个基本问题,他们着手纠正它。 XML于1997年发布,突破了宽容客户的传统,并规定所有使用XML的程序必须将所谓的“格式良好”错误视为致命错误。 在希腊领导人德拉科对他的法律进行相对轻微的违反而实施死刑之后,这种对第一个错误失败的概念被称为“严厉的错误处理”。 当W3C将XML重新编写为XML词汇表时,他们强制要求使用新的application/xhtml+xml MIME类型的所有文档都将受到严重错误处理的影响。 如果您的XHTML页面中甚至出现单一格式错误,Web浏览器将别无选择,只能停止处理并向最终用户显示错误消息。

    这个想法并不普遍。 由于现有页面上的错误率高达99%,为最终用户显示错误的可能性一直存在,并且XHTML 1.0和1.1中的新功能缺乏合理的成本,所以网络作者基本忽略了application/xhtml+xml 。 但这并不意味着他们完全忽略了XHTML。 哦,绝对不是。 XHTML 1.0规范的附录C为世界的Web作者提供了一个漏洞:“使用类似于XHTML语法的东西,但继续使用text/html MIME类型。”这正是成千上万的Web开发人员所做的:他们“升级”为XHTML语法,但一直以text / html MIME类型提供服务。

    即使在今天,数百万个网页声称是XHTML。 他们从第一行的XHTML文档类型开始,使用小写的标签名称,围绕属性值使用引号,并在像<br /><hr />这样的空元素之后添加尾部的斜线。 但是,这些页面中只有很小一部分与application/xhtml+xml MIME类型一起提供,这将触发XML的严重错误处理。 任何以text/html MIME类型提供的页面 - 无论文档类型,语法或编码风格如何 - 都将使用“forgiving”HTML解析器进行解析,静静地忽略任何标记错误,并且永远不会提醒最终用户(或任何其他人)如果这些页面在技术上被破坏。

    XHTML 1.0包含了这个漏洞,但XHTML 1.1关闭了它,并且未定案的XHTML 2.0延续了需要严格错误处理的传统。 这就是为什么有数十亿页声称是XHTML 1.0,并且只有少数声称是XHTML 1.1(或XHTML 2.0)。 那么你真的使用XHTML吗? 检查您的MIME类型。 (实际上,如果你不知道你使用的是什么MIME类型,我几乎可以保证你仍然使用text/html 。)除非你使用MIME类型的application/xhtml+xml来提供你的页面,你所谓的“XHTML”仅仅是XML的名称。

    提出不断发展的HTML和HTML表单的人面临着两种选择:放弃或继续他们在W3C之外的工作。 他们选择了后者,注册了whatwg.org域名,并于2004年6月成立了WHAT工作组。

    [T]什么工作组也在悄悄地在其他一些事情上工作。 其中之一是一个规范,最初称为Web Forms 2.0,它向HTML表单添加了新类型的控件。 (您将在A Form of Madness中了解更多关于Web表单的知识)。另一个是名为“Web Applications 1.0”的规范草案,其中包括主要的新功能,如直接模式绘制画布和本地支持音频和视频的插件。

    在2009年10月,W3C关闭了XHTML 2工作组并发布了此声明来解释他们的决定:

    当W3C于2007年3月宣布了HTML和XHTML 2工作组时,我们表示我们将继续监控XHTML 2的市场.W3C认识到向社区明确表示HTML未来发展的重要性。

    虽然我们在与参与者讨论后认识到XHTML 2工作组多年来的贡献的价值,但W3C管理层决定允许工作组的章程在2009年底到期,而不是续约。

    赢的是那些运送的。

    链接地址: http://www.djcxy.com/p/18979.html

    上一篇: HTML: Include, or exclude, optional closing tags?

    下一篇: HTML 5 versus XHTML 1.0 Transitional?