【问题标题】:Why are double hyphens invalid in HTML comments? [duplicate]为什么 HTML 注释中的双连字符无效? [复制]
【发布时间】:2014-12-23 08:54:37
【问题描述】:

cmets 中的标准模式 HTML forbids double hyphens

<!-- This is a perfectly valid comment - I think. -->
<!-- Invalid comment -- definitely. -->

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

<!--> invalid -->
<!---> invalid -->
<!-- invalid --->

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

【问题讨论】:

  • 因为这是一条有效的评论&lt;!-- valid html comment -- &gt;
  • 我认为这来自 XML。如果我没记错的话,理性是允许它被解析为与当前字符相比正好 1 个字符。编辑:我不认为我记得正确。不知道我从哪里得到的:-)
  • 有趣的是 &lt;html&gt;&lt;body&gt;&lt;p&gt;This is a test...&lt;!-- Invalid comment -- definitely. --&gt;of the emergency broadcast system.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; 呈现为 这是对紧急广播系统的测试。 在最新版本的 Chrome 和 Firefox 中很好。
  • @J0e3gan 所有类型的无效标记都会正确呈现...不会使其有效。
  • 无效通常在实践中被发现。具有讽刺意味的是,它实际上在实践中有效。无论如何,simple web search 会给出答案……在 SO 上。

标签: html web-standards


【解决方案1】:

[定义:注释可能出现在文档中其他位置之外的任何位置 标记;此外,它们可能出现在文档类型中 在语法允许的地方声明。它们不属于 文件的字符数据; XML 处理器可以,但不是必须,使它 应用程序可以检索 cmets 的文本。为了 兼容性,字符串“--”(双连字符)不能出现在 cmets.] 参数实体引用不得在 厘米。

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

这似乎是 XML 的一个特性,只是为了确保 XML 与 SGML 保持兼容 http://www.w3.org/TR/REC-xml/#sec-comments

【讨论】:

  • 这是一个很好的答案。 HTML5 需要尝试成为 XML 注释语法、SGML 注释语法和浏览器支持的注释语法的公共子集,这三者都是不同的。在这 3 个中,SGML 可能是最不重要的,因为浏览器从未正确支持 SGML 注释语法(尽管验证器支持)。但生成的产品确实应该在 SGML 解析器中工作。
猜你喜欢
  • 2019-11-04
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多