HTML5标签省​​略:关于语言的规范说明

dav*_*off 5 html5

标签遗漏的HTML5规范(http://www.w3.org/TR/html51/syntax.html#syntax-tag-omission)从以下两个语句开始(重点是我的意思):

  • 如果html元素中的第一件事 不是注释,则可以忽略html元素的开始标签。
  • 如果html元素后没有紧跟注释,则可以省略html元素的结束标签 。

那些语句的读法相似,但不尽相同,我想知道是否有人可以澄清它们的含义。

以下情况似乎很明确-您无法删除开始或关闭标签:

<html><!-- start --> ... </html><!-- end -->
Run Code Online (Sandbox Code Playgroud)

但是,什么时候将空白引入到混合中呢?html在以下情况下可以消除开始标签吗?

<html>
   <!-- comment after whitespace -->
   ...
Run Code Online (Sandbox Code Playgroud)

是否可以在类似情况下消除结束标签?

   ...
</html>
<!-- comment after whitespace -->
Run Code Online (Sandbox Code Playgroud)

其他一些规则特别提到了空白字符,这使我相信应该将它们考虑在内。大多数规则说“ ...紧随其后...”与列出的第一个项目符号点不同。

Alo*_*hci 2

这里重要的因素是,短语first thing inside紧随其后的是谈论节点,即DOM,而不是标签或其他标记,因此它所做的区别在于该节点是子节点(first thing inside)还是后续节点兄弟姐妹(紧随其后)。

就空间而言:

如果 html 元素内的第一个内容不是注释,则可以省略 html 元素的开始标记。

html 元素中的第一个元素不能是空格字符,因为在解析器算法中,空格字符标记将被丢弃并且不会添加到 DOM 中。

如果 html 元素后面没有紧跟注释,则可以省略 html 元素的结束标记。

空格字符,无论它们出现在标签之前还是之后</html>,最终都会出现在 html 元素内部(实际上,也在 body 元素内部),因此无论 html 元素中是否有空格,注释都会紧跟在 html 元素之后之间的标记。