Fiche HTML : Balises de tableauxObjet de la ficheÉtat de la fiche
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Balises | Descriptions |
|---|---|
| <table> | Délimiteur de tableau. Fin de tableau avec </table> |
| <caption> | Délimiteur de titre du tableau. Fin de titre de tableau avec </caption> Le titre du tableau peut être placé au-dessus du tableau (par défaut) ou en dessous du tableau (nous verrons cela dans la section feuilles de style). |
| <tr> | Déclaration d'une ligne. Fin de ligne avec </tr> |
| Balises | Descriptions | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| <td> | Cellules du tableau. Fin de cellule avec </td>
|
||||||||||||
| <colgroup> et <col> |
Balises de groupement. Fin avec </colgroup> et <col /> Ces balises servent à grouper des colonnes afin d'y appliquer un certain style (nous verrons cela dans la section feuilles de style). |
||||||||||||
| <thead>(1) | Délimiteur de l'entête de tableau. Fin d'entête avec </thead> | ||||||||||||
| <th>(1) | Cellules entête de tableau. Fin de la cellule entête avec </th>. Les mêmes attributs que la balise td s'appliquent à la balise th.
|
||||||||||||
| <tbody>(1) | Facultatif. Permet de définir un ensemble de lignes comme le "corps" du tableau. Fin de l'ensemble avec </tbody> | ||||||||||||
| <tfoot>(1) | Facultatif. Délimiteur du pied de tableau. Fin de définition du pied de tableau avec </tfoot> | ||||||||||||
Note (1) : Ces balises (bien que non
indispensables dans la construction des tables) sont à
utiliser systématiquement dans le cadre de l'amélioration de
l'accessibilité des contenus Web.
: Ces attributs (bien que non indispensables dans la
construction des tables) sont à utiliser systématiquement
dans le cadre de l'amélioration de l'accessibilité des
contenus Web. Un système vocal sera en mesure de restituer
ces informations avant le contenu proprement dit.

