Skip to main content
Validação HTML

Valor incorreto “http://www.w3.org/TR/REC-html40” para o atributo “xmlns” (apenas “http://www.w3.org/1999/xhtml” é permitido aqui).

Sobre este problema HTML

O atributo xmlns declara o namespace XML para um documento. O valor http://www.w3.org/TR/REC-html40 é um URL que aponta para a especificação antiga da Recomendação HTML 4.0 — nunca foi um identificador de namespace XML adequado. Provavelmente acabou no código através de confusão entre URLs de DTD/especificação e URIs de namespace reais, ou por copiar marcação de templates desatualizados.

Na especificação HTML5 (o WHATWG HTML Living Standard), o atributo xmlns no elemento <html> é opcional. Quando presente, o seu valor deve ser exatamente http://www.w3.org/1999/xhtml — nenhum outro valor é permitido. Isto é verdade independentemente de o documento ser servido como text/html ou application/xhtml+xml.

Por que isto importa

  • Falha de validação: O validador W3C rejeitará o documento porque o valor do namespace não é um dos valores permitidos.
  • Conformidade com padrões: Usar um namespace incorreto pode fazer com que parsers XML interpretem mal ou rejeitem o documento, especialmente quando servido com um tipo de conteúdo XML.
  • Confusão de legado: O URL http://www.w3.org/TR/REC-html40 é uma referência de especificação, não um namespace. Namespaces e URLs de especificação servem propósitos fundamentalmente diferentes nos padrões web.

Como corrigir

A correção mais simples para um documento HTML5 padrão é remover completamente o atributo xmlns. O parser HTML não o requer, e os browsers processarão o documento corretamente sem ele.

Se o seu documento for servido como XHTML (application/xhtml+xml), ou se você tiver uma razão específica para incluir a declaração de namespace, atualize o valor para o único permitido: http://www.w3.org/1999/xhtml.

Exemplos

❌ Incorreto: URL antigo do HTML 4.0 usado como namespace

<!DOCTYPE html>
<html xmlns="http://www.w3.org/TR/REC-html40" lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello, world!</p>
  </body>
</html>

✅ Opção de correção 1: remover o atributo xmlns (recomendado para HTML5)

Para a maioria dos documentos HTML5 servidos como text/html, simplesmente omita o atributo:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello, world!</p>
  </body>
</html>

✅ Opção de correção 2: usar o valor de namespace correto

Se você precisar do atributo xmlns (por exemplo, para serialização XHTML), defina-o para o único valor permitido:

<!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>

Outros valores incorretos a observar

Este mesmo erro pode aparecer com outros URLs de namespace inválidos. Todos os seguintes estão errados:

  • http://www.w3.org/TR/REC-html40 (URL de especificação HTML 4.0)
  • http://www.w3.org/TR/html4/ (outro URL de especificação HTML 4)
  • http://www.w3.org/1999/html (namespace inexistente)

O único valor válido é http://www.w3.org/1999/xhtml. Em caso de dúvida, remova completamente o atributo xmlns — documentos HTML5 modernos não precisam dele.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.