Sobre este problema HTML
O atributo aria-setsize informa as tecnologias assistivas sobre quantos itens existem num conjunto de elementos relacionados (como itens de lista ou itens de árvore). É particularmente útil quando nem todos os itens de um conjunto estão presentes no DOM — por exemplo, em listas virtualizadas, resultados paginados ou conteúdo carregado dinamicamente. De acordo com a especificação WAI-ARIA 1.2:
Os autores DEVEM definir o valor de
aria-setsizepara um número inteiro igual ao número de itens no conjunto. Se o número total de itens for desconhecido, os autores DEVEM definir o valor dearia-setsizepara-1.
Isto significa que -1 é um valor especificamente recomendado para casos onde a contagem total de itens é indeterminada. A correspondência de padrões do validador W3C espera apenas dígitos não-negativos, por isso rejeita o carácter - inicial. Este é um bug conhecido do validador e não reflete um problema real com o seu HTML.
Por que -1 importa para a acessibilidade
Ao construir interfaces com conteúdo dinâmico ou parcialmente carregado, os leitores de ecrã precisam comunicar o tamanho de um conjunto aos utilizadores. Se você tem uma lista de resultados de pesquisa mas não conhece a contagem total, definir aria-setsize="-1" informa as tecnologias assistivas que o tamanho do conjunto é desconhecido. Sem isto, um leitor de ecrã pode anunciar informações incorretas ou enganadoras sobre quantos itens existem.
O que deve fazer
Não altere a sua marcação para contornar este erro do validador. O valor -1 está correto e serve um propósito importante de acessibilidade. Removê-lo ou substituí-lo por um número positivo arbitrário degradaria a experiência para utilizadores de tecnologias assistivas.
Exemplos
Uso válido que desencadeia o falso positivo
Esta marcação está correta mas será sinalizada pelo validador:
<ul>
<li role="option" aria-setsize="-1" aria-posinset="1">Resultado A</li>
<li role="option" aria-setsize="-1" aria-posinset="2">Resultado B</li>
<li role="option" aria-setsize="-1" aria-posinset="3">Resultado C</li>
</ul>
Aqui, o número total de resultados é desconhecido (talvez sejam carregados sob demanda), por isso aria-setsize="-1" sinaliza corretamente isto às tecnologias assistivas.
Tamanho do conjunto conhecido (sem erro do validador)
Quando o número total de itens é conhecido, use a contagem real. Isto não irá desencadear o erro do validador:
<ul>
<li role="option" aria-setsize="5" aria-posinset="1">Item 1</li>
<li role="option" aria-setsize="5" aria-posinset="2">Item 2</li>
<li role="option" aria-setsize="5" aria-posinset="3">Item 3</li>
</ul>
Quando aria-setsize não é necessário
Se todos os itens do conjunto estão presentes no DOM, você não precisa de aria-setsize — o navegador pode calcular o tamanho do conjunto automaticamente:
<ul role="listbox">
<li role="option">Maçã</li>
<li role="option">Banana</li>
<li role="option">Cereja</li>
</ul>
Em resumo, se você vir este erro do validador e está intencionalmente a usar aria-setsize="-1" porque a contagem total de itens é desconhecida, o seu código está correto. Pode ignorar com segurança este aviso específico.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.