HTML5という新しい仕様がでてきましたが、既存のHTMLやXHTMLとはどのような関係があるのでしょうか。簡単にHTMLとXHTMLの歴史を振りかえりながら、両者が抱えた問題や、HTML5の目的について説明しようと思います。
HTML ― 拡張のなかで進化していった言語
HTMLはWeb上での情報交換フォーマットとして、Tim Berners-Leeにより生み出されました。「シンプルなハイパーテキストを記述する」という目的があったため、定義されている要素は見出しやリスト、リンクなど、文書構造や文章の意味を記すものに限られていました。
ところが、Webが普及するにつれ、視覚表現をコントロールする要素(いわゆる「タグ」)がブラウザーベンダーにより追加されていき、語彙が膨れ上がってしまいました。さらには、要素の意図とは異なった使われ方をされる例(blockquote
やtable
など)が増えていきました。
こうした問題に対処するため、HTMLの標準化が幾度かにわたり行われました。文書の構造や文章の意味を表す要素を中心に、広く使われている要素を取り込むといった形で、現実との乖離を抑えるように設計されました。
とはいえ、装飾的な要素や、要素の誤用は避けなければいけません。このため、font
やu
など装飾的な要素については「利用を推奨しない」としたうえで、スタイルシートの利用を促すようにしました。
HTMLの最終版は、1999年に勧告されたHTML 4.01になります。これ以降、W3CはXHTMLの策定へ注力していきました。
XHTML ― XMLとしての価値を追求するフォーマット
XHTMLは、HTMLをXMLの構文に則って定義したものです。XMLベースになることにより、XMLの拡張性や、他のXML技術を利用できるといった利点があります。また、XMLは構文の制約が強いため、実装の非互換を生み出しにくいといった性質もあります。
HTMLはSGMLという言語をベースに標準化が行われました。しかし、SGMLの実装はとても複雑であったことと、初期のHTMLがSGMLベースではなかったことなどから、ブラウザーのHTML解釈がSGMLの仕様に沿わない独自のものになってしまった経緯があります。
HTMLと同じように、XHTMLにもいくつかバージョンが存在します。ひとつが、HTML 4.01をXMLで書き直したXHTML 1.0です。HTMLからXHTMLへの移行を促すべく作られたフォーマットで、新しい要素の追加などはありません。
ですが、XMLの特徴である拡張性は、XHTML 1.0では充分に発揮できません。この拡張性をXHTMLにも取り入れるべく策定されたもうひとつのXHTMLが、XHTML 1.1です。
XHTML 1.1は、HTMLの語彙を機能ごとに分割し定義した「モジュール」から構成されています。ニーズに合わせ、他のXML語彙を取り入れることが可能であり、ベクター画像のSVGや、数式のMathMLと組み合わせたプロファイルも作成されています。
XHTMLの普及と、新たに生じた問題
XHTMLは、2002年頃からの「ブログ」ブームや、「Web標準」な制作手法の広がりとともに普及しました。現在、新しくWebサイトを作るときに最も利用されるのは、XHTML 1.0になっているようです。
しかしながら、XHTML 1.1やその先の「XMLを利用したWeb」については、未だ広まっていないというのが現状です。その理由のひとつに、XHTMLやSVG, MathMLなどのXML関連技術を、全てのブラウザーが同じ水準でサポートしていないことが挙げられます。XMLの機能は、HTMLの処理系であるtext/html
では基本的に動作しませんから、新しい機能を使おうにもできない状態が続いたのです。
もう一つは、現在公開されているXHTMLを採用した文書や、ブラウザーとの互換性です。XHTML 1.0が主流のフォーマットになっている今ですが、先述した理由もあり、ほとんどすべてがtext/html
で公開されています。しかし、text/html
はXMLが求める、厳しいエラー処理を備えていません。また、ユーザー体験を低下させることの無いよう、HTML仕様的にエラーであるものについても柔軟に処理しています。
この結果、XHTMLを採用していながら、XML文書として処理できないものがWeb上にはびこる状態になってしまいました。
「仕様に沿っていない文書が公開されているのは制作者が悪い」ということも言えるでしょう。しかし、XMLとして処理できない文書が蔓延する現状で、このまま「XMLなWeb」を推進し続けることは、現実的ではありません。
HTML5 ― 互換性に重きにおいた、新しいWebのプラットフォーム仕様
「拡張はXHTMLで」という仕組みが機能しない一方で、機能の追加に関する要望は増えていきました。こうした流れを受け、HTMLの拡張を行うのが「HTML5」になります。
HTML5の策定は、今から5年前の2004年に、ブラウザーベンダーを中心に始まりました。以前よりHTMLを段階的に拡張するアプローチの方が現実的でよいと考えていた彼らは、WHATWGという団体を設立し、HTML5の前進となる「Web Forms 2.0」や「Web Applications 1.0」という仕様を策定していました。
その後、2007年にW3Cが「HTMLの拡張もする必要がある」と方針を改め、新しいHTML WGを設立してから、WHATWGはW3Cと合同でHTML5の策定にあたっています。
機能拡張も一つのテーマではあるのですが、HTML5が重きを置いているのは「互換性」です。ブラウザーの実装同士の互換性、現在のWebとの互換性など、さまざまな面から互換性の確保・向上を目指し、仕様を定義しています。
HTML5のスケジュールですが、HTML WGの作業計画では2010年の第三四半期に勧告という予定になっています。しかしこれはまず起こりえないでしょう。第一回目の最終草案は2009年の10月と予想されていますが、それからの実装や互換性の確保、仕様の修正などを考えると、勧告までには年単位の時間がかかるからです。
ただし、だからといって何年もHTML5が使えないわけではありません。今は時期尚早ですが、数年経てば実装も広がり、CSS 2.1のように勧告でなくても広く使われる状態になるのではないかと予想しています。
HTMLか、XHTMLか
HTML5という「HTML再開」の動きが出てきたことで、「HTMLか、XHTMLか」という議論が少しずつですが見られるようになってきました。中にはXHTMLで公開していたブログやWebサイトを、HTMLとして書き直したという例も見かけます。
しかしながら、今後XHTMLが廃止されることやブラウザーのサポートがなくなるわけではありません。ですから、今後の移行を見越してHTMLに書き直すといった作業を行う必要はありません。
「XHTMLに慣れていたので書きづらい」という方がいるかもしれません。先ほども書いたように、HTML5ではXHTMLとして書くことができます。また、HTML5のHTML構文では、<br />
といったXML由来の構文も利用できるようになりました。
もちろん「XSLTを使いたい」「XMLでの書き方に慣れている」などの理由があれば、XHTMLを使うことの意義は当然存在します。しかし、XMLであることに利点を見出せなければ、HTMLを使うことも問題は全くありません。