我正在寻找href标记的<a>属性中处理HTML实体的规范。到目前为止,运气不佳(我可能在寻找一些过于具体的东西)。
详细说明:
我试图修复的bugcheerio项目的一部分。
有些实体的结尾不需要分号。其中之一是&curren。无论如何,当源链接到/test/example.jsp?item=123&currentSize=S&currentQty=1时,这会导致问题。
浏览器(至少是Chrome浏览器)handle this不错。但我还是不明白为什么。

最佳答案

关于HTML 4.01及以下版本,请参见@Quentin's answer。
对于任何类型的XHTML,包括XHTML序列化中的HTML5,&currentSize=都包含格式良好的错误,因此文档的任何显示都将中止(当文档作为真正的XHTML处理时)。
在HTML序列化的HTML5中,对于parsing character references有一些棘手的特殊规则。它们意味着在文本内容中,&currentSize=将被解析为好像它是写在&curr;entSize=中的,即¤entSize=一样。但在属性值中,如<a href="...">,则在某些条件下,引用无法识别,因为它没有以分号结尾。
具体来说,这里描述的条件是:“如果字符引用被用作属性的一部分,并且匹配的最后一个字符不是“;”(U+003B)字符,并且下一个字符是“=”(U+003D)字符,或者范围是ASCII数字、大写ASCII字母或小写ASCII字母,则对于历史原因是,在U+0026与号字符(&)之后匹配的所有字符都必须取消使用,并且不返回任何内容。“因此,即使&foobar=是已定义的名称,属性值中也不会识别foobar
原因是作者广泛地使用属性值编写url,而没有转义&,浏览器已经适应了这一点。

关于html - 在[href]中处理HTML实体的规范,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16164835/

10-12 03:55