Acerca de este problema HTML
Comprendiendo el problema
En los primeros días del Open Graph Protocol (usado por Facebook, LinkedIn y otras plataformas para analizar enlaces compartidos), se instruyó a los desarrolladores a añadir declaraciones de espacios de nombres XML como xmlns:og y xmlns:fb al elemento <html>. Esto se tomó prestado de las convenciones XHTML donde los atributos con prefijos personalizados requerían enlaces de espacios de nombres.
Sin embargo, los documentos HTML5 modernos no son XML. El analizador HTML5 no soporta declaraciones arbitrarias de espacios de nombres como lo hace XHTML/XML. Los atributos con dos puntos en sus nombres locales (como xmlns:og) no son serializables como XML 1.0, lo que significa que no pueden ser procesados de manera confiable entre analizadores HTML y XML. El validador del W3C marca esto porque estos atributos violan las reglas de serialización HTML.
La buena noticia es que estas declaraciones de espacios de nombres nunca han sido requeridas para que las etiquetas de Open Graph funcionen. Los rastreadores de redes sociales (de Facebook, Twitter, LinkedIn, etc.) analizan las etiquetas <meta> basándose directamente en el valor del atributo property: no dependen de la resolución de espacios de nombres XML. Los navegadores también ignoran completamente estos atributos, así que eliminarlos no tiene ningún impacto en la funcionalidad.
Cómo solucionarlo
-
Localiza tu etiqueta de apertura
<html>. -
Elimina cualquier atributo
xmlns:og,xmlns:fb, o de espacios de nombres similares. -
Mantén tus etiquetas
<meta>de Open Graph exactamente como están: continuarán funcionando.
Ejemplos
❌ Incorrecto: Atributos de espacios de nombres en el 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>
Esto genera la advertencia del validador: El atributo con el nombre local “xmlns:og” no es serializable como XML 1.0 (y de manera similar para xmlns:fb).
✅ Correcto: Elemento <html> limpio sin atributos de espacios de nombres
<!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>
Las etiquetas <meta> de Open Graph permanecen sin cambios y continuarán siendo reconocidas por Facebook, LinkedIn y todas las demás plataformas que soporten el Open Graph Protocol. El único cambio es eliminar los atributos innecesarios xmlns:og y xmlns:fb de la etiqueta <html>.
Variaciones comunes
También puedes encontrar otros prefijos de espacios de nombres como xmlns:article, xmlns:product, o xmlns:music. Todos estos son innecesarios en HTML5 y deberían ser eliminados:
<!-- ❌ Elimina todos estos -->
<html lang="en" xmlns:og="http://ogp.me/ns#" xmlns:article="http://ogp.me/ns/article#" xmlns:fb="http://www.facebook.com/2008/fbml">
<!-- ✅ Manténlo simple -->
<html lang="en">
Ten en cuenta que el atributo estándar xmlns (sin un prefijo de dos puntos) está permitido en el elemento <html> en HTML5 si su valor es exactamente http://www.w3.org/1999/xhtml. Sin embargo, incluso esto es innecesario y puede omitirse. Las formas con prefijo como xmlns:og nunca son válidas en HTML5.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.
Más información: