为什么sublime会考虑<!-------(多个破折号)语法错误

Nag*_*hab 2 sublimetext3

我有一个.html文件工作得很好但由于某种原因Sublime 3决定它有无效代码,请检查下面的图像:

在此输入图像描述

知道为什么会这样,以及如何修复它而不必修改代码?

pax*_*blo 6

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方式,导致一些痛 :-)