IDs dos cabeçalhos da tabela
A Silktide verifica as tabelas que associam as células aos cabeçalhos usando o atributo headers. Nessas tabelas, cada célula de cabeçalho precisa do seu próprio ID, caso contrário, as associações não funcionarão.
Em tabelas complexas — por exemplo, tabelas com dois níveis de cabeçalhos ou células que abrangem várias linhas — a relação entre uma célula e os seus cabeçalhos não pode ser determinada apenas pela posição. O resolve isso com o atributo headers: cada célula de dados lista os valores de id das células de cabeçalho que se aplicam a ela. Isso só funciona se cada célula de cabeçalho tiver realmente um id.
<!-- Problema: o segundo cabeçalho não tem id, portanto as células não podem fazer referência a ele -->
<table>
<tr>
<th id="name">Nome</th>
<th>Pontuação</th>
</tr>
<tr>
<td headers="name">Ada</td>
<td>98</td>
</tr>
</table>
Por que isso é importante
Quando uma tabela usa associações headers, um lê em voz alta os cabeçalhos associados antes de cada valor, permitindo que a pessoa saiba onde está numa tabela complexa. Uma célula de cabeçalho sem um id não pode ser referenciada, portanto as células abaixo dela são anunciadas sem contexto, e a tabela torna-se uma questão de adivinhação para quem não consegue vê-la.
Como corrigir
- Dê a cada célula de cabeçalho
<th>da tabela umidúnico. - Atualize o atributo
headersde cada célula de dados para listar os IDs de todos os cabeçalhos que se aplicam a ela, separados por espaços:
<!-- Corrigido: todos os cabeçalhos têm um id e as células fazem referência a eles -->
<table>
<tr>
<th id="name">Nome</th>
<th id="score">Pontuação</th>
</tr>
<tr>
<td headers="name">Ada</td>
<td headers="score">98</td>
</tr>
</table>
- Como alternativa, considere simplificar a tabela. Tabelas simples com uma única linha ou coluna de cabeçalhos não precisam de associações
headers— as células<th>com atributosscopesão suficientes e muito mais fáceis de manter.
Como a Silktide faz esta verificação
- Encontra todas as tabelas em cada página.
- Ignora as tabelas em que nenhuma célula usa um atributo
headers— esta verificação só se aplica a tabelas que optaram por associações explícitas de cabeçalhos. - Nas tabelas restantes, comunica todas as células de cabeçalho
<th>que não têm um atributoid.