Skip to main content
Validação HTML

Atributo com o nome local “xmlns:(fb|og)” não é serializável como XML 1.0

Sobre este problema HTML

Compreender o problema

Nos primeiros dias do Open Graph Protocol (usado pelo Facebook, LinkedIn, e outras plataformas para analisar links partilhados), os programadores eram instruídos a adicionar declarações de namespace XML como xmlns:og e xmlns:fb ao elemento <html>. Isto foi emprestado das convenções XHTML onde atributos personalizados com prefixos requeriam vinculações de namespace.

No entanto, os documentos HTML5 modernos não são XML. O parser HTML5 não suporta declarações de namespace arbitrárias da forma como o XHTML/XML suporta. Atributos com dois pontos nos seus nomes locais (como xmlns:og) não são serializáveis como XML 1.0, o que significa que não podem ser convertidos de forma fiável entre parsers HTML e XML. O validador W3C sinaliza isto porque estes atributos violam as regras de serialização HTML.

A boa notícia é que estas declarações de namespace nunca foram necessárias para que as tags Open Graph funcionassem. Os crawlers de redes sociais (do Facebook, Twitter, LinkedIn, etc.) analisam tags <meta> baseados no valor do atributo property diretamente — não dependem da resolução de namespace XML. Os navegadores também ignoram completamente estes atributos, portanto removê-los não tem impacto zero na funcionalidade.

Como corrigir

  1. Localize a sua tag de abertura <html>.
  2. Remova quaisquer atributos de namespace xmlns:og, xmlns:fb, ou similares.
  3. Mantenha as suas tags <meta> Open Graph exatamente como estão — elas continuarão a funcionar.

Exemplos

❌ Incorreto: Atributos de namespace no elemento <html>

<!DOCTYPE html>
<html lang="en" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">
  <head>
    <title>My Page</title>
    <meta property="og:title" content="My Page Title">
    <meta property="og:description" content="A description of my page.">
    <meta property="og:image" content="https://example.com/image.jpg">
  </head>
  <body>
    <p>Hello, world!</p>
  </body>
</html>

Isto desencadeia o aviso do validador: Attribute with the local name “xmlns:og” is not serializable as XML 1.0 (e similarmente para xmlns:fb).

✅ Correto: Elemento <html> limpo sem atributos de namespace

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>My Page</title>
    <meta property="og:title" content="My Page Title">
    <meta property="og:description" content="A description of my page.">
    <meta property="og:image" content="https://example.com/image.jpg">
  </head>
  <body>
    <p>Hello, world!</p>
  </body>
</html>

As tags <meta> Open Graph permanecem inalteradas e continuarão a ser reconhecidas pelo Facebook, LinkedIn, e todas as outras plataformas que suportam o Open Graph Protocol. A única mudança é remover os atributos desnecessários xmlns:og e xmlns:fb da tag <html>.

Variações comuns

Também pode encontrar outros prefixos de namespace como xmlns:article, xmlns:product, ou xmlns:music. Estes são todos desnecessários em HTML5 e devem ser removidos:

<!-- ❌ Remover todos estes -->

<html lang="en" xmlns:og="http://ogp.me/ns#" xmlns:article="http://ogp.me/ns/article#" xmlns:fb="http://www.facebook.com/2008/fbml">

<!-- ✅ Manter simples -->

<html lang="en">

Note que o atributo xmlns padrão (sem um prefixo de dois pontos) é permitido no elemento <html> em HTML5 se o seu valor for exatamente http://www.w3.org/1999/xhtml. No entanto, mesmo isto é desnecessário e pode ser omitido. As formas com prefixo como xmlns:og nunca são válidas em HTML5.

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.