Firefox 4のHTML5パーサと:-moz-any()
HTML5の構文解析処理について、以前「HTML5の構文解析がもたらすもの」という記事で触れたことがあります。HTML5パーサはFirefoxで実装が進められているのですが、先日そのパーサが開発版ではデフォルトで有効になりました。これに関連し、FirefoxのHTML5パーサを開発しているHenri SivonenがMozilla Hacksにパーサの概要について記事を書いています。翻訳をmodestに投稿したので、そちらもお読みいただければと思います。
Henriはまた、HTML5のValidator “Validator.nu” も開発しています(Firefoxのコードは、このValidator.nuとベースが同じです)。一昨日のことですが、HTML5に埋め込んだSVGとMathMLの検証もValidator.nuで行えるようになったそうです。
このニュースを参照するかたちで、OperaのAnne van Kesterenが、HTML5のパーサのあゆみについて自身のBlogで取り上げています。
記事によると、初期のHTML5仕様 (このときはWeb Applications 1.0と呼ばれていました) では既存のHTML仕様を拡張するもので、構文解析アルゴリズムは定義されていなかったそうです。しかし、作業を進めていくうちに基盤の定義が必要になったことから、アルゴリズムの定義が始まったとのことです。
Mozillaのようにパーサを置き換えるという大掛かりな変更は、他のブラウザーでは行われていないように思います。しかし、HTML5の構文解析アルゴリズムに準拠する作業は進められており、Internet Explorer 9でもツリー構築処理などが変更されるようです。
さて、少しパーサからは離れますが、先日Firefoxの開発版に:-moz-any()
という擬似クラスが実装されました。
このセレクタは括弧内にカンマで単純セレクタを並べ「このどれかにマッチする」という条件を表すことができるものです。上記のDavid Baronの記事では、ul
, ol
, menu
, dir
といったリストが深くネストした状態のユーザーエージェントスタイルシートを、:-moz-any()
で書き直した例が紹介されています。また、昨日にはHTML5のセクション要素と見出しのスタイルづけに、この:-moz-any()
を利用するパッチが投入されました。
CSS仕様としてはまだ存在していませんが、メーリングリストでは議論が行われたこともあり、CSS4セレクタとして同様の機能が定義されるかもしれません。
HTML5の実装は要素や属性の導入だけではなく、基盤となる処理の変更やスタイルシートの対応も含まれます。目に見えやすい機能やAPIが取り上げられがちですが、こうした足場を固める作業も、地道に進められています。