Hallo,
Wenn es in einer Tabelle jeweils nur zwei Spalten, d.h. in jeder Zeile jeweils nur eine TH-Zelle und eine zugeordnete TD-Zelle gäbe, ist meines Erachtens die Definitionsliste strukturell gesehen die bessere Wahl
Natürlich geben sich <th scope="row">Produktname</th><td>Beschreibung</td> und <dt>Produktname</dt><dd>Beschreibung</dd> nicht viel, aber die zwei Zellen, th und td, tauchen hier dummerweise beide im dd-Element auf und der Inhalt der gedachten th-Zelle findet sich auch nur als Alternativtext einer Grafik im dt-Element.
Eine solche Struktur jedenfalls ist redundant und die dl einfach überflüssig:
<dt><a><img alt="Titel"></a></dt>
<dd>
<h2>Titel</h2>
<p>Text</p>
</dd>
Hier wird der Titel zweimal ausgezeichnet und der Titel im betitelten Abschnitt (dd) noch einmal wiederholt und dort noch einmal als solcher ausgezeichnet... äh.
Einen Textabschnitt mit einem Titel zu versehen, geht erstmal so:
<h2>Titel</h2>
<p>Text</p>
Wenn man den Zusammenhang herausstellen will bzw. muss, dann halt ein div drum. Möglich, wenn auch streitbar, ist eine Kapselung von mehreren solcher Abschnitt mit einer ol.
Wenn dort jetzt noch eine Grafik hinein soll, würde ich sie ohne Alternativtext (höchstens mit title) im h2-Element unterbringen.
<h2><img>Titel</h2>
Dann halt mit CSS floaten lassen oder wie man's halt wünscht.
Mathias