W3C验证程序(Wikipedia)不喜欢在非void元素上使用自动关闭标记(以“/>;”结尾的标记)。(Void元素是那些可能永远不包含任何内容的元素。)它们在HTML5中仍然有效吗
已接受的无效元素的一些示例:
<;br/>;
<;img src=”等&引用/&燃气轮机;
<;输入类型=";“文本”;名称=“名称”;用户名"/&燃气轮机;
被拒绝的非无效元素的一些示例:
<;div id=";myDiv“/&燃气轮机;
<;span id=”一词;mySpan“/&燃气轮机;
<;textarea id=";someTextMessage"/&燃气轮机;
注:
W3C验证器实际上接受无效的自动关闭标签:作者最初遇到问题是因为一个简单的打字错误(\>,而不是/>);然而,一般来说,自动关闭标签在HTML5中不是100%有效的,答案详细阐述了各种HTML风格的自动关闭标签问题。
-
(理论上)在HTML 4中,
<;foo/(是,完全没有)表示>;foo>(这导致<;br/>;意思是<;br>;(即<;br>;>;)和<;title/hello/意思是<;title>;hello<;/title>;)。我使用的术语是;“理论上”;因为这是一条SGML规则,浏览器在支持这条规则方面做得很差。由于支持太少(我只在emacs-w3m中看到过),规范建议作者避免使用语法 -
在XHTML,
<;foo/>表示<;foo></foo>。这是一条适用于所有XML文档的XML规则。也就是说,XHTML通常用作text/html,浏览器使用与用作application/XHTML+xml的文档不同的解析器处理它(至少在历史上是这样)。W3C以text/html的形式为XHTML提供了可遵循的兼容性准则。(本质上:仅当元素定义为空时才使用自动关闭标记语法(并且在HTML规范中禁止使用结束标记)) -
在HTML5中,
<;foo/>取决于元素的类型:- 对于被指定为void元素的HTML元素(基本上是“HTML5之前存在的元素,禁止包含任何内容”),结束标记是被简单禁止的。允许在开始标记末尾使用斜杠,但没有任何意义。它只是对那些沉迷于XML的人(和语法高明者)的语法糖
- 在其他HTML元素上,斜杠是一个错误,但错误恢复将导致浏览器忽略它,并将标记视为常规的开始标记。这通常会导致缺少结束标记,从而导致后续元素成为子元素而不是同级元素
- 外来元素(从SVG等XML应用程序导入)将其视为自动关闭语法