拡張可能なハイパーテキストマークアップ言語(XHTML )は、広く使われているハイパーテキストマークアップ言語(HTML)のバージョンを模倣または拡張したXMLマークアップ言語ファミリーの一部であり、 Webページを作成する際に使用される言語です。
HTML5以前のHTMLは、柔軟なマークアップ言語フレームワークである標準汎用マークアップ言語(SGML)の応用として定義されていましたが、XHTMLはSGMLのより制限的なサブセットであるXMLの応用です。XHTMLドキュメントは整形式であるため、HTMLのように寛容なHTML固有のパーサーを必要とするのではなく、標準のXMLパーサーを使用して解析できます。[ 1 ]
XHTML 1.0 は2000 年 1 月 26 日にWorld Wide Web Consortium (W3C) の勧告になりました。XHTML 1.1 は 2001 年 5 月 31 日に W3C の勧告になりました。XHTML は現在「HTML の XML 構文」[ 2 ] [ 3 ]と呼ばれ、HTML のリビング スタンダードの XML 適応として開発されています。[ 4 ] [ 5 ]
XHTML 1.0 は「3 つの HTML 4 文書タイプを XML 1.0 のアプリケーションとして再定式化したもの」でした。[ 6 ] World Wide Web Consortium (W3C) は同時に HTML 4.01 勧告も維持していました。 [ 7 ] 2002 年 8 月に公開および改訂された XHTML 1.0 勧告文書の中で、W3C は「XHTML ファミリーはインターネットの進化における次のステップです。コンテンツ開発者は、今日 XHTML に移行することで、コンテンツの後方互換性と将来互換性に自信を持ちながら、付随するすべての利点とともに XML の世界に参入できます。」と述べています。[ 6 ]
しかし、2005年に、Web Hypertext Application Technology Working Group (WHATWG) が W3C とは独立して結成され、XHTML に基づかない通常の HTML の発展に取り組むようになりました。WHATWG は最終的に、XHTML 2.0 などの W3C 標準と並行して、 XML と非 XMLシリアル化の両方をサポートする標準であるHTML5 の開発に着手しました。2007 年、W3C の HTML ワーキング グループは、HTML5 を正式に認め、次世代 HTML 標準として取り組むことを決定しました。[ 8 ] 2009 年、W3C は XHTML 2.0 ワーキング グループの憲章を失効させ、XML と非 XML シリアル化の両方を含む HTML5 が唯一の次世代 HTML 標準となることを認めました。[ 9 ] 2 つのシリアル化のうち、W3C は、ほとんどの著者が XHTML 構文ではなく HTML 構文を使用することを推奨しています。[ 10 ]
XHTML 1.0 と XHTML 1.1 の W3C 勧告は、 HTML 4.0 [ 13 ] 、HTML 4.01 [ 14 ]、および HTML5 [ 15 ]とともに、 2018 年 3 月 27 日に廃止されました。 [ 11 ] [ 12 ]
XHTML は HTML の拡張性を高め、他のデータ形式との相互運用性を向上させるために開発されました。 [ 16 ]さらに、ブラウザは HTML のエラーに寛容で、マークアップの技術的なエラーがあってもほとんどの Web サイトが表示されていましたが、XHTML はより厳密なエラー処理を導入しました。[ 17 ] HTML 4 は表向きは標準一般化マークアップ言語(SGML)の適用でしたが、SGML の仕様は複雑で、Web ブラウザも HTML 4 勧告も完全にはそれに準拠していませんでした。[ 18 ] 1998 年に承認された XML 標準は、HTML 4 により近い、よりシンプルなデータ形式を提供しました。[ 19 ] XML 形式に移行することで、HTML が一般的な XML ツールと互換性を持つようになることが期待されました。[ 20 ]サーバーとプロキシは、必要に応じて、携帯電話などの制約のあるデバイス向けにコンテンツを変換できるようになります。[ 21 ]名前空間 を使用することで、XHTML 文書は、スケーラブル ベクター グラフィックスやMathMLなどの他の XML ベースの言語からの断片を含めることで拡張性を提供できます。[ 22 ]最後に、この新たな取り組みは、HTML を再利用可能なコンポーネントに分割し ( XHTML モジュール化)、言語の整理されていない部分を整理する機会を提供します。[ 23 ]
XHTMLとHTMLには様々な違いがあります。Document Object Model(DOM)は、アプリケーション内部でページを表現するツリー構造であり、XHTMLとHTMLはそれをマークアップで表現する2つの異なる方法です。どちらもDOMよりも表現力は劣ります。例えば、DOMでは「-- >」をコメントに含めることができますが、XHTMLやHTMLではコメントに含めることはできません。また、一般的にXHTMLのXML構文はHTMLよりも表現力に優れています(例えば、HTMLでは任意の名前空間は許可されていません)。XHTMLはXML構文を使用しますが、HTMLは擬似SGML構文を使用します(公式にはHTML 4以前のSGMLですが、実際には使用されず、HTML5ではSGMLから標準化されました)。DOM構文で表現できる内容が若干異なるため、2つのモデル間で実際の動作に若干の違いが生じます。ただし、構文の違いは、マークアップ内に別の変換フレームワークを実装することで克服できます。
まず、構文にいくつかの違いがあります。[ 24 ]
</div>) を使用するか、自己終了構文 (例: <br/>) を使用することで閉じられる必要がありますが、HTML 構文では、要素が常に空 (例: ) であるか、その終了が暗黙的に決定できる (「省略可能性」、例: ) ため、一部の要素は閉じられていないことが許可されています。<input><p><optionselected><optionselected=selected><optionselected="selected"><tbody>構文上の違いに加えて、動作上の違いもいくつかあり、そのほとんどはシリアライゼーションの根本的な違いに起因しています。例えば、次のようになります。
xlink。document.write()innerHTML<body><html>HTML 4.01 と XHTML 1.0 の類似性から、多くの Web サイトやコンテンツ管理システムが最初の W3C XHTML 1.0 勧告を採用しました。移行を支援するために、W3C は XHTML 1.0 ドキュメントを HTML と互換性のある方法で公開し、XHTML 用に設計されていないブラウザに提供する方法に関するガイダンスを提供しました。[ 29 ] [ 30 ]
このような「HTML互換」コンテンツは、text/htmlXHTMLの公式インターネットメディアタイプ()ではなく、 HTMLメディアタイプ()を使用して送信されますapplication/xhtml+xml。したがって、XHTMLの採用を通常のHTMLの採用と比較する際には、メディアタイプの使用状況を比較しているのか、実際のドキュメントの内容を比較しているのかを区別することが重要です。[ 31 ] [ 32 ]
ほとんどのウェブ ブラウザは、可能なすべての XHTML メディア タイプに対して成熟したサポートを備えています[ 33 ] 。 [ 34 ]注目すべき例外は、MicrosoftのInternet Explorerバージョン 8 以前です。コンテンツをレンダリングする代わりに、ダイアログボックスが表示され、コンテンツをディスクに保存するようにユーザーに促します。Internet Explorer 7 (2006 年リリース) と Internet Explorer 8 (2009 年 3 月リリース) の両方でこの動作が見られます。[ 35 ] Microsoft 開発者のChris Wilson は2005 年に、IE7 の優先事項はブラウザのセキュリティとCSSサポートの改善であり、適切な XHTML サポートを IE の互換性重視の HTML パーサーに組み込むのは難しいと説明しました。[ 36 ]しかし、 Microsoft はIE9で真の XHTML のサポートを追加しました。[ 37 ]application/xhtml+xml
サポートが広く普及していない限り、ほとんどのウェブ開発者は HTML と互換性のない XHTML の使用を避けているため、[ 38 ]名前空間、高速な解析、フットプリントの小さいブラウザなどの XML の利点はユーザーにはメリットがありません。[ 39 ] [ 40 ] [ 41 ]
2000年代初頭、一部のWeb開発者は、Web作成者がなぜXHTMLでのコンテンツ作成に移行したのか疑問を呈し始めた。[ 42 ] [ 43 ] [ 44 ]一方、XHTMLの使用に起因する問題は、主に2つの主要な原因、すなわち一部のWeb作成者による無効なXHTMLドキュメントの作成と、Internet Explorer 6に組み込まれたXHTMLのサポートの欠如に起因すると反論する者もいた。[ 45 ] [ 46 ]さらに、検索、インデックス作成、解析、およびWeb自体の将来性に関して、XMLベースのWebドキュメント(つまりXHTML)の利点について説明した。
2006 年 10 月、HTML の発明者であり W3C 議長であるTim Berners-Lee は、新しい HTML 仕様を開発するための W3C の大規模な取り組みを紹介し、自身のブログに次のように投稿しました。「世界中に XML に一気に移行させようとする試みはうまくいきませんでした。HTML を生成する大規模なコミュニティは移行しませんでした... いくつかの大規模なコミュニティは移行し、適切に構成されたシステムの恩恵を受けています... まったく新しい HTML グループを設立する計画です。」[ 47 ]現在の HTML5 作業草案には、「相互運用性を向上させるために、ユーザー エージェントの明確な適合基準を定義することに特別な注意が払われています... 同時に、過去数年間に提起された問題に対処するために HTML 仕様を更新しています」とあります。2002年に XHTML の不適切な使用を批判した HTML5 仕様の編集者であるIan Hickson [ 42 ]は、この仕様を開発しているグループのメンバーであり、現在の作業草案の共同編集者の 1 人としてリストされています。[ 48 ]
Simon PietersはモバイルブラウザのXML準拠について調査し[ 49 ]、「モバイルデバイスにXHTMLが必要だという主張は単なる神話である」と結論付けた。

