XHTML (Extensible Hyper Text Markup Language)
2000年1月26日に W3C の勧告となった XHTML(Extensible HyperText Markup Language)
は、素朴な文書構造記述言語として発展してきた HTML
に XML の持つ柔軟性、拡張性を取り入れたものです。
HTML
は SGML の実装の一つで、書式にそれなりに自由度がありましたが、XHTML
は XMLの実装であるため、書式が厳密になっています (XML
は、SGML
の書法をシンプルで厳密なものにすることで、アプリケーションの開発や互換性をとりやすくした)。
また、HTML
は規格がどんどん拡張され、携帯端末などにとってはフルサポートするのが困難な規模となっています。一方、新しい規格である MathMLや SVGが続々と登場し、これらを組み込んだ文書型を容易に定義できることも求められています。このため、利用環境に応じて必要な要素を選択して採用できるモジュール化や、他の XML
文書との融合(拡張)なども XHTML
の重要な目的です。
XHTML1.0
の勧告に続いて、さまざまな情報機器の表現能力の違いなどに対応するための「モジュール化された」 XHTML1.1
が 2001年5月31日に勧告されました。
HTML
との互換性を保ちつつ XML
(XHTML) として認められるのかということです。HTML4.01Strict
(厳格な記述:Transition
を認めない。DTD 参照)を基本としていくつかのポイントの一部を挙げました。HTML
では大文字と小文字は区別されませんでしたが、XML
ではこれを区別するため、IMGとimgは別の要素タイプになってしまいます。XHTML
では全ての要素タイプと属性は小文字で定義されたので、タグの記述にあたっても小文字を用いなければなりません。(この講座がすべて小文字で記述していた理由はここにある!)method="post"
等のように、属性値が DTD で選択肢が定義されているものは、その通り記述する必要があります。これらもみな小文字で定義されているので、「タグは小文字で書く」と考えておくのがよいでしょう。HTML
においては、値が数字など特定の値のみの場合は引用符を省略して width=100
のような記述が認められていましたが、XHTML
では全ての属性値を引用符で囲んで width="100"
のようにしなければなりません。HTML
では 終了タグを省略することができました。たとえば、リスト項目を定義する li
要素の場合、以下のように終了タグを省略しても問題視されることがありませんでした。
<ul> <li>ある項目 </ul>
XML
ではこれが認められません。<ul> <li>ある項目</li> </ul>
/>
で閉じることが規定されています。従来 HTML
の img
要素や br
要素のように、内容モデルを持たない空要素 (HTML
では開始タグしか使わないもの) は、XML
においては <br/>
という具合に、タグを閉じるときに />
を使わなければなりません (空要素タグと呼ばれています)。HTML
ブラウザがタグを正しく認識できない可能性があるので、/ の前にスペースを置いて、<br />
のように記述します。HTML
では同一ページの特定の位置へのリンクのために name
属性を使って記述しリンクしていました。これも XHTML
では id
属性を併記しなければなりません。
(誤りの記述) <a href="#foo">アンカーをクリックすると</a> <a name="foo">ここにジャンプする</a>
XHTML
ではファイル内部の位置を示す属性は id
属性になりました。従って、ジャンプ先は <a id="foo"> となるわけですが、この id
属性をサポートしないブラウザもあるため、(正しい例) <a href="#foo">アンカーをクリックすると</a> <a name="foo" id="foo">ここにジャンプする</a>
name
属性とid
属性を同じ値で併記することが推奨されています。 (id
属性そのものは、HTML4.0
から導入されています)。なお、XHTML1.1
では name
属性は廃止され、id
属性のみでフラグメントを示します。XHTML
におけ DTD
文書型宣言は下記のように示されています。 (XHTML1.0
での場合)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <!--1行で記述する --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>初心者のためのホームページ講座</title> </head>
XHTML
講座 をご覧ください。