2011-12-02 33 views
1

我收集了一些我正在尝试解析的文档。与HTML一样,它们结构相当完善,并且具有复杂的语法/语法。也像HTML一样,许多文档并不完全遵循所需的语法。浏览器如何处理格式错误的HTML?

我的问题是,在解析严格遵循正确语法的文档时,浏览器和HTML/XML解析库使用什么通用策略?他们似乎很好地处理错位或丢失的标签。而且我确定还有其他一些情况,比如拼错的标签,不正确的属性等,必须处理而不是简单忽略。

+0

HTML5规范明确定义了如何处理格式不正确的标记。 (以前的标准没有这个,所以浏览器一直以它们自己的方式处理它,通常尽量宽容)。至于拼写错误的标签/属性,它们总是被忽略afaik(除了激活一些怪癖模式)。 – Qtax

+0

@Qtax你能提供这部分规格的链接吗?我发现这个http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html,但它没有提到“汤”一词,似乎更窄,所以我不确定。 FAQ有:http://wiki.whatwg.org/wiki/FAQ#Why_does_this_new_HTML_spec_legitimise_tag_soup.3F – n611x007

回答

3

格式不正确的或坏的HTML被称为作为“标签汤”。浏览器必须处理这和基于浏览器(IE,火狐,Chrome等)不同的方式做到这一点,但这里是标记汤的好文章和一些通用的策略:

http://en.wikipedia.org/wiki/Tag_soup

2

保持简短:

  • 在XML

    在代码中的任何错误终止解析过程 - 即所谓的 “严厉的错误处理

  • 在XHTML就像在任何基于XML的文档 - 误差等于终止

  • 在HTML - 浏览器尝试呈现为多,因为它可以