本 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/xml
,application/xml
または application/xhtml+xml
であれば XML の DOM に従う。
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 では,“特別な文字”である「<
」「>
」および「&
」を,それぞれ“<
”“>
”および“&
”で参照して出力させることができた。また,主に属性値中で使うために,「"」を“"
”と参照できた。
XHTML を含めた XML では,「'」を参照する“'
”が加えられている。しかし,従来の HTML ではこれは定義されていないので,使うことはできない。属性値中などで「'」を参照する必要がある場合は,“'
”または“'
”を使う。