Skip to main content
Validação HTML

Atributo com o nome local “xmlns:w” não é serializável como XML 1.0.

Sobre este problema HTML

HTML5 usa um formato de serialização específico que é distinto de XML. Embora XML permita declarar prefixos de namespace arbitrários usando atributos xmlns:prefix, o parser HTML não reconhece nem processa essas declarações. A especificação HTML suporta apenas um pequeno conjunto de namespaces predefinidos — o namespace HTML padrão, SVG (http://www.w3.org/2000/svg), MathML (http://www.w3.org/1998/Math/MathML), XLink, XML e XMLNS — e estes são tratados implicitamente através dos elementos de incorporação apropriados (<svg>, <math>), não através de declarações xmlns: explícitas.

A frase “não serializável como XML 1.0” na mensagem do validador significa que este atributo não pode ser convertido entre o parser HTML e um serializador XML. O parser HTML trata xmlns:w como um nome de atributo opaco contendo dois pontos, em vez de como uma declaração de namespace. Se você fosse serializar este DOM de volta para XML, o resultado seria inválido porque xmlns:w seria interpretado como uma declaração de namespace para um prefixo que pode entrar em conflito com o uso real de elementos.

Este problema quase sempre origina de conteúdo exportado ou colado do Microsoft Word, Excel ou outras aplicações do Office. Essas ferramentas geram marcação carregada com declarações de namespace proprietárias como xmlns:w, xmlns:o (Office), xmlns:v (VML) e xmlns:x (Excel). Junto com essas declarações vêm elementos e atributos específicos do Office (por exemplo, <w:WordDocument>, <o:OfficeDocumentSettings>) que não têm significado num navegador web e incham o seu HTML.

Além de ser um erro de validação, deixar esta marcação no lugar cria vários problemas. Adiciona peso desnecessário significativo às suas páginas, torna o código-fonte mais difícil de ler e manter, e sinaliza que o HTML foi auto-gerado sem limpeza — o que pode afetar a manutenibilidade a longo prazo. Os navegadores ignoram silenciosamente estes atributos e elementos, por isso não fornecem qualquer benefício funcional.

Como corrigir

  1. Remova todos os atributos prefixados com xmlns: dos seus elementos HTML, incluindo xmlns:w, xmlns:o, xmlns:v, xmlns:x e quaisquer outros.
  2. Remova quaisquer elementos específicos do Office que usem esses prefixos de namespace, como <o:p>, <w:WordDocument> ou <v:shapetype>. Estes elementos não têm significado em HTML5.
  3. Limpe comentários condicionais associados como <!--[if gte mso 9]> que frequentemente envolvem blocos específicos do Office.
  4. Considere usar uma ferramenta de limpeza de colagem se você regularmente cola conteúdo do Word no seu HTML. Muitas plataformas CMS e editores de texto oferecem opções “colar como texto simples” ou “limpar HTML”.

Se você genuinamente precisar trabalhar com namespaces Office Open XML, use um formato baseado em XML apropriado (XHTML servido como application/xhtml+xml, ou documentos OOXML) em vez de HTML5 padrão.

Exemplos

Incorreto — Declarações de namespace do Office em HTML

Esta marcação é típica de conteúdo guardado ou exportado do Microsoft Word:

<html xmlns:w="urn:schemas-microsoft-com:office:word"
  xmlns:o="urn:schemas-microsoft-com:office:office"
  xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <title>Report</title>
    <!--[if gte mso 9]>
    <w:WordDocument>
      <w:View>Normal</w:View>
    </w:WordDocument>
    <![endif]-->
  </head>
  <body>
    <p class="MsoNormal">Hello world<o:p></o:p></p>
  </body>
</html>

Correto — HTML limpo sem marcação do Office

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

Incorreto — Namespace único no elemento <html>

Mesmo uma única declaração de namespace personalizada desencadeia o erro:

<html xmlns:w="urn:schemas-microsoft-com:office:word">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Content here.</p>
  </body>
</html>

Correto — Remover o atributo completamente

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Content here.</p>
  </body>
</html>

Note que o atributo xmlns="http://www.w3.org/1999/xhtml" padrão no elemento <html> é permitido (embora desnecessário em HTML5), mas qualquer declaração de namespace prefixada como xmlns:w não é.

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.