Skip to main content
Validação HTML

O atributo com o nome local “xmlns:m” não é serializável como XML 1.0.

Sobre este problema HTML

O W3C HTML Validator gera este erro quando encontra um atributo com namespace como xmlns:m, xmlns:o, xmlns:v, ou qualquer outra declaração xmlns:* num documento HTML. Estas vinculações de namespace com prefixo são um conceito XML definido na especificação XML Namespaces. Na sintaxe HTML (documentos servidos com o tipo MIME text/html), o analisador HTML não os trata como declarações de namespace — trata-os como atributos regulares com dois pontos no nome. Como tais nomes de atributos não são serializáveis em XML 1.0, o validador reporta o erro.

Este problema é extremamente comum com conteúdo exportado do Microsoft Office (Word, Excel, PowerPoint). Quando você guarda ou copia conteúdo do Office como HTML, o markup gerado frequentemente inclui declarações de namespace como xmlns:m (Office Math Markup Language), xmlns:o (namespace do Office), xmlns:v (VML), e xmlns:w (markup específico do Word). Estas declarações foram concebidas para renderização HTML mais antiga baseada em XML e não servem qualquer propósito em documentos HTML5 modernos.

Porquê isto é um problema

  • Conformidade com padrões: A especificação HTML5 apenas permite o atributo xmlns (sem prefixo) no elemento <html>, e apenas com o valor http://www.w3.org/1999/xhtml. Formas com prefixo como xmlns:m não são permitidas.
  • Serialização: Se uma ferramenta tentar serializar o DOM como XML (por exemplo, XMLSerializer), atributos com dois pontos que não são namespaces adequadamente vinculados podem causar falhas ou saída inesperada.
  • Nenhum benefício funcional: Num documento HTML, o analisador HTML do navegador ignora estas vinculações de namespace. Elas não ativam qualquer comportamento especial — são peso morto no seu markup.
  • Manutenibilidade: Deixar desordem de namespaces gerados pelo Office no seu HTML torna o código mais difícil de ler e manter.

Como corrigir

  1. Remova o atributo xmlns:* do seu elemento HTML (ou qualquer elemento onde apareça). Na maioria dos casos, isto é tudo o que você precisa de fazer — o conteúdo com namespace do Office não é renderizado pelos navegadores de qualquer forma.
  2. Limpe HTML gerado pelo Office removendo todos os namespaces proprietários, comentários condicionais, e elementos específicos do Office. Ferramentas como HTML Tidy ou a funcionalidade “colar como texto simples” do seu editor podem ajudar.
  3. Use equivalentes nativos do HTML5 sempre que possível. O HTML5 suporta nativamente MathML e SVG sem requerer declarações explícitas de namespace.
  4. Mude para XHTML apenas se você tiver uma necessidade genuína de namespaces XML. Isto significa servir o documento com o tipo MIME application/xhtml+xml e usar sintaxe XML bem formada por completo.

Exemplos

Incorreto: declarações de namespace geradas pelo Office

Este markup, típico de conteúdo exportado do Microsoft Word, desencadeia o erro de validação:

<!DOCTYPE html>
<html xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
      xmlns:o="urn:schemas-microsoft-com:office:office"
      xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <title>Office Export</title>
  </head>
  <body>
    <p>Content from Word</p>
  </body>
</html>

Correto: HTML5 limpo sem declarações de namespace

Remova todos os atributos xmlns:* e qualquer markup específico do Office associado:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Office Export</title>
  </head>
  <body>
    <p>Content from Word</p>
  </body>
</html>

Incorreto: namespace único num elemento que não é html

O erro também pode aparecer noutros elementos se uma ferramenta inserir atributos de namespace:

<div xmlns:custom="http://example.com/ns">
  <p>Some content</p>
</div>

Correto: remova o atributo de namespace

<div>
  <p>Some content</p>
</div>

Usar MathML nativamente no HTML5

Se o atributo xmlns:m foi adicionado para suportar conteúdo matemático, note que o HTML5 suporta MathML diretamente sem qualquer declaração de namespace:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>MathML in HTML5</title>
  </head>
  <body>
    <p>The quadratic formula:</p>
    <math>
      <mi>x</mi>
      <mo>=</mo>
      <mfrac>
        <mrow>
          <mo>-</mo>
          <mi>b</mi>
          <mo>±</mo>
          <msqrt>
            <msup><mi>b</mi><mn>2</mn></msup>
            <mo>-</mo>
            <mn>4</mn><mi>a</mi><mi>c</mi>
          </msqrt>
        </mrow>
        <mrow>
          <mn>2</mn><mi>a</mi>
        </mrow>
      </mfrac>
    </math>
  </body>
</html>

Nenhum atributo xmlns:m é necessário — o navegador reconhece <math> como MathML automaticamente.

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.