Consider the task of delivering this:

It’s a construct you’ll see everywhere on the Web: a text heading in bold type, with perhaps some background styling, and subsidiary text beneath it, often styled a little differently, such as in a lighter font style. The heading and the content beneath it seem to be related; visual design can give more evidence of that relationship with flourishes like the gray border enclosing the text blocks in the example above.
So how is this very ordinary construct expressed in HTML? Sadly, often in the most verbose, inflexible ways possible.
For instance:
<p>
<strong>
Heading
</strong>
</p>
<p>
Stuff under heading
</p>
<p>
Stuff under heading
</p>
<p>
Stuff under heading
</p>
Or:
<div class="heading">
Heading
</div>
<div class="data">
Stuff under heading
</div>
<div class="data">
Stuff under heading
</div>
<div class="data">
Stuff under heading
</div>
Or even (shudder):
<table>
<tr>
<th>
Heading
</th>
</tr>
<tr>
<td>
Stuff under heading
</td>
</tr>
<tr>
<td>
Stuff under heading
</td>
</tr>
<tr>
<td>
Stuff under heading
</td>
</tr>
</table>
Why? There’s an obvious solution in dl, which has been in the HTML specification since, for crying’ out loud, version 2.0. All you need to express this particular data structure are dl, its subsidiary elements, dt and dd, and basic CSS skills.
<dl>
<dt>
Heading
</dt>
<dd>
[Stuff under heading--
express each as paragraphs, list items, or other elements]
</dd>
</dl>
Advantages of this approach include preserving an obvious heading/data relationship between those elements. If there is a situation in which your CSS does not render, user agent defaults will still indicate this relationship. For instance, in Firefox, the content enclosed in dd will have a slight indent from the left margin of dt. In screen readers, the dl will be announced as a definition list, and its numbers of items (dd) reported as well, which helps non-visual users understand where the list begins and ends.
Another advantage is flexibility in styling. There’s nothing intrinically presentational about dl, unlike strong or tr; indeed, you can make the same construct look very different with very simple CSS:
So why is this marvel of semantic markup so underused? Do we really prefer typing in
strong? Is it human nature to take the long way? Has the div Element Marketing Association been extraordinarily successful?
Please tell me why.
