(非无效)自动关闭标签在HTML5中有效吗?

W3C验证程序(Wikipedia)不喜欢在非void元素上使用自动关闭标记(以“/>”结尾的标记)。(Void元素是那些可能永远不包含任何内容的元素。)它们在HTML5中仍然有效吗

已接受的无效元素的一些示例:

<br/>
<img src=”等&引用/&燃气轮机;
<输入类型="“文本”;名称=“名称”;用户名&quot/&燃气轮机;

被拒绝的非无效元素的一些示例:

<div id="myDiv“/&燃气轮机;
<span id=”一词;mySpan“/&燃气轮机;
<textarea id="someTextMessage&quot/&燃气轮机;


注:
W3C验证器实际上接受无效的自动关闭标签:作者最初遇到问题是因为一个简单的打字错误(\>,而不是/>);然而,一般来说,自动关闭标签在HTML5中不是100%有效的,答案详细阐述了各种HTML风格的自动关闭标签问题。

  • (理论上)在HTML 4中,<foo/(是,完全没有)表示>foo&gt(这导致<br/>意思是<br>(即<br>>)和<title/hello/意思是<title>hello</title>)。我使用的术语是;“理论上”;因为这是一条SGML规则,浏览器在支持这条规则方面做得很差。由于支持太少(我只在emacs-w3m中看到过),规范建议作者避免使用语法

  • XHTML<foo/&gt表示<foo&gt&lt/foo&gt。这是一条适用于所有XML文档的XML规则。也就是说,XHTML通常用作text/html,浏览器使用与用作application/XHTML+xml的文档不同的解析器处理它(至少在历史上是这样)。W3C以text/html的形式为XHTML提供了可遵循的兼容性准则。(本质上:仅当元素定义为空时才使用自动关闭标记语法(并且在HTML规范中禁止使用结束标记))

  • 在HTML5中,<foo/&gt取决于元素的类型:

    • 对于被指定为void元素的HTML元素(基本上是“HTML5之前存在的元素,禁止包含任何内容”),结束标记是被简单禁止的。允许在开始标记末尾使用斜杠,但没有任何意义。它只是对那些沉迷于XML的人(和语法高明者)的语法糖
    • 在其他HTML元素上,斜杠是一个错误,但错误恢复将导致浏览器忽略它,并将标记视为常规的开始标记。这通常会导致缺少结束标记,从而导致后续元素成为子元素而不是同级元素
    • 外来元素(从SVG等XML应用程序导入)将其视为自动关闭语法

发表评论