Czy pusty wiersz ma służyć celowi, czy jest to wyłącznie do układu? Jeśli to drugie, warto rozważyć upuszczenie pustego wiersza i zapewnienie separacji za pomocą CSS. Na przykład.
<tr class="separate-below">
<td>Data before separater</td><td>More Data</td>...
</tr>
<tr>
<td>Data after separater</td><td>More Data</td>...
</tr>
z następującym w arkuszu stylów:
TR.separate-below TD,TR.separate-below TH {
border-bottom: 1em solid white; /* use the background colour of a cell here */
}
Alternatywnie, można użyć wielu <TBODY> elementów do bloków grupy wierszy ze sobą (dodanie reguł = „grupy” do elementu tabeli powoduje <tbody> elementy, aby uzyskać poziomą ramkę u góry iu dołu, oraz element colgroup >, aby uzyskać obramowanie po ich lewej i prawej stronie):
<table rules="groups">
<thead>
<tr><th>Header</th><th>Header</th>...</tr>
</thead>
<tbody>
<tr><td>Data</td><td>Data</td>...</tr>
<tr><td>Data</td><td>Data</td>...</tr>
...
</tbody>
<tbody>
<tr><td>Data</td><td>Data</td>...</tr>
...
</tbody>
...
</table>
Użycie pustego wiersza dla odstępów powoduje przerwanie struktury danych. Prawdopodobnie lepiej byłoby owijać różne bloki danych w elementach tad lub tbody i stylizować je w celu uzyskania odstępów. – Quentin