XHTML における空要素の扱い
HTML 4.01 では内容モデルが EMPTY の要素 (hr 要素や meta 要素など) は以下のように表現していました。
<hr>
XML で言うところの閉じタグを省略した形であり、省略 「できる」 のではなく省略 「しなければならない」 のでした。では、XHTML ではどのようにすれば良いのでしょうか。 XHTML における空要素、および内容モデルが EMPTY である要素についてメモ代わりに書いておきます。
HTML との互換性を保ったまま XHTML を記述するための指針が XHTML 1.0 の仕様の付録 C にあります。
たとえば <br /> や <hr />, <img src="karen.jpg" alt="Karen" /> といったように、空要素の末尾の / と > との前にスペースを1個組み込むこと。また、たとえば <br /> といったように、空要素には最小化タグ文法を使うこと。これは、XMLで許容されている代わりの文法 <br></br> は、多くの既存のユーザエージェントでは与えられる結果が一定しないからである。
内容モデルが EMPTY ではない要素に空インスタンスが与えられる場合 (たとえば空のタイトルや段落) には、最小化形式は使わないこと (たとえば <p /> は使わず <p></p> を使う)。つまり、内容モデルが EMPTY の要素は、EmptyElemTag の形式で記述し、それ以外の場合は例え子ノードが何も無くても STag と ETag を書く、ということです。
XHTML 1.0 Transitional について、内容モデルが EMPTY の要素を以下に挙げておきます。
- base
- meta
- link
- hr
- br
- basefont
- param
- img
- area
- input
- isindex
- col
以上です。