HTML5 解析规则分析
程序员文章站
2023-11-29 15:24:28
HTML 5推荐标准的成功之一是提供了一个详细的规范来说明如何解析HTML文档。一直以来,浏览器提供商都试图猜测和拷贝其它浏览器的实现,寄希望于他们的解析器在处理HTML文档的时候不产... 09-08-14...
尽管html 5中的一些部分目前争议比较大,关于解析的这部分得到了浏览器厂商的一致认同。一旦浏览器开始实现它,用户就可以从所带来的兼容性提升中获益。
html 5解析规则的最初实现之一是为了支持html 5验证器而开发的。(如果你想测试这个验证器的话,http://ejohn.org应该是合法的html 5。)这个实现是用java开发的,提供了sax和dom的接口,并且是开源的。
有趣的是henri sivonen(验证器的作者)最近为gecko开发了一个全新的html 5解析引擎,会在下一个版本的firefox中使用。
这个实现实际上是通过把henri的html 5解析器的java实现自动转换为c++来完成的。这个转换是自动完成的,所有的改动都会提交到mozilla的代码库中。
一般来说,当提到这种大规模的程序式的把java代码库转换到c++的做法时,我会跳出来。不过结果非常的出人意料:页面加载的性能提升了3%。
这些是建立在该代码库会提供的一连串的bug修正和一致性检查的基础上。你可以在mozilla的bug库中查看该补丁的进度。
如果你想尝试新的解析器的话(你不太可能发现很多明显的变化,但是任何寻找bug的努力都是值得感谢的。),下载一个firefox的每日构建版本,打开about:config,把html5.enable设成true就可以了。
如果想升级到html 5,那么现在就是时候。因为html 5是html 4和xhtml 1提供的功能的超集,所以升级是非常容易的。只需要把目前的(x)html文档类型声明换成html 5文档类型就可以了。
<!doctype html>你可以从html 5 doctor网站中找到如何让新的html 5元素在所有浏览器上都工作的细节。
html 5解析规则的最初实现之一是为了支持html 5验证器而开发的。(如果你想测试这个验证器的话,http://ejohn.org应该是合法的html 5。)这个实现是用java开发的,提供了sax和dom的接口,并且是开源的。
有趣的是henri sivonen(验证器的作者)最近为gecko开发了一个全新的html 5解析引擎,会在下一个版本的firefox中使用。
这个实现实际上是通过把henri的html 5解析器的java实现自动转换为c++来完成的。这个转换是自动完成的,所有的改动都会提交到mozilla的代码库中。
一般来说,当提到这种大规模的程序式的把java代码库转换到c++的做法时,我会跳出来。不过结果非常的出人意料:页面加载的性能提升了3%。
这些是建立在该代码库会提供的一连串的bug修正和一致性检查的基础上。你可以在mozilla的bug库中查看该补丁的进度。
如果你想尝试新的解析器的话(你不太可能发现很多明显的变化,但是任何寻找bug的努力都是值得感谢的。),下载一个firefox的每日构建版本,打开about:config,把html5.enable设成true就可以了。
如果想升级到html 5,那么现在就是时候。因为html 5是html 4和xhtml 1提供的功能的超集,所以升级是非常容易的。只需要把目前的(x)html文档类型声明换成html 5文档类型就可以了。
<!doctype html>你可以从html 5 doctor网站中找到如何让新的html 5元素在所有浏览器上都工作的细节。