HTML5 の dl 要素

HTML5 の 2010 年 3 月 4 日付 W3C 草案 で、dl 要素は以下のように定義されています:

The dl element represents an association list consisting of zero or more name-value groups (a description list). Each group must consist of one or more names (dt elements) followed by one or more values (dd elements). Within a single dl element, there should not be more than one dt element for each name.

4.5.9 The dl element — HTML 5

HTML4 では、dl 要素は definition list (定義リスト) であり、term (dt) と description (dd) から構成されるとされていました (Lists in HTML documents)。それが HTML5 では「名前と値のグループからなるリスト」となっており、その例として、「定義語とその定義」や「メタデータの題目と値」などが挙げられています。

ちょっときびしいなと思うのが、“Within a single dl element, there should not be more than one dt element for each name.” という部分。1 つの dl 要素の中で、同じ内容を持つ dt 要素が複数存在すべきではない、とのこと。より「連想配列」的な性格を強めたということでしょうか。

しかしそうなってくると、以下のような dl の使い方は推奨されないということになりますよね…

<dl class="news">
  <dt>2010-04-27</dt>
  <dd>ブログを更新しました</dd>
  <dt>2010-04-27</dt>
  <dd>プレスリリースを発表しました</dd>
  <dt>2010-04-01</dt>
  <dd>サイトをリニューアルしました</dd>
</dl>
<dl class="dialog">
  <dt>Costello</dt>
  <dd>Look, you gotta first baseman?</dd>
  <dt>Abbott</dt>
  <dd>Certainly.</dd>
  <dt>Costello</dt>
  <dd>Who's playing first?</dd>
  <dt>Abbott</dt>
  . . .
</dl>

ひとつめの例はサイトの更新履歴、ふたつめは会話文のマークアップ例ですが、どちらも同じ内容を持つ dt 要素が 2 回以上出現しているので、あまりよろしくないということになります。あくまで “should not” ですが。