table-headers-attr-valid

El atributo "headers" de una celda de tabla debe referenciar celdas de encabezado válidas

automaticWCAG 1.3.1 (A)confianza: highgravedad: seriousperceivable

Comprueba que cada id del atributo headers de un <td>/<th> resuelve a una celda (<td> o <th>) dentro de la misma tabla (que no falte, que no sea un elemento distinto de una celda, y que no sea ella misma).

Ámbito de aplicación. Se aplica a los elementos <td>/<th> que llevan un atributo headers no vacío, dentro de una <table> cuyo rol semántico sigue siendo table/grid/treegrid. Un atributo role explícito con cualquier otro valor (role="presentation"/"none", pero también role="heading" o cualquier otro rol real) sustituye la semántica nativa de tabla, sin dejar ninguna tabla que headers pueda describir. Un rol presentacional en una tabla con un atributo ARIA global o un tabindex se ignora, según la resolución de conflictos de WAI-ARIA, y la tabla sigue siéndolo. Coincide con la aplicabilidad de ACT a25f45.

Resultado esperado. Cada token id del atributo headers resuelve a un elemento que: (a) existe, (b) es una celda (<td> o <th>) de la misma <table> que la celda que lo referencia, y (c) no es la propia celda. Un <td> que actúa como encabezado mediante role="columnheader"/"rowheader" es un destino válido, igual que un <th> normal. ACT a25f45 no exige la etiqueta nativa.

Qué informa un hallazgo.

  • invalid: un elemento por cada id del atributo headers que no apunta a un encabezado válido: id, y reason, que es missing (ningún elemento tiene ese id), self-reference (la celda apunta a sí misma), not-a-cell (el elemento no es un <td> ni un <th>) o different-table (la celda está en otra tabla).

Estos campos de data.details ayudan a leer y reproducir un hallazgo. Salvo reasonCode y los pocos campos que Esquema de salida indica como estables, no son un contrato estable: un campo puede cambiar de nombre o desaparecer en una versión menor, así que no construyas sobre ellos.

Ejemplos

pass
<table>
<tr><th id="h1">Name</th></tr>
<tr><td headers="h1">Apple</td></tr>
</table>

headers="h1" resuelve a una celda real de la misma tabla.

fail
<table>
<tr><th id="h2">Name</th></tr>
<tr><td headers="missing">Banana</td></tr>
</table>

headers referencia un id que no existe en la tabla.

Ver código fuente