我有一个.html文件工作得很好但由于某种原因Sublime 3决定它有无效代码,请检查下面的图像:
知道为什么会这样,以及如何修复它而不必修改代码?
HTML5规范说明(我的重点):
注释必须先从四个字符序列
U+003C LESS-THAN SIGN
,U+0021 EXCLAMATION MARK
,U+002D HYPHEN-MINUS
,U+002D HYPHEN-MINUS
(<!--
).按照这个顺序,注释可能有文本,附加的限制是文本不能以单个>
(U+003E
)字符开头,也不能以U+002D HYPHEN-MINUS
字符(-
)后跟>
(U+003E
)字符开头,也不包含两个连续的
U+002D HYPHEN-MINUS
字符(--
),也不以一个
U+002D HYPHEN-MINUS
字符(-
)结尾.最后,评论必须由三个字符序列结束U+002D HYPHEN-MINUS
,U+002D HYPHEN-MINUS
,U+003E GREATER-THAN SIGN
(-->
).
这就是为什么它在抱怨.至于如何在不改变代码的情况下修复它,这更棘手.
你认为它的工作原理与C开发人员的想法完全不同,他们想知道为什么他们需要担心未定义的行为,因为他们编写的代码工作得很好.它在一个特定实现中工作正常的事实与可移植代码无关.
我的建议是实际更改代码.毕竟,这是无效的,任何浏览器(当前或未来)都完全有权拒绝它.
经过一些历史性的挖掘后,似乎不允许这样做,因为HTML所基于的SGML对评论的规则略有不同.
在感知<!--
令牌时,解析器切换到评论模式,其中>
在评论中实际允许字符.如果--
遇到序列,它将更改为另一种模式,其中>
将结束注释.
事实上,它似乎是这两种模式之间的切换,所以类似的事情<!-- >>>>> -- xyzzy -- >>>>> -->
是可能的,但是放在>
哪里xyzzy
会结束评论.
例如,XML没有采用这种行为,HTML现在已经修改它以遵循"根本不使用--
注释"规则,原因是几乎没有人知道注释表现为SGML方式,导致一些痛 :-)
归档时间: |
|
查看次数: |
95 次 |
最近记录: |