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
-
Localize a sua tag de abertura
<html>. -
Remova quaisquer atributos de namespace
xmlns:og,xmlns:fb, ou similares. -
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.