Sobre este problema HTML
As referências de carácter são como o HTML representa caracteres especiais que de outra forma seriam interpretados como marcação ou que não são facilmente digitados num teclado. Elas existem em três formas:
-
Referências nomeadas como
&,<,© -
Referências numéricas decimais como
<,© -
Referências numéricas hexadecimais como
<,©
As três formas partilham a mesma estrutura: começam com & e devem terminar com ;. Quando você omite o ponto e vírgula final, o analisador de HTML entra em modo de recuperação de erro. Dependendo do contexto, pode ainda resolver a referência (os navegadores são lenientes), mas este comportamento não é garantido e varia entre situações. Por exemplo, © sem ponto e vírgula pode ainda ser renderizado como ©, mas ¬it pode ser mal interpretado como a referência ¬ (¬) seguida de it, produzindo uma saída inesperada como “¬it” em vez do texto literal “¬it”.
Porque isto importa
- Renderização imprevisível: Sem o ponto e vírgula, os navegadores usam recuperação de erro heurística que pode produzir resultados diferentes dependendo do texto circundante. O que parece correto hoje pode quebrar com caracteres adjacentes diferentes.
- Conformidade com padrões: A especificação HTML do WHATWG requer o terminador ponto e vírgula. Omiti-lo é um erro de análise.
- Manutenibilidade: Outros programadores (ou você no futuro) podem não perceber que o ampersand era pretendido como uma referência de carácter, tornando o código mais difícil de ler e manter.
-
Integridade de dados: Em URLs dentro de atributos
href, um ponto e vírgula em falta numa referência de carácter pode corromper parâmetros de consulta e produzir links quebrados.
Como corrigir
- Adicione o ponto e vírgula em falta ao final de cada referência de carácter.
-
Se pretendia um ampersand literal, use
&em vez de um&simples. Isto é especialmente comum em URLs com strings de consulta. -
Procure no seu documento por padrões como
&somethingsem um;final para encontrar todas as instâncias.
Exemplos
❌ Ponto e vírgula em falta em referências nomeadas
<p>5 < 10 and 10 > 5</p>
<p>© 2024 All rights reserved</p>
✅ Referências nomeadas adequadamente terminadas
<p>5 < 10 and 10 > 5</p>
<p>© 2024 All rights reserved</p>
❌ Ponto e vírgula em falta em referências numéricas
<p>The letter A: A</p>
<p>Hex example: A</p>
✅ Referências numéricas adequadamente terminadas
<p>The letter A: A</p>
<p>Hex example: A</p>
❌ Ampersand simples numa URL (erro comum)
<a href="https://example.com/search?name=alice&age=30">Search</a>
Aqui o validador vê &age e tenta interpretá-lo como uma referência de carácter sem ponto e vírgula.
✅ Ampersand escapado numa URL
<a href="https://example.com/search?name=alice&age=30">Search</a>
❌ Referência ambígua causando saída incorreta
<p>The entity ¬it; doesn't exist, but ¬ without a semicolon resolves to ¬</p>
✅ Use & quando quer um ampersand literal
<p>The text &notit is displayed literally when properly escaped.</p>
Uma regra prática rápida: cada & no seu HTML deve ser o início de uma referência de carácter completa, terminada com ponto e vírgula, ou deve ele próprio ser escrito como &.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.