HTML5未终止属性引用错误恢复

时间:2014-03-19 02:57:45

标签: html html5 error-handling

我已经阅读了很多关于HTML5规范及其如何为实现指定错误恢复行为的内容。

我试图找到它指定用户代理如何处理HTML属性中未终止引号的位置,例如:

<div class = "foo>blah blah</div>

在规范的 error recovery portion 中,它讨论了处理不匹配的标记和未关闭的格式标记,但似乎没有解决未终止的引号。是否存在HTML5应该处理未终止引号的标准化方法?

2 个答案:

答案 0 :(得分:1)

HTML5 serialized as XHTML中,即使用XML语法,没有进行错误恢复,因为这样的错误。适用于XML的严厉法律。从技术上讲,浏览器只需要报告错误,但在XML传统中,这意味着报告第一个格式错误并且没有显示文档(尽管现在某些浏览器尝试显示开始截至该错误的文件)。 - 在这种情况下,第一个良构性错误是属性值中的“&lt;”字符。

在HTML5序列化为HTML中,适用第8节“HTML语法”中的规则。在这种情况下,相关项是8.2.4.38 Attribute value (double-quoted) state。它表示在属性值中扫描和收集字符,直到遇到引号或数据结尾。这是现代浏览器中实际发生的事情。在给定的情况下,如果发生文档后面没有引号,则所有其余部分将被视为class属性值。如果有引号,则将其视为终止属性值。这反过来会导致不同步的情况,因为引号可能意味着某事物的开放引用。

因此,它不是特别有用的错误恢复,但它是HTML5 CR所说的。将行尾作为终止属性值来处理通常会更有用,但这是不可能的,因为HTML5允许有意地在属性值中使用换行符。

答案 1 :(得分:0)

我认为浏览器不应该采用标准化的方式来处理未终止的引用,但我发现大多数主流浏览器都没有真正尝试处理未终止的引号,它们通常会导致问题。您没有终止引号的元素。所以绝对避免未终止的引号,不要依赖错误恢复来终止它们,因为它不会正常终止并导致问题。