Extensible
HyperText Markup Language(XHTML)は、SGMLで定義されていたHTMLをXMLの文法に基づいて再定義した
マークアップ言語です。W3Cによって勧告されていましたが、
2007年にW3C HTML WGが設立され、WHATWGとの共同作業を経て、
2009年にW3Cは開発を正式に中止しました。
HTML5では、XMLの書式に縛られずにMathMLやSVGなどを埋め込むことが可能です。
このため、XHTMLは開発が中止されており、この記事には古い情報が多く含まれています。しかしながら、HTMLを解釈する
ユーザーエージェント(Webブラウザなど)は引き続きXHTMLをサポートしています。
なお、「eXtensible
HyperText Markup Language の略である」と誤解されることがありますが、正しくは「XはExの発音を表している」とされています。
HTMLとの相違点
XHTMLはXMLアプリケーションであるため、XMLの文法に従う必要があります。これにより、HTMLとは異なる点がいくつか存在します。以下に主な相違点と具体的な例を説明します。
XML宣言
XML文書であるため、文書の先頭にXML宣言を記述することが推奨されます。
文字コードは
UTF-8または
UTF-16を使用するか、HTTPなどのプロトコルで指定されている場合は省略可能です。ただし、常に宣言を付与することが推奨されています。
xml
UTF-8"?>
要素名・属性名
XMLは大文字と小文字を区別するため、XHTMLでは要素名と属性名はすべて小文字で記述する必要があります。
html
正しい例 >
色は匂へど 散りぬるを
色は匂へど 散りぬるを
誤った例 >
色は匂へど 散りぬるを
色は匂へど 散りぬるを
色は匂へど 散りぬるを
終了タグ
すべての要素には、開始タグと終了タグが必要です。終了タグの省略はできません。
html
正しい例 >
色は匂へど 散りぬるを
我が世誰ぞ 常ならん
誤った例 >
色は匂へど 散りぬるを
我が世誰ぞ 常ならん
空要素の終了タグ
空要素にも終了タグを付与するか、開始タグの末尾を `/>` とする必要があります。`` のように終了タグを付与する場合は、タグの間に空白を含めてはいけません。また、後方互換性のために `
` と表記することが推奨されています。
html
推奨される書き方 >
色は匂へど 散りぬるを
正しい例 >
色は匂へど 散りぬるを
色は匂へど 散りぬるを
誤った例 >
色は匂へど 散りぬるを
色は匂へど 散りぬるを
属性値
属性値はすべてダブルクォーテーション(")またはシングルクォーテーション(')で囲む必要があります。
html
正しい例 >
誤った例 >
属性名
属性名を省略することはできません。HTMLでは属性値を省略する例がありますが、XMLでは認められません。
html
正しい例 >
誤った例 >
推奨される
メディアタイプは `text/html` から `application/xhtml+xml` に変更されました。`text/html` はXHTML1.1以降では非推奨となっています。
html
`application/xhtml+xml` を使用する場合は、`meta` 要素の `http-equiv` 属性ではなく、HTTPヘッダで
メディアタイプを指定することが推奨されています。
歴史
XHTML 1.0
HTML 4.01をXMLで再定義したもので、HTML 4.01と同様にStrict、Transitional、Framesetの3種類のDTDが存在します。
2000年1月26日に勧告され、
2002年8月1日に改訂版であるSecond Editionが勧告されました。
XHTML Basic
XHTMLのサブセットであり、PDAや携帯電話などの小規模な端末向けに開発されました。
2000年12月19日にXHTML Basic 1.0が勧告され、その後、
OMAが策定する
XHTML Mobile Profileとの不整合を解消するため、
2008年7月29日にXHTML Basic 1.1が勧告されました。
XHTML Basic 1.1では、`target`属性、`script`要素、`style`要素、`inputmode`属性などが追加されました。
XHTML Modularization
XHTMLの要素を目的や役割ごとに分割し、フレームワーク化したものです。XHTML 1.1やXHTML 2.0はこれをベースに構築されています。バージョン1.0は
2001年4月10日に、バージョン1.1は
2008年10月に勧告されました。
XHTML 1.1
機能がモジュール化されたXHTMLです。XHTML 1.0との主な違いは、機能のモジュール化、スキーマの統一(Strictスキーマのみ)、ルビモジュールの導入です。
2001年5月31日に仕様が勧告され、2010年11月23日にXHTML 1.1 Second Editionが勧告されました。主な変更点はエラッタの修正と
XML Schemaへの対応です。
XHTML 1.2
策定中のXHTML Role Module、Access Module、WAI-ARIAの語彙を組み込んだ新しいプロファイルとして策定される予定です。
XHTML 2.0
XHTML Familyの次期バージョンとして策定されていましたが、W3Cは
2009年7月3日に策定を打ち切り、
HTML5にリソースを集中することにしました。XHTML 2.0の市場が
HTML5に比べて非常に小さいことが理由として挙げられています。
HTML5をXML構文で記述したものは、しばしばX
HTML5と呼ばれますが、WHATWGの標準仕様ではこの用語は使用されていません。
HTML5のXML構文は
HTML5仕様の中で定義されており、
HTML5の一部です。しかし、
HTML5の仕様ではXML構文とHTML構文の違いが多く、一般的にはHTML構文によるもののみを「
HTML5」と呼びます。
HTML構文とXML構文の違いは以下の通りです。
HTML構文では要素名は固定ですが、XML構文では名前空間が `http://www.w3.org/1999/xhtml` に属していれば接頭辞付きの要素名が許可されます。
HTML構文ではSVGやMathMLの限定的な拡張のみですが、XML構文では名前空間を用いて自由に拡張できます。
従来のHTML/XHTMLで許可されていたDTDを用いた
文字参照は
HTML5では使用できません。
html
HTML構文 >
This is a paragraph.
XML構文 >
This is a paragraph.
関連項目
HTML
SGML
XML
CSS
EBML
XHTML MP
外部リンク
XHTML 1.0 The Extensible HyperText Markup Language
XHTML Basic 1.1
XHTML Basic
XHTML 1.1 - Module-based XHTML
XHTML 2.0 (Working Draft)
*
W3C