Section 3 : XHTML の書き方

 Section 2 で XML の基本的な書法に触れたところで,ここでは XHTML の書き方を見てみよう。

XHTML ファイル

 まずは,簡単な 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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<title>Subway on the ground</title>
</head>
<body>
<p> 渋谷,四ツ谷,茗荷谷。この 3 つの“谷”がつく駅の付近では,地下鉄は地上を走る。トンネルを抜けると広がる雑然とした市街,ホームから聞こえる大学の鐘の音,そして望む東京ドーム。一瞬見る地上には,切り取られた“東京”が,顔をのぞかせている。</p>
<div class="fig"><img src="shibuya.jpg" alt="銀座線渋谷駅付近。" width="240" height="180" /><img src="yotsuya.jpg" alt="丸ノ内線四ッ谷駅付近。" width="240" height="180" /><img src="myogadan.jpg" alt="丸ノ内線茗荷谷駅付近。" width="240" height="180" /></div>
</body>
</html>

 基本的に,HTML を Section 2 で述べた注意にしたがって,XML として書き直していることがご覧いただけると思う。具体的には,

といったものが挙げられる。

 それから,上の例に見られる中で触れておくべきは,XML 名前空間の指定である。これは,さしあたり XHTML を使うときの“おまじない”と思っていただいて結構であるが,XHTML を 1 つのファイルとして作成する場合には,ルート要素である html の開始タグに,

<html xmlns="http://www.w3.org/1999/xhtml">

を書くことにより指定する。

 XML では,名前空間の指定により,ある XML アプリケーションで書かれた文書の中に別の XML アプリケーションで書かれた文書を埋め込むことができる。この場合にも xmlns 属性を使うが,それを書き込むのは,その“別のアプリケーション”で書かれた言語を埋め込むときのもっとも外側の要素になる。

xml:lang 属性

 ここで,XML における特別な属性に触れておくことにする。

 XML では,“xml:”で始まる特別な属性がある。XHTML において重要なのは,xml:lang 属性である。xml:lang 属性は,HTML における lang 属性と同じく,要素が何語で書かれているかを指定するものである。役割は同じであるが,互換性のためには両方指定しておくことが望ましい。もし,同一の要素で lang 属性と xml:lang 属性に異なる値が指定されている場合,xml:lang 属性に指定されたものが優先される。

 日本語の XHTML 文書を書く場合には,次のように指定しておけばよいだろう。

<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">

XHTML のメディアタイプ

 HTML のメディアタイプ(MIME タイプ)は“text/html”であったが,XHTML では,一般に,“text/html”または“application/xhtml+xml”のいずれかを用いる(“application/xml”または“text/xml”を使う場合もある)。

 “text/html”は,特に従来の HTML との互換性を考えて記述し(Section 6 および Section 7 参照),従来のブラウザで問題なく処理できるようにしたい場合に用いる。そのほかの XHTML では,“application/xhtml+xml”を使い,一般にこちらのほうが好ましいとされる。meta 要素に記述するときは,

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=Shift_JIS" />

のいずれかのようになる。いずれも,オプションとして文字エンコーディングを明示できる。