w3schools thead tfoot style colspan bootstrap html validation xhtml w3c-validation

html - style - ¿Por qué las secciones TABLE internas tienen que ir THEAD TFOOT TBODY para validar?



thead html (1)

A menudo utilizo los elementos THEAD, TBODY y TFOOT para dividir mis tablas de datos en secciones que se pueden abordar por separado con CSS. También entiendo que siempre hay una etiqueta TBODY implícita.

Lo que me desconcierta es el orden en que estos tienen que entrar para validar. ESTA mesa validará:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Table Validation Test</title> </head> <body> <table> <thead> <tr> <th scope="col">Enemies List</th> </tr> </thead> <tfoot> <tr> <td>&copy; Bomb Voyage</td> </tr> </tfoot> <tbody> <tr> <td>Mr. Incredible</td> <td>Elastigirl</td> <td>Gazer Beam</td> </tr> </tbody> </table> </body> </html>

Pero este no lo hará:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Table Validation Test</title> </head> <body> <table> <thead> <tr> <th scope="col">Enemies List</th> </tr> </thead> <tbody> <tr> <td>Mr. Incredible</td> <td>Elastigirl</td> <td>Gazer Beam</td> </tr> </tbody> <tfoot> <tr> <td>&copy; Bomb Voyage</td> </tr> </tfoot> </table> </body> </html>

El válido va HEAD, FOOT, BODY; Lo que no tiene ningún sentido.

Poner el pie en la parte inferior de la mesa mantendría la analogía entre la mesa y un cuerpo humano. Pero por alguna razón, esta orden se considera inválida.

Alguien sabe por qué?


La especificación proporciona una razón:

TFOOT debe aparecer antes de TBODY dentro de una definición de TABLA para que los agentes de usuario puedan procesar el pie antes de recibir todas las filas de datos (potencialmente numerosas).

http://www.w3.org/TR/html401/struct/tables.html#h-11.2.3

No sé si algún navegador realmente sigue este comportamiento, y se cambió en HTML5 para manejar tanto el orden HTML 4 como el orden más lógico:

En este orden: opcionalmente un elemento de título, seguido de cero o más elementos colgroup, seguido opcionalmente de un elemento thead, seguido opcionalmente de un elemento tfoot, seguido de cero o más elementos tbody o uno o más tr elementos, seguido opcionalmente Elemento tfoot (pero solo puede haber un elemento hijo tfoot en total).

http://www.w3.org/TR/html5/tabular-data.html