Extensible HyperText Markup Language

Extensible HyperText Markup Language（エクステンシブル ハイパーテキスト マークアップ ランゲージ）、略記・略称：XHTML （エックスエイチティーエムエル）は、SGMLで定義されていたHTMLをXMLの文法で定義しなおしたマークアップ言語である。その仕様はHTMLと同じくW3Cによって勧告されていた。しかし2007年にW3C HTML WGを設立するとWHATWGとの共同作業を行い、2009年、W3Cは開発を正式に中止した。HTML5はXMLの書式に従わずともMathMLやSVGなどを埋め込むことが可能である。
上述の通りXHTMLは開発が中止されており、この記事には古い内容を多分に含んでいる。しかしながら、HTMLを解釈するユーザーエージェント（Webブラウザなど）は、引き続きサポートしている。
なお、「eXtensible HyperText Markup Language の略である」とされることがあるが、これは間違いであり、XはExの発音を表している。

**HTMLとの相違点**
XHTMLはXMLアプリケーションである。よって、XMLの文法に従うために、HTMLと異なる部分が存在する。以下は、主な文法上の相違点とソースのサンプルである。
 XML宣言を書く
 XML文書であるため、文書の頭にXML宣言を書くことが奨励されている。文字コードについては、UTF-8ないしUTF-16の場合やHTTPなどのプロトコルで文字コードが指定されている場合は省略可能であるが、常に付与することが推奨される。
 要素名・属性名は小文字で書く
 XMLでは大文字・小文字が厳密に区別される。XHTML勧告の場合、要素名・属性名は全て小文字でのみ定義されていることから、要素名・属性名は共にすべて小文字で表記しなければならない（なお、属性値はこの限りではない）。
正: 色は匂へど 散りぬるを
正: 色は匂へど 散りぬるを
誤: 色は匂へど 散りぬるを
誤: 色は匂へど 散りぬるを
誤: 色は匂へど 散りぬるを
 要素の終了タグを書く
 要素は必ず開始タグと終了タグを備えていなければならない（終了タグの省略は許されない）。
正: 色は匂へど 散りぬるを我が世誰ぞ 常ならん
誤: 色は匂へど 散りぬるを我が世誰ぞ 常ならん
 空要素の終了タグも書く
 空要素についても同様に終了タグを付与するか、開始タグの末尾を「/>」としなければならない。- 終了タグを付与する  という表記の場合は、タグの間に空白類文字すら含めてはいけない。また、後方互換性のために  ではなく、 と表記することが推奨されている。- XMLを解釈できない古いUAで  という表記に対し、"br/" を要素名とみなし無視してしまう可能性があることを考慮し、XHTMLでは  のようにスラッシュの前に半角スペースを先行させる表記が一般的である。
正: 色は匂へど 散りぬるを（推奨）
正: 色は匂へど 散りぬるを
正: 色は匂へど 散りぬるを
誤: 色は匂へど 散りぬるを
誤: 色は匂へど 散りぬるを 
 属性値はダブルクォーテーションで囲む
 属性値はすべて  (ダブルクォーテーション）または　（シングルクォーテーション）で囲まなければならない。
正: 
正: 
正: 
誤: 
 属性名を省略せず書く
 属性名を省略してはならない。なお、これらを属性値の省略という例が存在するが、SGMLやXMLの観点からは正しいとはいえない。
正: 
誤: 
 推奨されるメディアタイプ
 推奨されるメディアタイプが「text/html」から「application/xhtml+xml」に変更された。また、HTMLで従来使用されていたtext/htmlは、XHTML1.1以降では非推奨となっている。
メディアタイプがapplication/xhtml+xmlの場合、meta要素のhttp-equiv属性の使用は非推奨となる。代わりにHTTPのヘッダでメディアタイプを指示することが必要となる。
HTML要素#HTML構文とXML構文との違いも参照。

**歴史**

**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との不整合を解消する目的で策定された XHTML Basic 1.1が2008年7月29日に勧告された。
Basic1.1では、Basic1.0から次のような変更が行われている。- target属性やscript/style要素、style属性の追加- XFormsよりinputmode属性の追加

**XHTML Modularization (Modularization of XHTML, M12n)**
XHTMLをその要素の目的や役割ごとに分割し、フレームワーク化したもの。XHTML 1.1やXHTML 2.0は、M12nをベースに構築されている。バージョン1.0が2001年4月10日に、バージョン1.1が2008年10月にそれぞれ勧告された。2009年7月現在、バージョン2.0が草案の段階にある。
1.0から1.1ではXML Schemaへの対応などが変更点となった。

**XHTML 1.1**
機能がモジュール化されたXHTML。XHTML 1.0からの主な違いは、次の通りである。- 機能がモジュール化され、カスタマイズ性が向上した。- HTML 4.0以来複数あったスキーマが、従来のStrictスキーマの思想を基としたスキーマ1つのみとなった。- ルビモジュールが導入された。
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年07月03日に策定の打ち切りを決定し、今後はHTML5にリソースを注ぐものとした。理由として、XHTML 2.0の市場はHTML5に比べて非常に小さいことがあげられている。

**HTML5のXML構文**
HTML5をXML構文で記述したものは、しばしばXHTML5と呼ばれるが、WHATWG の標準仕様の中ではこの語は用いないことが明言されている。
HTML5をXML構文で記述するための仕様も、HTML5仕様の中で定義されている。そのため、HTML5のXML構文はHTML5の一部である。しかし、HTML5の仕様ではXML構文とHTML構文の間には違いが多く、単に「HTML5」「HTML5ドキュメント」と言う場合には、HTML構文によるもののみを指すことが多い。そのため、実用上はHTML5のXML構文はHTML5と別のものとして扱われることがある。
以下にHTML構文とXML構文の違いをいくつか挙げる。
- HTML構文の場合は要素名は固定だが、XML構文の場合は要素の名前空間が "http://www.w3.org/1999/xhtml" に属していれば接頭辞付きが許される（XHTML1.x以前には、文書型宣言にモジュールを追加することで接頭辞を付けることを可能としていたが、基本的には許されなかった）- HTML構文では限定的なSVG, MathMLの拡張しか行えないが、XML構文では名前空間を用いて制限なく拡張ができる（以下の例ではxml:id属性を利用している）- 従来のHTML/XHTMLで許されていたDTDを用いた文字参照が不可能となった（HTML5はもはやSGMLに基づいていない）。
上記のような違いによってHTML構文と見た目が大きく異なるXML構文の文書として、以下のような例が考えられる。

XML名前空間を用いた拡張例（xml:id）



... 


**関連項目**
 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