fb5*_*b55 2 html browser specifications
我正在寻找有关处理标签href属性中HTML 实体的规范<a>。到目前为止,没有运气(我可能正在寻找太具体的东西)。
某些实体不需要末尾有分号。其中之一是¤。无论如何,当源链接到/test/example.jsp?item=123¤tSize=S¤tQty=1.
浏览器(至少是 Chrome)可以很好地处理这个问题。我仍然没有弄清楚为什么。
关于 HTML 直到并包括 HTML 4.01,请参阅@Quentin 的回答。
对于任何形式的 XHTML,包括 XHTML 序列化中的 HTML5,都¤tSize=包含格式良好的错误,因此文档的任何显示都会中止(当文档被作为真正的 XHTML 处理时)。
在 HTML5 的 HTML 序列化中,解析字符引用有一些棘手的特殊规则。它们暗示在文本内容中,¤tSize=将被解析为好像它是写的&curr;entSize=,即作为¤entSize=。但是在属性值中,如在 中<a href="...">,则在某些条件下,引用不被识别,因为它没有以分号终止。
具体来说,那里描述的条件是:“如果字符引用作为属性的一部分被使用,并且匹配的最后一个字符不是“;” (U+003B) 字符,并且下一个字符是“=”(U+003D) 字符或在 ASCII 数字、大写 ASCII 字母或小写 ASCII 字母范围内,然后,由于历史原因,所有在 U+0026 AMPERSAND 字符 (&) 之后匹配的必须未被消耗,并且不返回任何内容。” 所以 no&foobar=将在属性值中被识别,即使foobar是定义的名称
原因是作者在属性值中广泛写入 URL 而没有转义&,浏览器已经适应了这一点。