Section 7 : 互換性のための記述(2)

 本 Section では,Section 6 に続いて,HTML 4 との互換性に留意した記述に触れていく。やや細かな事項も含まれるので,読み飛ばしても構わないだろう。

文字コードセット

 文字コードセットは,XML においては XML 宣言で指定する。また,HTML では,meta 要素に書くという方法もあった。

 互換性を保つためには,その両方で文字コードセットの指定を行っておくとよい。たとえば,ファイルの文字コードセットが EUC であるならば,ファイルの先頭で,

<?xml version="1.0" encoding="EUC-JP"?>

ヘッダ部分で,

<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" />

というように書く。2 つの文字コードセットの指定値が異なる場合には,XML 宣言で指定されたほうが優先される。

ドキュメントオブジェクトモデル

 スクリプトによるダイナミックなドキュメントの操作に用いるドキュメントオブジェクトモデル(DOM)を使用する際の注意を掲げておく。

 DOM は,その XHTML ドキュメントにどんなメディアタイプとしてアクセスされるかによって異なる振る舞いをする。text/html であれば HTML の DOM に,text/xmlapplication/xml または application/xhtml+xml であれば XML の DOM に従う。

CSS の利用に際して

 XHTML に対して CSS を使う場合にもいくつか注意すべき点がある。

 まずは,セレクタであるが,セレクタとして要素の種類をとる場合,XHTML では要素名を小文字で書くので,ここでも小文字で書かなくてはならない。すなわち,

BODY { background-color: #FFF; }
P { line-height: 1.5; }

ではなく,

body { background-color: #FFF; }
p { line-height: 1.5; }

とする必要がある。

 また,これは細かな点になるが,“開始タグ・終了タグがともに省略されている要素”,とくに tbody 要素では注意が必要である。たとえば,

<table>
<caption>大江戸線によって乗り換え可能になった駅</caption>
<tr><td>春日</td><td>三田線・大江戸線</td><td>後楽園</td><td>丸ノ内線・南北線</td><td></td><td></td></tr>
<tr><td>上野御徒町</td><td>大江戸線</td><td>上野広小路</td><td>銀座線</td><td>仲御徒町</td><td>日比谷線</td></tr>
<tr><td>新宿西口</td><td>大江戸線</td><td>新宿</td><td>丸ノ内線</td><td></td><td></td></tr>
</table>

のような表は HTML 4 においては tbody 要素のタグが補われ,

<table>
<caption>大江戸線によって乗り換え可能になった駅</caption>
<tbody>
<tr><td>春日</td><td>三田線・大江戸線</td><td>後楽園</td><td>丸ノ内線・南北線</td><td></td><td></td></tr>
<tr><td>上野御徒町</td><td>大江戸線</td><td>上野広小路</td><td>銀座線</td><td>仲御徒町</td><td>日比谷線</td></tr>
<tr><td>新宿西口</td><td>大江戸線</td><td>新宿</td><td>丸ノ内線</td><td></td><td></td></tr>
</tbody>
</table>

と解釈される。したがって,HTML 4 では,この表の中のセル td には,table tbody td および table td のいずれの下位要素セレクタ(コンテキスチュアルセレクタ)も適合する。逆に,table > tr > td という子要素セレクタでは合致しない。

 XHTML 1.0 では,この tbody のタグは補われず,表中の tr 要素は table の直下に存在している。したがって,table tbody td のセレクタは上の表の td 要素には合致しない。逆に,table > tr > td という子要素セレクタは合致する。

文字実体参照

 HTML では,“特別な文字”である「<」「>」および「&」を,それぞれ“&lt;”“&gt;”および“&amp;”で参照して出力させることができた。また,主に属性値中で使うために,「"」を“&quot;”と参照できた。

 XHTML を含めた XML では,「'」を参照する“&apos;”が加えられている。しかし,従来の HTML ではこれは定義されていないので,使うことはできない。属性値中などで「'」を参照する必要がある場合は,“&#39;”または“&#x27;”を使う。