Fusionner des cellules c'est obtenir une cellule qui se comporte exactement comme une cellule unique mais qui occupent plusieurs emplacements de cellules initiales du tableau.
Par exemple la figure ci-contre montre le résultat d'une part de la fusion des cellules rangées 2, colonnes 2 et 3, et d'autre part la fusion des cellules colonne 4, rangées 2 et 3. Pour réaliser des fusions nous allons utiliser les attributs colspan pour une fusion en ligne, et rowspan pour une fusion en colonnes.
| Dans une rangée sur plusieurs colonnes : colspan | Dans une colonne sur plusieurs rangées : rowspan | Dans plusieurs colonnes et plusieurs rangées |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Dans la deuxième ligne la première cellule est déclarée normalement (<td> </td>). La deuxième cellule avec l'attribut colspan="2" occupe l'emplacement de 2 cellules (la 2 et la 3). A la suite de ça la déclaration de la cellule 3 doit être supprimée. La déclaration suivante ( <td>Y</td> ) concerne donc (comme dans le tableau de base) la cellule 4, et la suivante la cellule 5. | Dans la deuxième ligne la première, seconde et troisième cellule sont déclarées normalement. La quatrième cellule occupe deux cellules verticalement : la propre cellule et celle juste en dessous. C'est ce que défini l'attribut rowspan="2". A partir du moment ou l'on réserve la cellule 4 de la ligne suivante, la déclaration initiale de la cellule 4 ligne 3 disparaît. |
Faite bien attention dans ce genre de construction car un seul oubli de suppression de cellule et vous obtenez des tableaux bizarres.
Tous ces attributs ont pour but de favoriser une reproduction vocale la plus précise possible dans la description d'un tableau pour des utilisateurs utilisant des systèmes vocaux de lecture d'écran.
Le tableau ci contre est simple du point de vue visuel, mais compliqué pour les navigateurs non visuel car chaque cellule dépend à la fois du titre de la colonne mais aussi du titre de la ligne. Par exemple la cellule Bourgogne se trouve à l'intersection de la colonne Région et de la ligne Auxerre. La méthode la plus simple et la plus propre pour s'assurer que les navigateurs non visuels peuvent comprendre le sens de ce tableau est d'ajouter l'attribut scope à toutes les cellules d'en-tête (th) de manière à donner une information vocale quand à l'appartenance d'une cellule par rapport son entête de colonne et son entête de ligne.
| Valeurs | Descriptions |
|---|---|
| scope="col" | Le contenu de la cellule d'entête sera répété pour toutes les cellules de cette colonne |
| scope="row" | Le contenu de la cellule d'entête sera répété pour toutes les cellules de cette rangée |
| scope="colgroup" | Le contenu de la cellule d'entête sera répété pour toutes les cellules de toutes les colonnes du groupe de colonnes (colgroup = groupe de colonnes). La condition préalable est que des groupes de colonnes aient été définis avec <colgroup>. |
| scope="rowgroup" | est prévu pour l'entête de rangée d'un groupe de rangées et signifie que le contenu de la cellule d'entête sera répété pour toutes les cellules de toutes les rangées du groupe de rangées (rowgroup = groupe de rangées). Les groupes de lignes sont définis par les éléments <thead>, <tfoot> et <tbody>. |
![]() |
![]() |
| <table> <caption>Démo</caption> <tr> <th scope="col">Département</th> <th scope="col">Région</th> </tr> <tr> <td>Seine et Marne</td> <td>Ile de France</td> </tr> <tr> <td>Yonne</td> <td>Bourgogne</td> </tr> </table> |
<table> <caption>Démo</caption> <tr> <td>Sociétés</td> <th scope="col">Ville</th> <th scope="col">CA</th> </tr> <tr> <th scope="row">Peugeot</th> <td>Fontainebleau</td> <td>11.000000€</td> </tr> <tr> <th scope="row">Renault</th> <td>Paris</td> <td>10.000000€</td> </tr> </table> |
| Au survol de la cellule Bourgogne un navigateur vocal indiquera Région Bourgogne car la directive <th scope="col">Région</th> s'applique à toutes les cellules de cette colonne. | Au survol de la cellule 10.000000€ un navigateur vocal indiquera Renault CA 10.000000€ car la directive <th scope="col">CA</th> s'applique à toutes les cellules de cette colonne et la directive <th scope="row">Renault</th> s'applique à toutes les cellules de cette ligne. |
![]() |
![]() Au survol de la cellule 7h un navigateur vocal indiquera le contenu de la cellule, soit 7h et énoncera les entêtes : il précisera tout d'abord Soleil car la directive <th scope="row">Soleil</th> s'applique à toutes les cellules de cette ligne puis Hiver car la directive <th colspan="2" scope="colgroup">Hiver</th> s'applique au groupe de colonnes Leve et Couché puis enfin Leve dont la directive <th scope="col">Leve</th> s'applique à toutes les cellules de cette colonne. |
Lors de la reproduction vocale il est difficile de faire la relation entre la cellule de données et la cellule d'entête correspondante, on peut définir que lors de la reproduction vocale d'une cellule de données soit établie une ou plusieurs références explicites (headers) à la ou à des cellules d'entête référencées par leur id).
Les exemples ci dessous prennent comme référence des cellules d'entêtes (th) mais pourraient tout aussi bien fonctionner avec des cellules classiques (td).
headers doit toujours être utilisé en association avec un identificateur(id) et s'utilise essentiellement quand l'attribut scope n'est pas suffisant.
| Déclaration HTML | Rendu | ||||||
|
|||||||
| Exemple avec la cellule Paul : lors d'une
reproduction vocale le système énoncera d'abord que le
contenu Paul appartient à la colonne Prénoms, soit on
entendra Prénom Paul. Exemple avec la cellule 07112233 : la reproduction vocale donnera Paul Téléphone 07112233. Paul sera énoncé grâce au headers Noms, Téléphone sera énoncé grâce au headers Col_Téléphone et 07112233 comme contenu de la cellule. |
| Déclaration HTML | Rendu | ||||||
|
|
|
||||||
| Soit le cas ci contre de cellules fusionnées ou deux
cellules d'entête Noms et Prénoms concernent une cellule
de données (dont le contenu est Durand Paul): On peut définir plusieurs attributs headers (vous pouvez entrer d'autres noms id de cellules d'entête derrière headers=. Séparez les noms id par des espaces. Un système de reproduction vocale donnera Noms Prénom Durand Paul. |
|||||||

On peut imaginer des utilisateurs désirant avoir des informations sur plus d'une cellule, dans ce cas les informations sur la cellule à l'aide des attributs headers, scope ou abbr peuvent ne pas être suffisantes dans certains contextes. Par exemple le tableau ci contre qui classifie des dépenses de
repas, hôtels et transports dans 2 villes Marseille et Lyon sur plusieurs dates.
L'attribut axis associé aux attributs headers et id apportera des possibilités d'informations et sera utile avec les futurs navigateurs équipés de détection et synthèse vocales.
Étude détaillé du tableau "Frais de déplacement"

Imaginons un utilisateur qui pourrait poser de telles questions :
Qu'elles sont mes dépenses pour tous mes repas?
Qu'elle est ma dépense pour le repas du 25 Août?
Qu'elles sont mes dépenses totale à Marseille?
Chaque question demande à ce que le navigateur tienne compte de plusieurs cellules. Par exemple dans la deuxième question le navigateur doit savoir quelles cellules concernent les Repas, et quelles cellules se réfère aux Dates et particulièrement celle du 25 Août , trouver l'intersection puis donner le résultat en synthèse vocale.
Pour exécuter ce type de demande le langage HTML 4 autorise de grouper des cellules en catégories.
Ainsi dans le cas de la table des "Frais de déplacement" le concepteur à grouper les cellules d'entête Marseille et Lyon dans la catégorie "Ville", les cellules d'entête Repas, Hôtels, Transports dans la catégorie "Depenses", et les dates dans la catégorie "Date".
C'est l'attribut axis qui permet d'affecter ces catégories qui pourront être rendues par la synthèse vocale.
Par exemple :
<th id="a6" axis="Ville">Marseille</th>

Les cellules de la seconde ligne contiendront la définition des images déjà déclarée dans l'exercice précédent.:
Voici le résultat et le code