XHTMLの制作でもっとも難しいのは「どの要素を使ってマークアップするか」という判断である。正解がひとつの場合もあれば、ふたつ以上の場合もある。人間の判断に負う部分も大きいので、あるマークアップを適切に感じる人もいれば感じない人もいる。シチュエーションごとの一般的なマークアップ例を見ていこう。

dl要素の多様な使い方

 dl要素(定義リスト)は多様な用途に利用される。本来は「definition list」、つまり「用語」と「解説」を対応させてるリストに利用する要素であるが、XHTMLでは「ある内容」と「ある内容」を直接的に対応させるための要素がないため、dl要素をやや拡大解釈をし、さまざまな目的で利用するのが一般的だ。例をあげると次のとおりである。

  • 新着情報(日付と内容)
  • お問い合わせフォーム(名前、Eメール、内容などのラベルと入力欄)
  • カテゴリーリスト(カテゴリー名と説明)
  • 会社案内(社名、代表者名、所在地などの項目と内容)
  • 会社沿革(年月と出来事)
  • よくある質問(質問と答え)

 新着情報のマークアップを見てみよう。dl要素で全体をラップし、子要素dtで「日付」を、子要素ddで「内容」をマークアップする。dtとddのセットを必要な数だけ含める。

<dl>
<dt>2007年3月21日</dt>
<dd><a href="nextweb/2007/index.html">Web次世代フォーラム主催
Next Web 2007を5月25日に開催</a></dd>
<dt>2007年3月10日</dt>
<dd><a href="learning/css/index.html">CSS初心者ハンズオンセミナー開催
</a></dd>
<dt>2007年2月26日</dt>
<dd><a href="exhibition/index.html">情報産業プロダクト展に出展します
</a></dd>
</dl>
新着情報をdl要素でマークアップした例

※ 新着情報以外のマークアップ例は、筆者が2006年7月にアップルストア銀座で開催した「XHTML+CSS (r)evolution」のスライド資料で詳しく解説しているので、参考にしてほしい。

 比較のため、dl要素を使わずにマークアップする従来のケースを見てみよう。もっともシンプルなのは「日付」と「内容」のセットをp要素でマークアップし、改行をbr要素で行う方法である。あるいは、ul要素を利用し、li要素それぞれに「日付」と「内容」のセットを含める方法もあるだろう。

<p>2007年3月21日<br />
<a href="nextweb/2007/index.html">Web次世代フォーラム主催 Next Web
2007を5月25日に開催</a></p>
<p>2007年3月10日<br /> <a href="learning/css/index.html">CSS初心者ハンズオンセミナー詳細
決定</a></p>
<p>2007年2月26日<br /> <a href="exhibition/index.html">情報産業プロダクト展に出展します</a></p>
新着情報をp要素でマークアップした例

 table要素を使い、左のセルに「日付」を、右のセルに「内容」を置く方法もある。構造的にも、「日付」を見出しセル、「内容」をデータセルと見なし、「新着情報の一覧表」という解釈のもとでマークアップするのは不自然ではない。

 つまり、新着情報を必ずdl要素でマークアップしなければならない、ということではなく、現在与えられているボキャブラリの範囲内で、さまざまな人がベターなマークアップを模索した結果として、dl要素を利用する方法をよく見受けるようになってきた、ということである。

dl要素の構造上のメリット

 dl要素の構造上のメリットとしては、「ある内容」と「ある内容」を直接対応させ、明確に構造化できること以外にも、ふたつの点があげられる。

  • ddにはブロックレベル要素を含めることができるので、複雑な内容のマークアップにも対応できる。ddの内容量が多い場合は、適度な長さごとにp要素でマークアップしたり、リスト(ul要素やol要素)を含めることもできる
  • dtとddはお互いに複数対応させることができるので、たとえばひとつの「日付」に対して別々の「内容」を立てることができる。
<dl>
<dt>2007年3月21日</dt>
<dd><a href="services/autoweb/index.html">Web構築の新サービス
「AutoWeb」を開始</a></dd>
<dd><a href="nextweb/2007/index.html">Web次世代フォーラム主催
Next Web 2007を5月25日に開催</a></dd>
<dt>2007年3月10日</dt>
<dd>
<p><a href="learning/css/index.html">CSS初心者ハンズオンセミナー
</a>の詳細が決定しました。計3回、次のカリキュラムで実施します。</p>
<ol>
<li>CSSの役割と書式</li>
<li>CSSのセレクタとプロパティ</li>
<li>CSSの基本設計と応用設計</li>
</ol>
</dd>
<dt>2007年2月26日</dt>
<dd><a href="exhibition/index.html">情報産業プロダクト展に出展します
</a></dd>
</dl>
情報量の多い新着情報をdl要素でマークアップした例