Acerca de este problema HTML
El Validador HTML del W3C genera este error porque HTML5 no admite declaraciones arbitrarias de namespaces XML. En XML, el prefijo xmlns: se usa para vincular prefijos de namespace a URIs, permitiendo que elementos y atributos de diferentes vocabularios coexistan. Sin embargo, HTML5 utiliza sus propias reglas de análisis que son distintas a XML, y el único atributo de namespace reconocido en HTML5 es el atributo simple xmlns en el elemento <html> (establecido como http://www.w3.org/1999/xhtml). Los atributos de namespace con dos puntos como xmlns:o, xmlns:v, xmlns:w y otros no forman parte de la especificación HTML5.
El namespace xmlns:o="urn:schemas-microsoft-com:office:office" específicamente proviene de Microsoft Office. Cuando guardas un documento de Word como HTML o copias y pegas contenido de aplicaciones de Office en un editor HTML, Office inyecta sus propias declaraciones de namespace y marcado propietario. Este marcado está destinado a permitir el retorno del documento a Office y no tiene ningún propósito en la web.
Más allá de la validación, dejar estos atributos en su lugar puede causar problemas prácticos. El analizador HTML5 en los navegadores ignora silenciosamente o malinterpreta estas declaraciones de namespace, lo que significa que añaden peso muerto a tu marcado. También aumentan el tamaño del archivo innecesariamente y pueden confundir otras herramientas que procesan tu HTML, como lectores de pantalla, rastreadores de motores de búsqueda o sistemas de gestión de contenido.
Cómo solucionarlo
-
Elimina el atributo
xmlns:ode cualquier elemento donde aparezca (típicamente la etiqueta<html>). -
Elimina los atributos relacionados con namespaces de Office como
xmlns:v,xmlns:w,xmlns:xyxmlns:st1, ya que estos desencadenarán errores similares. -
Elimina cualquier elemento o atributo que use esos prefijos de namespace, como
<o:p>,<v:shape>o<w:wrap>, ya que no son elementos HTML5 válidos y los navegadores no los renderizan de manera significativa. - Limpia completamente el HTML generado por Office si estás convirtiendo documentos de Word a contenido web. Considera usar una herramienta dedicada de limpieza HTML o una opción de pegar-como-texto-plano en tu editor.
Ejemplos
Incorrecto: Atributos de namespace de Office en el elemento <html>
Este marcado contiene múltiples declaraciones de namespace de Microsoft Office que desencadenan errores de validación:
<!DOCTYPE html>
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title>My Document</title>
</head>
<body>
<h1>Meeting Notes</h1>
<p>Welcome to the meeting.<o:p></o:p></p>
</body>
</html>
Correcto: HTML5 limpio sin namespaces de Office
Elimina todos los atributos con prefijo xmlns: y cualquier elemento específico de Office como <o:p>:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Document</title>
</head>
<body>
<h1>Meeting Notes</h1>
<p>Welcome to the meeting.</p>
</body>
</html>
Incorrecto: Namespace de Office en un elemento no raíz
A veces el marcado de Office aparece más profundamente en el documento:
<div xmlns:o="urn:schemas-microsoft-com:office:office">
<p>Some content<o:p></o:p></p>
</div>
Correcto: Versión limpia
<div>
<p>Some content</p>
</div>
Al eliminar todas las declaraciones de namespace de Microsoft Office y sus elementos propietarios asociados, tu HTML se vuelve compatible con los estándares, más ligero y más compatible entre navegadores y tecnologías de asistencia. Si conviertes frecuentemente documentos de Office a HTML, considera usar una herramienta de limpieza como DirtyMarkup o la función “Pegar como texto plano” en tu editor de contenido para evitar estos problemas desde el principio.
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.