有没有一种有效的方法来包装一个HTML元素的DT和DD?

我希望HTML可以做一些在语义上等同于此的东西;

<dl class="main-list"> <definitionitem> <dt>Some Thing</dt> <dd>You know it!</dd> <dt>Another Thing</dt> <dd>Word.</dd> </definitionitem> <definitionitem> <dt>Stuff</dt> <dd>Alright!</dd> </definitionitem> </dl> 

但是,由于距离我最近的东西,我不是100%满意的语义;

 <div class="redundant-wrapper"> <dl class="main-list"> <dt>Some Thing</dt> <dd>You know it!</dd> <dt>Another Thing</dt> <dd>Word.</dd> </dl> <dl class="another-main-list"> <dt>Stuff!</dt> <dd>Alright!</dd> </dl> </div> 

我想知道如果有人有什么其他的想法可以做到这一点?

此外,项目将被分组的原因是因为它们在被标记的内容中被可视化地分组。 设想一个字典页面,带有一个单一的定义列表,其中每个定义位于左侧浮动框内。 我一直遇到这种情况。

不,Ian Hickson(HTML规范编辑) 确信这是一个CSS问题,而不是HTML问题:

这不应该是必要的。 这是CSS的限制。

正确的解决scheme是为CSS提供一些伪元素或其他机制,将匿名容器引入包装要包装的元素的渲染树中。

与此同时,fantasai(CSS规格编辑器)则相反 :

我不认为这是一个CSS问题。 我认为这是一个HTML问题。 伪元素是一个不重要的东西来规范,是一个不平凡的事情来实现,是一个比较混乱的东西来使用。

尽pipe如此,伊恩显然无视这一点,并继续脱离现实。

LEGEND (根据HTML规范必须是FIELDSET第一个直接子项), FIGCAPTION (必须是图的首先/最后直接子)和LIUL / OL直接子项)有同样的问题。

至于DT / DD ,我个人在LI里面每个都使用UL列表和DL

 <ul> <li><dl> <dt>Lorem</dt> <dd>Lorem definition</dd> </dl></li> <li><dl> <dt>Ipsum</dt> <dd>Ipsum definition</dd> </dl></li> </ul> 

所以我们有DL来做DTDD之间的关系,和UL列表使它们都属于一个列表。

更新(2016-11-14): HTML标准(现在的WHATWG版本 )现在(自2016-10-31起) 允许 DIV元素(可选地与所谓的脚本支持元素SCRIPTTEMPLATE )成为直接的孩子的DL元素。 W3C的HTMLvalidation器 没有考虑到这个变化,但是实验性的HTML5.orgvalidation器却这样做。

更新(2017-01-18):原来规范不允许DT / DD使用多个嵌套的DIV封装器,因此实际上该function的实用性实际上是非常有限的,这里描述的ULLIDL方法仍然是相关。