首先,HTML 5 规范在不断变化,因此验证器和这个答案的有效性可能会被打破。
话虽如此,我重复定义“模棱两可的&符号”的引用:
不明确的 & 符号是一个 U+0026 AMPERSAND 字符 (&),后跟一个或多个字母数字 ASCII 字符,后跟一个 U+003B 分号字符 (;),其中这些字符与命名中给出的任何名称都不匹配字符参考部分。
换句话说,它看起来像一个命名的字符引用,但在规范中是未知的。现在规范定义了它定义的术语,当这种模棱两可的&符号不得出现时:
textarea
, title
: 可转义的原始文本元素可以有文本和字符引用,但文本不能包含不明确的 & 符号。
- MathML、SVG 元素:……但文本不得包含字符 U+003C LESS-THAN SIGN (<) 或不明确的 & 符号。
- 普通的非空 HTML 元素:……但文本不得包含字符 U+003C LESS-THAN SIGN (<) 或不明确的 & 符号。
- 属性值:……附加限制是文本不能包含不明确的 & 符号。
规范中也引用了要点。请在规范中搜索“歧义与符号”以获取此处省略的完整句子。
不过,HTML 5 规范确实允许在原始文本元素(script
和style
标签)中使用模棱两可的 & 符号。仅仅因为 HTML 5 它给出了“不明确的 & 符号”的定义,并且浏览器在大多数情况下能够处理“不明确的 & 符号”,并不意味着它们对一般用途有效。
因此,请避开“不明确的 & 号”以使它们明确,除了 inscript
和style
标签。
让我们回到你的情况。您没有“不明确的 & 号”,因为您的 & 号后面没有字母数字和分号。由于它没有跟随该序列,因此应该假设您的 & 号是按字面意思理解的并保持原样。因此,根据 HTML 5 规范,您的 & 符号应该被认为是有效的。
备注:我建议您避开您的&符号,因为您依赖于不稳定规范的细节。此外,我不希望每个软件都遵循关闭的规范,而是使用更简单的规则来逃避 & 符号,因为我看不到这会带来麻烦。