Skip to main content
Validación HTML

Atributo “xmlns:dt” no permitido aquí.

Acerca de este problema HTML

El atributo xmlns:dt — abreviatura de “XML Namespace: datatypes” — se usaba históricamente en vocabularios XML específicos de Microsoft (notablemente urn:schemas-microsoft-com:datatypes) para declarar información de tipos de datos en elementos. Era común en markup de la era ASP e IE más antiguo. Sin embargo, HTML5 no es un lenguaje XML y no admite declaraciones de namespace XML arbitrarias en elementos.

En HTML5, el único atributo xmlns permitido es xmlns="http://www.w3.org/1999/xhtml" en el propio elemento <html>, e incluso eso existe únicamente para compatibilidad con la serialización XHTML. Los atributos con prefijo de namespace como xmlns:dt, xmlns:o, o xmlns:v son inválidos. El analizador HTML simplemente no los reconoce, y el validador W3C los marcará con el error “Attribute ‘xmlns:dt’ not allowed here.”

Por qué esto es un problema

  • Conformidad con estándares: Usar atributos no estándar significa que tu documento no se ajusta a la especificación HTML, lo que puede llevar a comportamientos impredecibles entre navegadores.
  • Bloqueo heredado: El atributo xmlns:dt está vinculado al esquema de tipos de datos propietario de Microsoft. Los navegadores modernos no interpretan ni usan este namespace, por lo que no sirve ningún propósito funcional en un documento HTML5.
  • Ruido de validación: Los atributos inválidos generan errores de validador que pueden oscurecer problemas reales en tu markup, haciendo más difícil detectar errores genuinos.
  • Accesibilidad y herramientas: Los lectores de pantalla, rastreadores de motores de búsqueda y otras herramientas automatizadas esperan HTML válido. Los atributos no estándar pueden confundir analizadores o ser descartados silenciosamente.

Cómo solucionarlo

  1. Elimina el atributo. Si xmlns:dt se heredó de código legacy o una plantilla CMS y nada en tu aplicación depende de él, simplemente elimínalo.
  2. Reemplaza con atributos data-*. Si necesitas adjuntar metadatos personalizados a un elemento — por ejemplo, para indicar un tipo de dato para uso de JavaScript — usa un atributo HTML5 data-* en su lugar.
  3. Usa XHTML si se requieren namespaces XML. Si genuinamente necesitas soporte de namespace XML (raro en desarrollo web moderno), sirve tu documento como application/xhtml+xml con un doctype XHTML apropiado y declaración XML. Ten en cuenta que esto cambia las reglas de análisis significativamente.

Ejemplos

Incorrecto: usar xmlns:dt en HTML5

Esto provocará el error de validación:

<ul xmlns:dt="urn:schemas-microsoft-com:datatypes">
  <li dt:dt="string">Item one</li>
  <li dt:dt="number">42</li>
</ul>

Tanto xmlns:dt en el <ul> como los atributos dt:dt en los elementos <li> son inválidos en HTML5.

Correcto: atributo eliminado

Si la declaración de namespace es innecesaria (lo cual casi siempre es así en HTML moderno), elimínala junto con cualquier atributo con prefijo:

<ul>
  <li>Item one</li>
  <li>42</li>
</ul>

Correcto: usar atributos data-* para metadatos personalizados

Si tu JavaScript o lógica de aplicación necesita conocer el tipo de dato de cada elemento, usa atributos data-* válidos:

<ul>
  <li data-type="string">Item one</li>
  <li data-type="number">42</li>
</ul>

Entonces puedes acceder a estos valores en JavaScript con element.dataset.type.

Correcto: migrar un contenedor div heredado

Un patrón heredado común coloca xmlns:dt en un div contenedor:

<!-- Inválido -->

<div xmlns:dt="urn:schemas-microsoft-com:datatypes">
  <span dt:dt="dateTime">2024-01-15</span>
</div>

La versión corregida elimina el namespace y usa atributos estándar:

<div>
  <time datetime="2024-01-15">January 15, 2024</time>
</div>

En este caso, el elemento semántico <time> con su atributo datetime es la forma apropiada de HTML5 para representar valores de fecha y hora — no se necesita namespace personalizado.

Lista de verificación rápida

  • Busca en tu código base xmlns:dt y cualquier atributo con prefijo dt:.
  • Revisa plantillas CMS, markup generado por servidor y código heredado copiado y pegado — estas son las fuentes más comunes.
  • Elimina los atributos o reemplázalos con equivalentes data-*.
  • Re-valida tu documento para confirmar que el error se ha resuelto.

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.