Sobre este problema HTML
O atributo xmlns declara o namespace XML para o documento. Quando presente no elemento <html>, a especificação HTML exige que o seu valor seja exatamente http://www.w3.org/1999/xhtml — nenhuma variação é permitida. O URL http://www.w3.org/1999/html não é um namespace reconhecido e será rejeitado pelo validador. Este erro quase sempre resulta de um erro tipográfico: o “x” antes de “html” foi acidentalmente omitido.
Por que isto é importante
Embora a maioria dos navegadores ainda renderize a página em modo HTML independentemente de um valor xmlns malformado, um namespace incorreto pode causar problemas reais em determinados contextos:
-
Processamento XHTML: Se o documento for servido com um tipo de conteúdo XML (por exemplo,
application/xhtml+xml), um namespace inválido fará com que os parsers XML rejeitem ou interpretem incorretamente o documento. - Conformidade com padrões: Validadores e ferramentas automatizadas sinalizam isto como erro, o que pode afetar auditorias de qualidade, verificações de acessibilidade e pipelines de CI/CD que impõem marcação válida.
- Ferramentas e interoperabilidade: Ferramentas baseadas em XML, sistemas de gestão de conteúdo e transformações XSLT dependem de namespaces corretos para funcionar adequadamente.
Como corrigir
Você tem duas opções dependendo do tipo de documento:
-
Se você precisa do atributo
xmlns(por exemplo, para documentos XHTML ou polyglot): Altere o valor dehttp://www.w3.org/1999/htmlparahttp://www.w3.org/1999/xhtml. -
Se você está escrevendo HTML5 padrão: Simplesmente remova o atributo
xmlns. É opcional em HTML5 e não tem efeito quando presente com o valor correto — portanto, omiti-lo é a abordagem mais limpa.
Exemplos
Incorreto — namespace com erro tipográfico
O valor está sem o “x” antes de “html”:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html" lang="en">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Corrigido — namespace XHTML correto
Adicione o “x” em falta para que o valor seja xhtml:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Corrigido — HTML5 padrão sem xmlns
Se você não precisa de compatibilidade XHTML, remova completamente o atributo:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Para a maioria dos websites modernos servidos como text/html, a terceira opção — omitir xmlns completamente — é a abordagem mais simples e recomendada. Inclua-o apenas se o seu documento também deve ser XHTML válido ou será processado por ferramentas XML, e sempre certifique-se de que o valor é exatamente http://www.w3.org/1999/xhtml.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.