HTML5是否禁止tbody的细胞?

作为Razor视图的一部分,我有以下标记:

<table> <caption>Presidents</caption> <thead> <tr> <th scope="col">Name</th> <th scope="col">Born</th> <th scope="col">Died</th> </tr> </thead> <tbody> <tr> <th scope="row">Washington</th> <td>1732</td> <td>1799</td> </tr> <!-- etc --> </tbody> </table> 

将“validation的目标模式”设置为HTML5,Visual Studio将如此抱怨:

警告1validation(HTML5):元素“th”不能嵌套在元素“tbody tfoot”中。

这是真的吗? 如果是这样,有人可以链接到规范?

我的理解是,使用<th>行标题不仅是合法的,而且是鼓励的。 这似乎是相当普遍的,我可以链接几十个教程(看起来明智)解释,它有助于可访问性。

这是一个VS错误? 一个真正的改变与HTML5(一个好的?坏的?)? 发生了什么?

我的理解是,使用<th>行标题不仅是合法的,而且是鼓励的

据我所知,这在HTML 4(以及可能的前身)中总是合法的,并且在HTML5中没有改变。

W3C的HTML5validation器虽然仍然是实验性的,但没有报告警告或错误。 然后,我相信Visual Studio所使用的HTML5validation也是实验性的,因为HTML5本身还没有最终确定。

关于标记表格数据的HTML5规范 ,特别是第4.9.13节 ,展示了在<tbody><tfoot>使用<th> 限定行数据的范围:

 <table> <thead> <tr> <th> <th>2008 <th>2007 <th>2006 <tbody> <tr> <th>Net sales <td>$ 32,479 <td>$ 24,006 <td>$ 19,315 <tr> <th>Cost of sales <td> 21,334 <td> 15,852 <td> 13,717 <tbody> <tr> <th>Gross margin <td>$ 11,145 <td>$ 8,154 <td>$ 5,598 <tfoot> <tr> <th>Gross margin percentage <td>34.3% <td>34.0% <td>29.0% </table> 

因此,在<tbody><tfoot> <tr>元素内部有<th>元素是完全合法的。 无论如何,因为表格标题不是只能在表格标题中find。

HTML5规范只要求它在tr ,而spec实际上包含了一个嵌套在tbody的例子。

通常, THEADTH将具有"col"scope值,而TBODYTH具有"row"scope值。