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講座 をご覧ください。