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 の形式で記述し、それ以外の場合は例え子ノードが何も無くても STagETag を書く、ということです。

XHTML 1.0 Transitional について、内容モデルが EMPTY の要素を以下に挙げておきます。

  • base
  • meta
  • link
  • hr
  • br
  • basefont
  • param
  • img
  • area
  • input
  • isindex
  • col

以上です。