标记验证的主要目的是在一定程度上检查标记的语法,以及某些特定元素类型和属性的结构.它不会评估标记的语义.
对于像HTML 4这样使用DTD进行验证的语言,唯一需要检查的是标记符合该DTD,并且您只能将语义指定为DTD.例如,只要你正确地标记一个表,无论你是用它来进行布局还是用于表格数据,它仍然会验证,因为你不能单独使用DTD来说明该表是什么正在使用即使它被正确标记.
在这种情况下,HTML 4.01 spec和DTD1对dl元素的唯一说法是它可以有dt或dd子元素(或两者),并且不能为空:
%attrs; -- %coreattrs, %i18n, %events --
>
甚至HTML 4.01规范也没有详细说明dl的各种可能的内容模型.它没有说明是否有一个没有相关dt内容的dd元素列表或者需要将dd元素与至少一个dt元素相关联是有意义的.
然而,HTML5 does非常简洁地说明了这一点
If a dl element has one or more dd element children but no dt element children, then it consists of one group with values but no names.
从功能和语义的角度来看,这有点像ul,可以这么说.当然,在这种情况下你也可以使用ul代替,但要么是一个未命名的关联值组和一个无序的事物列表之间存在细微差别,或者标准对dl的想法非常满意只有dd孩子.
1您可能想知道,为什么不让HTML 4 DTD要求每个dl至少有一个dt子(并且可选地至少有一个dd)?除了在面对HTML5时这仍然无关的事实,无论如何仍然允许它,这不是我能回答的问题.