Skip to main content
Validación HTML

El atributo con el nombre local “xmlns:dt” no es serializable como XML 1.0.

Acerca de este problema HTML

En formatos basados en XML como XHTML 1.0 u otros vocabularios XML, las declaraciones de espacios de nombres como xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" se usaban para asociar prefijos de elementos o atributos con URIs de espacios de nombres específicos. Esto permitía que diferentes vocabularios XML coexistieran en un único documento sin conflictos de nomenclatura. El espacio de nombres xmlns:dt en particular se asociaba comúnmente con los tipos de datos XML de Microsoft, que solían verse en ASP heredado o HTML antiguo generado por Microsoft.

HTML5, sin embargo, no utiliza el mecanismo de espacios de nombres XML. El analizador HTML trata el documento como HTML, no XML, y no reconoce ni procesa prefijos de espacios de nombres personalizados. Los únicos atributos relacionados con xmlns permitidos en HTML5 son:

  • xmlns en el elemento <html>, pero solo con el valor http://www.w3.org/1999/xhtml (para compatibilidad con escenarios de servir XHTML).
  • Manejo implícito de espacios de nombres para elementos <svg> y <math> incrustados, que el analizador HTML gestiona automáticamente.

Cualquier otro atributo xmlns:* — como xmlns:dt, xmlns:o, xmlns:v, o xmlns:st1 — es inválido en HTML5 y provocará el error del validador W3C: “Attribute with the local name ‘xmlns:dt’ is not serializable as XML 1.0.”

Por qué esto es un problema

  • Cumplimiento de estándares: Los atributos de espacios de nombres XML personalizados violan la especificación HTML5. El analizador HTML no los procesa, por lo que no sirven ningún propósito funcional.
  • Problemas de serialización: Si el documento alguna vez se procesa mediante un serializador XML (por ejemplo, al convertir HTML a XHTML), estos atributos no pueden serializarse adecuadamente bajo las reglas de XML 1.0, causando potencialmente fallos de análisis.
  • Carga heredada: Estos atributos típicamente aparecen en documentos generados por herramientas antiguas (como la función “Guardar como HTML” de Microsoft Word) y arrastran declaraciones de espacios de nombres específicas de tipos de datos u Office que no tienen sentido en un contexto web moderno.
  • Sobrecarga del documento: Mantener declaraciones de espacios de nombres no utilizadas añade bytes innecesarios a tu documento sin ningún beneficio.

Cómo solucionarlo

  1. Busca en tu HTML cualquier atributo que comience con xmlns: en el elemento <html> o en otra parte del documento.
  2. Elimínalos completamente. Si tu código dependía de tipos de datos XML o características específicas de Office vinculadas a estos espacios de nombres, necesitarás refactorizar esa lógica usando atributos HTML5 estándar (como atributos data-*) o JavaScript.
  3. Asegúrate de que tu documento utilice una declaración <!DOCTYPE html> de HTML5 estándar y una etiqueta <html> limpia.

Si estás trabajando con contenido pegado desde Microsoft Word o herramientas similares, considera ejecutarlo a través de un limpiador de HTML para eliminar todo el marcado específico de Office.

Ejemplos

Incorrecto — atributo xmlns:dt personalizado

Esto provoca el error de validación porque xmlns:dt no es un atributo válido en HTML5:

<html xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello world</p>
  </body>
</html>

Incorrecto — múltiples declaraciones de espacios de nombres personalizados

Los documentos exportados desde herramientas antiguas a menudo incluyen varios atributos de espacios de nombres inválidos a la vez:

<html xmlns:o="urn:schemas-microsoft-com:office:office"
  xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
  xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <title>My Page</title>
  </head>
  <body>
    <p>Hello world</p>
  </body>
</html>

Correcto — documento HTML5 limpio

Elimina todos los atributos xmlns:* personalizados y usa una estructura HTML5 estándar:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>My Page</title>
  </head>
  <body>
    <p>Hello world</p>
  </body>
</html>

Correcto — usar atributos data como reemplazo

Si previamente dependías de atributos con prefijo de espacio de nombres para almacenar datos personalizados en elementos, usa atributos data-* en su lugar:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>My Page</title>
  </head>
  <body>
    <p data-type="datetime">2024-01-15</p>
  </body>
</html>

Encuentra problemas como este automáticamente

Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.

Ayúdanos a mejorar nuestras guías

¿Te ha sido útil esta guía?

¿Listo para validar tus sitios?
Inicia tu prueba gratuita hoy.