XHTMLとは何ですか?

XHTMLについて解説

XHTMLは、基本的にHTML仕様に対してXMLの機能拡張性を加えたものです。

定義されているタグ・属性などはHTML仕様とが基本となっているため、大きな変更点はありません。「XHTMLはHTMLで許されていた記述の曖昧性が制限され、ルールが厳格になったものである」と認識しておけばよいでしょう。ルールの変更点についてはHTMLとXHTMLの違いについてを参照してください。

XMLって何なの?

XMLは拡張可能マークアップ言語(Extensible Markup Language)を短縮したものになります。HTMLと同様、マークアップにタグ(<>での囲み)を利用するところは同じです。

■ HTMLの目的は、仕様で決められた要素・属性を利用して文章を構造化することです。

■ XMLの目的は、要素や属性の定義を自分で行えるようにすることです。XMLによって個別の目的に応じたマークアップ言語を創ることができます。つまり、自分達自身で新しいタグ(要素・属性)を創りだすことが可能となるのです。

XHTMLの範囲

ただし、HTML仕様とXML仕様では競合する部分があります。例えば、HTML仕様においては要素によって開始タグ・終了タグの省略が認められています。それに反し、XMLではタグの省略は認められていません。XHTMLではXMLルールに従い、タグの省略を認めません。

なぜXMLを加えたの?

HTMLは急速な普及により、ハイパーテキストのサポート、マルチメディア機能の追加など、バージョンアップが繰り返され、色々と盛りだくさんの仕様になりました。インターネット技術の成長は著しく、次々と新たなソフトウェア・ハードウェアが登場。HTML仕様の一部は古いものとなり、新しい要素が求められるようになりました。

携帯電話でブラウザを開発すること例にして考えてみましょう。携帯端末とパソコンでは構成部品、処理性能が異なります。画面が小さい、マウスクリックできないなど独自の制限があります。そのため、HTML仕様の中で利用したい要素・属性は限定されます。ブラウザ開発者は使われないHTML仕様をサポートすることは無駄だと思うでしょう。新しく独自に加えたい要素・機能もあるかもしれません。このようなケースにおいて、XHTML1.0仕様を基本要素として新しい仕様を策定することが可能になるのです。

実際にXHTML1.0仕様とXHTML1.1仕様を元に、小型端末向けの仕様 XHTML Basicが策定・利用されています。

XHTMLの継承

XHTMLを利用すると何が良いの?

拡張的な仕様策定が容易

前述したように、急速な周辺技術進歩に対応するための仕様策定が容易になります。

ルールの厳格化による保守性の向上

HTMLでは「終了タグを省略しても良い」「開始タグ・終了タグ共に省略してもよい」「属性値が数値の場合は””での囲みを省略してもよい」など、マークアップに関して曖昧さを許容していました。具体的には、head要素、body要素は開始タグ・終了タグ共に省略することができますし、p要素、li要素などは終了タグを省略することができます。

イメージしてみてください。ある部分ではp要素が閉じられていない、ある部分ではp要素が閉じられているHTMLドキュメントがあったとします。HTML仕様的には間違いではありません。しかし、ドキュメントの保守を行う人間から見ると、正しい記述なのか間違った記述なのか、判断を直ぐに行うことは難しいでしょう。HTMLドキュメントを解釈するブラウザのプログラム制御も複雑になります。

XHTMLのルールの厳格化(「タグは必ず閉じる」など)により、メンテナンス性が向上します。

学習が容易

基本的には従来のHTML4.01と同じ要素で構成されているため、新しく覚えることが少なく済みます。

HTMLとXHTMLの違いについて

XHTMLではXMLドキュメントでもあるため、HTML仕様が全てそのまま適用されるわけではありません。XHTMLとして文章を作成する場合は以下のルールに従う必要があります。

これからホームページ制作を学ぶ人は、以下のルールを身につけましょう。

HTMLとの互換性

要素・属性は小文字で記述すること

HTMLでは大文字・小文字の混在が可能でしたが、XMLでは大文字・小文字を区別します。XHTMLでは小文字で書く必要があります。

HTML
<!-- 悪い例 -->
  <A href="http://taghtml.com">

<!-- 良い例 -->
  <a href="http://taghtml.com">

開始タグ・終了タグを省略しない

HTMLでは要素によりタグの省略が認められていましたが、XMLでは認められません。必ず終了タグまで記述する必要があります。

HTML
<!-- 悪い例 -->
  <p>段落に含まれるテキスト

<!-- 良い例 -->
  <p>段落に含まれるテキスト</p>

空要素は開始タグが/>で終わること

XHTMLでは内容を持たない空要素(br要素、hr要素など)は、開始タグが/>で終わることが求められます。/>の前にスペースを1個入れること。

HTML
<!-- 悪い例 -->
  <br>

<!-- 良い例 -->
  <br />

属性値は必ず引用符””で囲む

HTMLでは属性値が数値の場合など引用符の省略が認められていましたが、XHTMLでは引用符で囲む必要があります。

HTML
<!-- 悪い例 -->
  <table row=4>

<!-- 良い例 -->
  <table row="4">

属性最小化はサポートされない。必ず属性と値のペアで書く。

HTML
<!-- 悪い例 -->
  <input type="checkbox" name="cb" checked />

<!-- 良い例 -->
  <input type="checkbox" name="cb" checked="checked" />

ファイルの位置(フラグメント)を示すにはname属性ではなくid属性の利用を推奨

ファイル内の指定位置にリンクを貼る場合にname属性が利用されていましたが、XHTMLではid属性を使います。

HTML
<!-- 過去の例 -->
  <a href="#dest">name属性でジャンプします</a>

  <h2 name="dest">リンク先であるh2要素</h2>

<!-- 良い例 -->
  <a href="#dest">id属性でジャンプします</a>

  <h2 id="dest">リンク先であるh2要素</h2>

正確な内容やその他の詳細についてはXHTML1.0仕様書で確認してください。
http://www.w3.org/TR/xhtml1/