HTML4.01注释语法歧义及相关技术问题咨询
HTML4.01注释语法的空格歧义问题
问题背景
在HTML4.01中,注释是用<!--和-->包裹,还是用<!-- 和 -->包裹?
根据HTML 4.01规范的§ 3.2.4章节,注释语法示例如下:
<!-- this is a comment --> <!-- and so is this one, which occupies more than one line -->
规范中明确:标记声明起始分隔符(<!)与注释起始分隔符(--)之间不允许有空白字符,但注释结束分隔符(--)与标记声明结束分隔符(>)之间允许有空白字符。同时提醒,注释中应避免使用两个或多个相邻连字符,注释内的信息无特殊含义(比如字符引用不会被解析),且注释属于标记范畴。
但该定义存在模糊性:无法明确<!--之后和-->之前的空格是属于注释标记的语法部分,还是被注释文本的内容部分。而HTML5对此规定清晰(空格不属于标记部分),但HTML4.01的该章节未做明确界定。比如以下几种写法的合规性就存在疑问:
<!--Strictly speaking, is this text without white spaces on both ends a comment of HTML4.01 according to its definition?--> <!-- And how about this text with white space only at the head?--> <!--And how about this text with white space only at the tail? -->
技术疑问
- 上述关于歧义的判断是否正确?HTML4.01规范的其他章节是否对此有明确说明?(尽管严格型DTD文件中有不带空格的注释示例,但DTD并非HTML文档)
- 若歧义确实存在:
- HTML4.01的严格型、过渡型和框架集型文档在该问题上是否存在差异?
- 各浏览器等用户代理对此的实际解析是否存在差异?
内容的提问来源于stack exchange,提问作者AlMa1r
相关产品推荐
相关产品推荐

