为什么HTML注释中的双连字符无效?

aaa*_*dan 9 html html5 web-standards

标准模式HTML 禁止在注释中使用双连字符.

<!-- This is a perfectly valid comment - I think. -->
<!-- Invalid comment -- definitely. -->
Run Code Online (Sandbox Code Playgroud)

还有三个额外的限制,例如这些无效的例子:

<!--> invalid -->
<!---> invalid -->
<!-- invalid --->
Run Code Online (Sandbox Code Playgroud)

为什么还要指定所有这些小边缘情况呢?特别是,为什么禁止双连字符?

Bob*_*obz 9

[定义:注释可能出现在其他标记之外的文档中; 此外,它们可能出现在语法允许的位置的文档类型声明中.它们不是文档字符数据的一部分; XML处理器可以但不必使应用程序能够检索注释文本.为了兼容性,字符串" - "(双连字符)不得出现在注释中.]不能在注释中识别参数实体引用.

语法不允许以--->结尾的注释

它似乎是XML的一个特性,仅用于确保XML与SGML保持兼容 http://www.w3.org/TR/REC-xml/#sec-comments

  • 这是一个很好的答案.HTML5需要尝试成为XML注释语法,SGML注释语法和浏览器支持的注释语法的通用子集,所有这3个都是不同的.在3中,SGML可能最不重要,因为浏览器从未正确支持SGML注释语法(虽然验证器确实如此).但最终的产品确实应该在SGML解析器中工作. (2认同)