Section 2 で XML の基本的な書法に触れたところで,ここでは 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">
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" />
のいずれかのようになる。いずれも,オプションとして文字エンコーディングを明示できる。