Skip to main content
Validação HTML

Elemento “dl” está em falta de uma instância obrigatória do elemento filho “dd”.

Sobre este problema HTML

O elemento <dl> representa uma lista de descrições — uma coleção de grupos nome-valor onde os elementos <dt> fornecem os termos (ou nomes) e os elementos <dd> fornecem as descrições associadas (ou valores). De acordo com a especificação HTML, o modelo de conteúdo para <dl> requer que cada grupo <dt> seja seguido por um ou mais elementos <dd>. Um <dl> com apenas elementos <dt> e nenhum elemento <dd> é HTML inválido.

Isto é importante por várias razões. Tecnologias assistivas como leitores de ecrã dependem do emparelhamento adequado <dt>/<dd> para transmitir a relação entre termos e as suas descrições. Uma lista de descrições sem descrições é semanticamente sem sentido — é como ter um dicionário com palavras mas sem definições. Os navegadores também podem renderizar a lista de forma inconsistente quando a estrutura esperada está incompleta.

Causas comuns deste erro incluem:

  • Usar acidentalmente <dl> e <dt> para criar uma lista simples em vez de usar <ul> ou <ol>.
  • Conteúdo gerado dinamicamente onde os elementos <dd> estão em falta devido a dados vazios.
  • Marcação incompleta onde o programador se esqueceu de adicionar os elementos de descrição.

Para corrigir este problema, certifique-se de que cada elemento <dt> dentro de um <dl> é seguido por pelo menos um elemento <dd>. Se você realmente não precisa de uma lista de descrições, considere usar um elemento diferente como <ul> para listas simples.

Exemplos

Inválido: <dl> com apenas <dt> e nenhum <dd>

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

Isto é inválido porque o termo <dt> não tem descrição <dd> correspondente.

Corrigido: Adicionar um elemento <dd>

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

Inválido: Múltiplos termos sem qualquer descrição

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

Isto despoleta o erro porque nenhum dos termos tem descrições associadas.

Corrigido: Cada termo com uma descrição

<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últiplos termos partilhando uma única descrição

Múltiplos elementos <dt> podem partilhar um único <dd>, o que é útil para sinónimos ou aliases:

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

Válido: Um único termo com múltiplas descrições

Um <dt> também pode ser seguido por múltiplos elementos <dd>:

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

Válido: Usar <div> para envolver grupos nome-valor

A especificação HTML permite envolver cada grupo <dt>/<dd> num <div> para fins de estilização. Cada <div> deve ainda conter pelo menos um <dd>:

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

Alternativa: Usar <ul> quando as descrições não são necessárias

Se você apenas precisa de uma lista de itens sem descrições, um <dl> é o elemento errado. Use uma lista não ordenada em vez disso:

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

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.