table-headers-attr-valid
El atributo "headers" de una celda de tabla debe referenciar celdas de encabezado válidas
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, yreason, que esmissing(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>) odifferent-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
<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.
<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.