Quello che hai fatto prima (salvo gli erorri), dovrebbe essere corretto.
Lascia perdere IE per il momento: quello si sistema dopo quando la cosa funziona nei browser standard.
Comunque ecco quello che farei
codice:
HTML:
<table>
<caption>titolo</caption>
<thead>
<tr>
<th class="nobordi">codice</th>
<th>diametro [mm]
diameter [mm]</th>
<th>1 rocch. = mtl
1 roll = mtl</th>
</tr>
</thead>
<tbody>
<tr>
<th>TOU200</th>
<td>2,00</td>
<td>850</td>
</tr>
</tr>
<th>TOU200</th>
<td>2,00</td>
<td>850</td>
</tr>
</tr>
<th>TOU200</th>
<td>2,00</td>
<td>850</td>
</tr>
</tbody>
</table>
CSS:
tbody td {
border: 1px 0 0 1px solid black;
}
tbody th {
border: 1px 0 0 0 solid black;
}
thead th {
border: 0 0 0 1px solid black;
}
thead th .nobordi {
border: 0;
}
Dimenticavo: userei XHTML 1.0 Strict, che e` la DTD in cui i CSS esprimono tutta la loro migliore potenza (le altre DTD lasciano qualcosa al browser)