Goo*_*oup 5 html validation w3c
我最近遇到了一个使用定义列表标签的网站,尽管使用不正确,但仍然如此.他们使用它们而没有将定义标题声明为定义列表的第一个子节点.
出于好奇,我将以下内容通过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>
Run Code Online (Sandbox Code Playgroud)
为什么这会验证?当然它在语义上没有舔感觉?还是我完全错过了一些完全明显的东西?
标记验证的主要目的是在一定程度上检查标记的语法,以及某些特定元素类型和属性的结构.它不会评估标记的语义.
对于像HTML 4这样使用DTD进行验证的语言,唯一需要检查的是标记符合该DTD,并且您只能将语义指定为DTD.例如,只要你正确地标记一个表,无论你是用它来进行布局还是用于表格数据,它仍然会验证,因为你不能单独使用DTD来说明该表是什么正在使用即使它被正确标记.
在这种情况下,唯一的HTML 4.01规范和DTD 1说的一个dl因素是,它可以有dt或dd子女(或两者),并不能为空:
<!-- definition lists - DT for term, DD for its definition -->
<!ELEMENT DL - - (DT|DD)+ -- definition list -->
<!ATTLIST DL
%attrs; -- %coreattrs, %i18n, %events --
>
Run Code Online (Sandbox Code Playgroud)
甚至HTML 4.01规范也没有详细说明a的各种可能的内容模型dl.它没有说明没有相关内容的元素列表是否有意义,或者需要将元素与至少一个元素相关联.dddtdddt
但是,HTML5确实非常简洁地说明了这一点
如果
dl元素具有一个或多个dd元素子元素但没有dt元素子元素,则它由一个具有值但没有名称的组组成.
这可能会使它ul在功能和语义方面有点像.当然,在这种情况下你也可以使用一个ul代替,但要么是一个未命名的相关值组和一个无序的事物列表之间存在细微差别,或者标准只是完全适应dl只有dd儿童.
1 您可能想知道,为什么不让HTML 4 DTD要求每个孩子dl至少有一个dt孩子(并且可选择至少有一个孩子dd)?除了在面对HTML5时这仍然无关的事实,无论如何仍然允许它,这不是我能回答的问题.
| 归档时间: |
|
| 查看次数: |
538 次 |
| 最近记录: |