HTML5の構文解析がもたらすもの
WHATWGのBlogにて、開発版のGeckoにHTML5のparser (構文解析器) が導入された旨をアナウンスしています。
設定を変更することによりテストができるので、開発者の方は参加してほしいとのことです。
HTML5 Parserの特徴と、これまでのParserが抱えていた問題点
HTML5 parserにより、SVGやMathMLをtext/html
な文書で利用できるようになります。HTML5では、これまでXHTMLをXMLで配信した時にしか扱えなかったSVGやMathMLが、HTML構文でも定義されてるようになりました。ですから、数式やベクターグラフィックに加え、フィルターによる視覚効果機能などをHTMLでも利用できるようになるのです。
しかし、SVGやMathMLのHTML対応だけが、HTML5 Parserの目的ではありません。これについては、jQueryの開発者であるJohn Resigが自身のBlogで簡単に紹介しています。
One of the biggest wins of the HTML 5 recommendation is a detailed specification outlining how parsing of HTML documents should work. For too many years browsers have simply tried to guess and copy what others were doing in hopes that their parser would work well enough to not cause too many problems with HTML markup found in the wild.
HTML文書の構文解析処理には、これまで仕様がありませんでした。ブラウザーは独自に処理を定義し実装していましたが、実装同士の非互換が問題とされていました。未知の要素や構文エラーなどの処理が規定されていないことが、HTMLの拡張を行うにあたって問題視されたのです。
互換性やエラーを考慮した処理規則
HTML5では、エラー処理も含め詳細な構文解析処理が定義されています。もちろん闇雲に定義したわけではなく、現在のブラウザーでどのように処理されているかをきちんと調べた上で、ブラウザー同士、そしてWeb上にあるHTML文書と互換性を最大限確保できるような仕組みを探しているのです。
該当するセクションはとても長く細かいのですが、エラー処理の例を紹介するサブセクションにて、<b><i></b></i>
や<b><p></b></p>
といったエラーのあるコードが、どのようなに処理されするのかが書かれています。
きちんと検証をして「綺麗な」文書を書いている方にとっては「このようなものは必要ない」と思うかもしれません。しかし残念ながら、Web上に公開されているHTML文書ははそのようなものだけはありません。そして、どのような文書もそれなりに処理することが求められるブラウザーにとって、こういった構文解析とエラー処理が定義されることは、とても重要なことなのです。