thead tfoot tbody style html asp.net-mvc html5 web-standards

tfoot - ¿HTML5 prohibe las células de tbody?



tr id html (3)

Tengo el siguiente marcado como parte de una vista de 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>

Con el "esquema de destino para la validación" configurado en HTML5, Visual Studio se queja de este modo:

Advertencia 1 Validación (HTML5): el elemento ''th'' no debe estar anidado dentro del elemento ''tbody tfoot''.

¿Es esto realmente cierto? Si es así, ¿podría alguien vincular a la especificación?

Mi entendimiento fue que el uso de <th> para los encabezados de fila no solo fue legal sino que también fue alentador. Ciertamente parece bastante común, podría vincular docenas de tutoriales que explican (aparentemente con sensatez) que ayuda con la accesibilidad.

¿Es este un error de VS? ¿Un cambio real que viene con HTML5 (uno bueno? ¿Uno malo?)? ¿Cuál es la historia?


Mi entendimiento fue que el uso de <th> para los encabezados de fila no solo fue legal sino que también fue alentador

Que yo sepa, esto siempre fue legal en HTML 4 (y posiblemente sus predecesores), y no ha cambiado en HTML5.

El validador HTML5 de W3C , aunque aún es experimental, no informa de advertencias ni errores. Entonces, de nuevo, estoy seguro de que la validación de HTML5 que está utilizando Visual Studio también es experimental, ya que HTML5 aún no se ha finalizado.

La especificación de HTML5 para marcar datos tabulares, específicamente la sección 4.9.13 , muestra el uso de <th> dentro de <tbody> y <tfoot> para los datos de la fila de alcance:

<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>

Por lo tanto, es perfectamente legítimo tener elementos <th> dentro de elementos <tr> dentro de un <tbody> o <tfoot> . Como debería ser de todos modos, ya que los encabezados de las tablas no solo se encuentran en los encabezados de las tablas.


En general, una TH en un THEAD tendrá un valor de scope de "col" mientras que una TH en un TBODY tendrá un valor de scope de "row" .