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.