XHTMLの概要

XHTML (Extensible HyperText Markup Lanuage)とは、簡単にいえばXMLの規則に従って記述されたHTMLということになります。タグの書き方も、XMLのタグの書き方に準じています。

XHTMLの拡張子には .html が使われることが多いです。

XHTML 1.0 Transitional と XHTML 1.0 Strict の2つの規格があります。

XHTML リファレンスについては HTML リファレンスをご覧ください。

XHTML の例(テンプレート)を次に示します。

<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
 <head>
  <title>XHTMLのサンプル</title>
 </head>
 <body>
  <p>XHTMLのサンプルです。</p>
 </body>
</html>

XHTMLの構造

XHTMLは次のような構造をしています。

XML処理命令
スキーマ定義
XMLインスタンス

XML処理命令 (Processing Instruction) の例を次に示す。

<?xml version="1.0" encoding="Shift_JIS" ?>

スキーマ定義の例を次に示す。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

XMLインスタンスの例を次に示す。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
 <head>
  <title>XHTMLのサンプル</title>
 </head>
 <body>
  <p>XHTMLのサンプルです。</p>
 </body>
</html>

XHTMLの名前空間(ネームスペース)

XHTMLの名前空間(ネームスペース)は、http://www.w3.org/TR/xhtml1である。名前空間のURIを指定する場合、XHTMLのルート要素であるhtml要素のxmlns属性に記述する。

<html xmlns="http://www.w3.org/TR/xhtml1">

HTMLとの相違点

XHTML には HTML といくつかの相違点があります。

要素タイプ名と属性名は小文字で記述する

HTML では、要素名(タグ名)や属性名の大文字と小文字は区別されませんでしたが、XML では大文字と小文字を区別します。 したがって、<IMG> と <img> は別の種類のタグになります。 XHTML では全ての要素タイプと属性は小文字で定義されたので、タグの記述にあたっても小文字を用いなければなりません。

また、属性名だけでなく、method="post" 等のように、属性値がDTDで選択肢が定義されているものは、その通り記述する必要があります。これらもみな小文字で定義されているので、「タグは小文字で書く」と考えておくのがよいでしょう。

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

HTMLでは値が数字など特定の値のみの場合は、引用符を省略して width=100 のような記述が認められていましたが、XHTML では全ての属性値を引用符で囲んで width="100" のようにしなければなりません。

内容モデルを持つ要素は終了タグを省略できない

HTMLでは終了タグを省略することができます。たとえば、リスト項目要素の li の場合、以下のように記述することができます。

<ol>
  <li>aaa
  <li>bbb
</ol>

しかし、XHTMLでは終了タグを省略することはできません。以下のように記述しなければなりません。

<ol>
  <li>aaa</li>
  <li>bbb</li>
</ol>

内容モデルを持たない要素の終了タグを省略するには開始タグを「 />」で閉じる

br要素タイプのように内容モデルを持たない(EMPTYである)ものは終了タグを省略することができます。ただし、<br />という形で、開始タグを「 />」で閉じることになっています。

<p>ここで<br />改行します。</p>

内容モデルを持たない要素タイプを次に示します。

XHTMLのバージョン

XHTML 1.0

XHTML 1.0 TransitionalとXHTML 1.0 Strictの2種類のスキーマ定義がある。

XHTML 1.0 Transitionalの文書タイプ宣言を次に示す。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Strictの文書タイプ宣言を次に示す。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.1

XHTML 1.0ではTransitionalとStrictの2種類のスキーマ定義が存在したが、XHTML 1.1ではスキーマ定義はひとつだけとなった。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">