Skip to main content
Validación HTML

El elemento “dl” carece de una instancia requerida del elemento hijo “dd”.

Acerca de este problema HTML

El elemento <dl> representa una lista de descripción — una colección de grupos nombre-valor donde los elementos <dt> proporcionan los términos (o nombres) y los elementos <dd> proporcionan las descripciones asociadas (o valores). Según la especificación HTML, el modelo de contenido para <dl> requiere que cada grupo <dt> sea seguido por uno o más elementos <dd>. Un <dl> con solo elementos <dt> y sin elementos <dd> es HTML inválido.

Esto importa por varias razones. Las tecnologías de asistencia como los lectores de pantalla dependen del emparejamiento apropiado <dt>/<dd> para transmitir la relación entre términos y sus descripciones. Una lista de descripción sin descripciones carece de significado semántico — es como tener un diccionario con palabras pero sin definiciones. Los navegadores también pueden renderizar la lista de manera inconsistente cuando la estructura esperada está incompleta.

Las causas comunes de este error incluyen:

  • Usar accidentalmente <dl> y <dt> para crear una lista simple en lugar de usar <ul> o <ol>.
  • Contenido generado dinámicamente donde los elementos <dd> faltan debido a datos vacíos.
  • Marcado incompleto donde el desarrollador olvidó agregar los elementos de descripción.

Para solucionar este problema, asegúrate de que cada elemento <dt> dentro de un <dl> sea seguido por al menos un elemento <dd>. Si realmente no necesitas una lista de descripción, considera usar un elemento diferente como <ul> para listas simples.

Ejemplos

Inválido: <dl> con solo <dt> y sin <dd>

<dl>
  <dt>The Meaning of Life</dt>
</dl>

Esto es inválido porque el término <dt> no tiene una descripción <dd> correspondiente.

Solucionado: agregando un elemento <dd>

<dl>
  <dt>The Meaning of Life</dt>
  <dd>A philosophical question about the significance of existence.</dd>
</dl>

Inválido: múltiples términos sin descripciones

<dl>
  <dt>HTML</dt>
  <dt>CSS</dt>
  <dt>JavaScript</dt>
</dl>

Esto provoca el error porque ninguno de los términos tiene descripciones asociadas.

Solucionado: cada término con una descripción

<dl>
  <dt>HTML</dt>
  <dd>A markup language for structuring web content.</dd>
  <dt>CSS</dt>
  <dd>A style sheet language for describing presentation.</dd>
  <dt>JavaScript</dt>
  <dd>A programming language for web interactivity.</dd>
</dl>

Válido: múltiples términos compartiendo una sola descripción

Múltiples elementos <dt> pueden compartir un solo <dd>, lo cual es útil para sinónimos o alias:

<dl>
  <dt>Laptop</dt>
  <dt>Notebook</dt>
  <dd>A portable personal computer with a clamshell form factor.</dd>
</dl>

Válido: un solo término con múltiples descripciones

Un <dt> también puede ser seguido por múltiples elementos <dd>:

<dl>
  <dt>Python</dt>
  <dd>A large constricting snake.</dd>
  <dd>A high-level programming language.</dd>
</dl>

Válido: usando <div> para envolver grupos nombre-valor

La especificación HTML permite envolver cada grupo <dt>/<dd> en un <div> para propósitos de estilo. Cada <div> debe aún contener al menos un <dd>:

<dl>
  <div>
    <dt>Name</dt>
    <dd>Jane Doe</dd>
  </div>
  <div>
    <dt>Email</dt>
    <dd>jane@example.com</dd>
  </div>
</dl>

Alternativa: usa <ul> cuando no se necesiten descripciones

Si solo necesitas una lista de elementos sin descripciones, un <dl> es el elemento incorrecto. Usa una lista no ordenada en su lugar:

<ul>
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
</ul>

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.