application/xhtml+xml。1998 年 12 月には、W3C ワーキング ドラフト「Reformulating HTML in XML」が公開されました。これは、HTML 4 をベースに、XML のより厳格な構文規則に準拠した新しいマークアップ言語である Voyager というコードネームを紹介するものでした。1999 年 2 月までに、仕様の名前はXHTML 1.0: The Extensible HyperText Markup Languageに変更され、2000 年 1 月に W3C 勧告として正式に採用されました。[ 50 ] XHTML 1.0 には、HTML 4.01 の 3 つの異なるバージョンに対応する 3 つの正式な文書型定義 (DTD)があります。
center<p>、<img> font、<img>など) が含まれています。strikeXHTML 1.0の第2版は、2002年8月にW3C勧告となった。[ 51 ]
モジュール化は、XHTML をサブセット化および拡張できるコンポーネントの抽象的なコレクションを提供します。この機能は、モバイル デバイスや Web 対応テレビなどの新しいプラットフォームに XHTML の適用範囲を拡大するのに役立つことを目的としています。XHTMLのモジュール化の最初のドラフトは 1999 年 4 月に公開され、2001 年 4 月に勧告ステータスに達しました。[ 52 ]
最初のモジュール型XHTMLの派生版は、XHTML 1.1とXHTML Basic 1.0でした。
2008年10月、XHTMLのモジュール化は、 XMLスキーマの実装を追加したXHTMLモジュール化1.1に置き換えられました。2010年7月には第2版に置き換えられました。[ 53 ]
XHTML 1.1 は、 XHTML 仕様のモジュール化に関する最初の作業から発展しました。W3C は 1999 年 9 月に最初のドラフトをリリースし、2001 年 5 月に勧告ステータスに達しました。[ 54 ] XHTML 1.1 内のモジュールを組み合わせることで、東アジア言語をより適切にサポートするために、ルビー注釈要素 ( ruby、rbc、rtc、rb、rt)を追加して、XHTML 1.0 Strict を効果的に再現しています。その他の変更点としては、および要素から属性を削除したこと、および (言語の最初のバージョンでは)属性を削除して に変更したことが挙げられます。rpnameamaplangxml:lang
XHTML 1.1 は XHTML 1.0 および HTML 4 とほぼ互換性がありますが、2002 年 8 月にワーキンググループは、HTML メディアタイプとともに送信すべきではないという正式な注記を発行しました。[ 55 ]代替application/xhtml+xmlメディアタイプに対するブラウザのサポートが限られていたため、XHTML 1.1 は広く普及することができませんでした。2009 年 1 月に、この制限を緩和し、XHTML 1.1 を として提供できるようにした文書の第 2 版 ( XHTML メディアタイプ - 第 2 版) が発行されましたtext/html。[ 56 ]
XHTML 1.1の第2版は2010年11月23日に発行され、様々な誤りを修正し、元の仕様には含まれていなかったXMLスキーマの実装を追加しました。[ 57 ] (これは2009年5月7日に「提案された編集勧告」 [ 58 ]として短期間公開されましたが、未解決の問題のため5月19日に撤回されました。)
情報機器には、すべての XHTML 抽象モジュールを実装するためのシステム リソースが不足している可能性があるため、W3C は XHTML Basic と呼ばれる機能限定版の XHTML 仕様を定義しました。これは、最も一般的なコンテンツ作成に十分な最小限の機能サブセットを提供します。この仕様は、2000 年 12 月にW3C 勧告となりました。 [ 59 ]
XHTML のすべてのバージョンの中で、XHTML Basic 1.0 は最も機能が少ない。XHTML 1.1 は、モジュール型 XHTML の最初の 2 つの実装の 1 つである。コア モジュール (構造、テキスト、ハイパーテキスト、リスト) に加えて、次の抽象モジュールを実装している: ベース、基本フォーム、基本テーブル、画像、リンク、メタ情報、オブジェクト、スタイル シート、ターゲット。[ 60 ] [ 61 ]
XHTML Basic 1.1 では、Basic Forms モジュールが Forms モジュールに置き換えられ、Intrinsic Events、Presentation、および Scripting モジュールが追加されました。また、他のモジュールからの追加のタグと属性もサポートしています。このバージョンは、2008 年 7 月 29 日に W3C 勧告となりました。[ 62 ]
XHTML Basic の現在のバージョンは 1.1 Second Edition (2010 年 11 月 23 日) で、このバージョンでは言語が W3C のXML Schema言語で再実装されています。このバージョンではlang属性もサポートされています。[ 63 ]
2006年9月にW3C勧告となったXHTML-Printは、情報機器から低価格プリンターで印刷される文書向けに設計されたXHTML Basicの特殊バージョンである。[ 64 ]
XHTMLモバイルプロファイル(略称:XHTML MPまたはXHTML-MP)は、W3CのXHTML Basic仕様のサードパーティ製バリアントです。XHTML Basicと同様に、XHTMLはシステムリソースが限られた情報機器向けに開発されました。
2001年10月、Wireless Application Protocol Forumという有限会社が、 Wireless Application Protocolの2番目のメジャーバージョンであるWAP 2.0向けにXHTML Basicの適応を開始しました。WAP Forumは、W3CのXHTMLのモジュール化に基づいてDTDを作成し、ターゲットモジュールを除いて、W3CがXHTML Basic 1.0で使用したのと同じモジュールを組み込みました。この基盤を基に、WAP Forumは基本フォームモジュールをフォームモジュールの部分的な実装に置き換え、レガシーモジュールとプレゼンテーションモジュールの部分的なサポートを追加し、スタイル属性モジュールの完全なサポートを追加しました。
2002年、WAPフォーラムはオープンモバイルアライアンス(OMA)に吸収合併され、OMAはOMAブラウジング仕様の構成要素としてXHTMLモバイルプロファイルの開発を継続した。
2004年に最終決定されたこのバージョンでは、OMAはスクリプトモジュールの部分的なサポートと、固有イベントの部分的なサポートを追加しました。XHTML MP 1.1は、OMAブラウジング仕様のv2.1(2002年11月1日)の一部です。[ 65 ]
2007年2月27日に最終決定されたこのバージョンは、フォームモジュールとOMAテキスト入力モードを完全にサポートすることで、XHTML MP 1.1の機能を拡張しています。XHTML MP 1.2は、OMAブラウジング仕様v2.3(2007年3月13日)の一部です。[ 65 ]
XHTML MP 1.3(2008年9月23日最終版)は、ターゲットモジュールを含むXHTML Basic 1.1文書型定義を使用しています。このバージョンの仕様におけるイベントは、DOMレベル3仕様に更新されています(つまり、プラットフォームや言語に依存しません)。
XHTML 2ワーキンググループは、XHTML 1.1に基づく新しい言語の作成を検討しました。[ 66 ] XHTML 1.2が作成された場合、アクセシブルなウェブアプリケーションをより良くサポートするためのWAI-ARIAと属性、およびRDFaによるセマンティックウェブのroleサポートの改善が含まれることになります。XHTML Basic 1.1の属性と、(フレームターゲットを指定するための)属性も含まれる可能性があります。XHTML2ワーキンググループは、XHTML1.2の開発を実行するために設立されていませんでした。W3CはXHTML2ワーキンググループを再設立する意図はないと発表し、[ 9 ] 2010年12月にワーキンググループを閉鎖したため、XHTML 1.2の提案は実現しないことになります。inputmodetarget
2002 年 8 月~2006 年 7 月の間に、W3C は、後方互換性の要件を破棄することで過去との決別を可能にする XHTML の新バージョンである XHTML 2.0 のワーキング ドラフトを 8 つ公開しました。XHTML 1.x および HTML 4 との互換性がないことは、Web 開発者コミュニティで初期に論争を引き起こしました。[ 67 ]言語の一部 (roleおよび RDFa 属性など) は、その後仕様から分離され、個別のモジュールとして作業されました。これは、XHTML 1.x から XHTML 2.0 への移行をよりスムーズにするためでした。XHTML 2.0 の 9 番目のドラフトは 2009 年に公開される予定でしたが、2009 年 7 月 2 日、W3C は、XHTML2 ワーキング グループの憲章をその年の終わりまでに失効させることを決定し、事実上、ドラフトを標準にするためのそれ以上の開発を停止しました。[ 9 ] 代わりに、XHTML 2.0 および関連文書は2010 年にW3C ノートとして公開されました。 [ 68 ] [ 69 ]
XHTML 2.0で導入された新機能には、以下のものが含まれます。
nl要素タイプが追加される予定でした。これは、現在ネストされた順不同リストやネストされた定義リストなど、さまざまな方法で作成されているネストされたメニューを作成する際に役立つはずでした。<li href="articles.html">Articles</li>のように。しかし、XLink 自体は設計上の違いから XHTML と互換性がない。srcどの要素も属性を使用して代替メディアを参照できるようにする必要があります。 たとえば、はと<p src="lbridge.jpg" type="image/jpeg">London Bridge</p>同じです<object src="lbridge.jpg" type="image/jpeg"><p>London Bridge</p></object>。alt要素の属性が削除されました。要素と同様に、img代替テキストは要素の内容で指定されることになります。例: 。imgobject HMS Audacious"},"parts":[{"template":{"target":{"wt":"Code","href":"./Template:Code"},"params":{"code":{"wt":"
HMS Audacious"},"1":{"wt":"xml"}},"i":0}}]}"><img src="hms_audacious.jpg">HMS <span class="italic">Audacious</span></img>h追加されました。これらの見出しのレベルは、ネストの深さによって決定されます。これにより、見出しの使用が6階層に制限されることなく、無限に使用できるようになります。i、bおよびttは、XHTML 2.0 では削除されることになっていました。唯一、表示要素として残るのは、上付き文字と下付き文字を表す と のみでしたsup。subこれらは表示以外の用途でも重要な意味を持ち、特定の言語で必要とされるためです。その他のタグはすべて意味論的なものとなるよう意図されており(例: 強い強調をstrong表す)、ユーザー エージェントが CSS を介して要素の表示を制御できるようにしました (例: ほとんどのビジュアル ブラウザでは太字で表示されますが、テキスト読み上げリーダーではトーンの変化を伴って表示され、ユーザー エンド スタイル シートのルールに従ってより大きな + 斜体フォントで表示されるなど)。propertyと属性を持つRDFトリプルを追加します。aboutHTML5は、W3Cとは独立して、ブラウザメーカーやその他の関係者からなるWHATWG (Web Hypertext Application Technology Working Group)と呼ばれる緩やかなグループによって発展しました。このグループの主な目的は、動的なウェブアプリケーションのためのプラットフォームを作成することでした。彼らはXHTML 2.0がドキュメント中心すぎると考え、インターネットフォーラムサイトやオンラインショップの作成には適していないと考えていました。[ 70 ]
HTML5には、通常のtext/htmlシリアル化とXMLシリアル化の両方があり、XMLシリアル化はXHTML5としても知られています。[ 71 ]sectionこの言語は、既存のHTMLフォーム要素とイベントモデルを維持するという決定により、XHTML 2.0よりもHTML 4およびXHTML 1.xとの互換性が高くなっています。ただし、<script>タグや<script>タグなど、XHTML 1.xにはない多くの新しい要素が追加されていますaside。
XHTML5言語は、HTML5と同様に、 DTDなしでDOCTYPE宣言を使用します。さらに、仕様では、解析時に名前付き文字のエンティティ定義のみを含むものに置き換えるようブラウザに要求することで、以前のXHTML DTDを非推奨にしています。[ 71 ]
XHTML+RDFaは、整形式XML文書の形式で属性と処理ルールの集合を通じてRDFをサポートするために、XHTMLマークアップ言語を拡張したものです。このホスト言語は、豊富なセマンティックマークアップを埋め込むことでセマンティックWebコンテンツを開発するために使用される技術の一つです。
XHTML仕様に準拠したXHTMLドキュメントは有効であると言われます。有効性はドキュメントコードの一貫性を保証し、処理を容易にしますが、ブラウザによる一貫したレンダリングを必ずしも保証するものではありません。ドキュメントの有効性は、W3Cマークアップ検証サービス(XHTML5の場合はValidator.nu Living Validatorを使用)でチェックできます。実際には、多くのWeb開発プログラムがW3C標準に基づいたコード検証機能を提供しています。
XHTML ドキュメントのルート要素は でなければならずhtml、 XHTML名前空間xmlnsに関連付けるための属性を含める必要があります。XHTML の名前空間 URI は です。以下の例のタグには、ドキュメントを自然言語で識別するための属性も含まれています。http://www.w3.org/1999/xhtmlxml:lang
<html xmlns= "http://www.w3.org/1999/xhtml" xml:lang= "ar" >XHTML ドキュメントを検証するには、文書型宣言( DOCTYPE ) を使用できます。DOCTYPE は、ドキュメントが準拠する文書型定義(DTD)をブラウザに宣言します。文書型宣言はルート要素の前に配置する必要があります。
DOCTYPE のシステム識別子部分(これらの例では、で始まる URL)は、バリデーターがhttp://パブリック識別子(もう一方の引用符で囲まれた文字列)に基づいて DTD のコピーを見つけられない場合に限り、使用する DTD のコピーを指し示すだけで十分です。これらの例にある特定の URL である必要はありません。実際、可能な限り DTD ファイルのローカルコピーを使用することが推奨されます。ただし、パブリック識別子は、例にあるものと文字単位で完全に一致している必要があります。
MIMEタイプを使用してドキュメントが配信される場合、XHTMLドキュメントの冒頭のXML宣言で文字エンコーディングを指定できます。( XMLドキュメントにエンコーディング指定がない場合、上位プロトコルによってエンコーディングが既に決定されていない限り、XMLパーサーはエンコーディングがUTF-8またはUTF-16であると想定します。)application/xhtml+xml
例えば:
<?xml version="1.0" encoding="UTF-8" ?>この宣言は、デフォルトのエンコーディングを宣言しているため、省略しても構いません。ただし、ドキュメントが代わりに XML 1.1 または別の文字エンコーディングを使用する場合は、宣言が必要です。バージョン 7 より前のInternet Explorer は、として提供されるドキュメントで XML 宣言を検出すると、互換モードtext/htmlに入ります。
XHTML 1.x ドキュメントは、適切なガイドラインに従えば、HTML 4 ユーザーエージェントとの下位互換性をほぼ維持します。XHTML 1.1 も基本的に互換性がありますが、ルビ注釈role用の要素は HTML 4 仕様に含まれていないため、HTML 4 ブラウザでは一般的に無視されます。属性、RDFa、WAI-ARIAなどの XHTML 1.x モジュールも、同様の方法で下位互換性を維持します。
XHTML 2.0は互換性がかなり低いものの、スクリプトを使用することである程度は改善できます。(これは、Internet Explorerで新しいHTML要素を登録するための簡単な1行のコードから、XFormsの実装であるFormFacesdocument.createElement()のような完全なJavaScriptフレームワークまで様々です。)
以下はXHTML 1.0 Strictの例で、どちらも同じ視覚出力になります。前者はXHTMLメディアタイプノートのHTML互換性ガイドラインに従っていますが、後者は後方互換性を損ないますが、よりクリーンなマークアップを提供します。[ 56 ]
例1。
\n