gpt4 book ai didi

html - 为什么没有 dt 标签的 dl 标签会生效

转载 作者:太空狗 更新时间:2023-10-29 15:56:32 26 4
gpt4 key购买 nike

我最近遇到一个使用定义列表标签的网站,尽管使用不正确,但仍然如此。他们使用它们时没有将定义标题声明为定义列表的第一个子项。

出于好奇,我通过 w3c 验证器输入了以下内容

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
</head>
<body>
<dl>
<dd>description</dd>
<dd>description</dd>
<dd>description</dd>
</dl>
</body>
</html>

为什么这个有效?肯定它在语义上没有任何意义吗?还是我只是遗漏了一些非常明显的东西?

最佳答案

标记验证的主要目的是检查标记的语法,以及在某种程度上检查某些特定元素类型和属性的结构。它不会评估标记的语义。

对于像 HTML 4 这样使用 DTD 进行验证的语言,唯一要检查的是标记是否符合该 DTD,而您只能深入到将语义规范到 DTD 中。例如,只要你正确地标记了一个表格,无论你是将它用于布局还是用于表格数据,它仍然有效,因为你无法单独使用 DTD 来判断该表格是怎样的即使标记正确,也会被使用。

在这种情况下,唯一的事情是 HTML 4.01 spec而 DTD1 关于 dl 元素的说法是它可以有 dtdd 子元素(或两者都有), 并且不能为空:

<!-- definition lists - DT for term, DD for its definition -->

<!ELEMENT DL - - (DT|DD)+ -- definition list -->
<!ATTLIST DL
%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 个 child 。


1 您可能想知道,为什么 HTML 4 DTD 不要求每个 dl 至少有一个 dt child(以及可选的至少一个 dd 来配合它)?除了在 HTML5 面前这已经变得无关紧要之外,它仍然允许它,这不是我可以回答的问题。

关于html - 为什么没有 dt 标签的 dl 标签会生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20045380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com