50 votes

Est-ce que HTML5 interdit les cellules de tbody?

J'ai le balisage suivant une partie d'un Rasoir de vue:

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

Avec le "schéma cible pour la validation" jeu HTML5, Visual Studio se plaint ainsi:

Avertissement 1 Validation (HTML5): Élément de 'th' ne doivent pas être imbriquées à l'intérieur de l'élément 'tbody tfoot'.

Est-ce vraiment vrai? Si oui, quelqu'un pourrait-lien de la spec?

Ma compréhension était que l'utilisation d' <th> pour les en-têtes de ligne n'était pas seulement juridique, mais encouragé. Il semble assez courant, j'ai pu lier des dizaines de tutoriels expliquant (apparemment raisonnablement) qu'il contribue à l'accessibilité.

Est-ce un VS bug? Un réel changement à venir avec HTML5 (bonne? un mauvais?)? Quelle est l'histoire?

62voto

BoltClock Points 249668

Ma compréhension était que l'utilisation d' <th> pour les en-têtes de ligne n'était pas seulement juridique, mais a encouragé les

Autant que je sache, cela a toujours été légal en HTML 4 (et éventuellement de ses prédécesseurs), et n'a pas changé en HTML5.

Le W3C HTML5 validateur, encore expérimentale, ne rapporte pas d'avertissements ou d'erreurs. Puis de nouveau, je suis sûr que la validation HTML5 Visual Studio, c'est expérimentales, ainsi depuis HTML5 lui-même n'a pas encore été finalisé.

La spec HTML5 sur le balisage des données tabulaires, plus précisément la section 4.9.13, montre l'utilisation de l' <th> dans <tbody> et <tfoot> de la portée des données de ligne:

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

Il est donc parfaitement légitime d'avoir <th> éléments à l'intérieur d' <tr> éléments à l'intérieur de soit une <tbody> ou <tfoot>. Comme il se doit de toute façon, puisque les titres des tableaux ne sont pas seulement trouvé sur la table des en-têtes.

11voto

Chuck Points 138930

La spécification HTML5 exige seulement qu’elle se trouve dans un tr , et la spécification inclut en fait un exemple avec un th imbriqué dans un tbody .

3voto

Généralement un TH dans un THEAD aura une valeur scope de "col" tandis que TH dans un TBODY aura une valeur scope de "row" .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X