为什么select标签至少需要让child有效才能生成xhtml 1.0?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Why select tag need at least one child to be xhtml valid ?</title>
</head>
<body>
Allowed users :<br/>
<select size="5" style="width: 200px">
</select>
<br />
Alls users :<br/>
<select size="5" style="width: 200px">
<option>root</option>
<option>John Doe</option>
<option>Jane Doe</option>
</select>
</body>
</html>
要有效,我需要写:
<select><option/></select>
我认为它没用,而且以编程方式添加空选项标签很麻烦(特别是在ASP.NET WebForms中,我使用带有dataBind的DropDownList或ListBox控件):
if count == 0 then add <option/>...
DTD中没有解释:http://www.w3.org/TR/xhtml1/dtds.html
你知道为什么W3C验证要求吗?
(如何在ASP.NET WebForms 4.0中使用DropDownList或ListBox控件使此页面有效?)
答案 0 :(得分:1)
假设这是一个问题的原因是因为您要动态添加option
,我建议也动态添加select
。
实际上,您可以在页面加载时添加node
...
<a name="whatever" id="whatever-id" />
并在必要时将其替换为select
和options
。
答案 1 :(得分:0)
没有任何选项的选择的语义是什么?你可能没有选择......
答案 2 :(得分:0)
为什么呢?很可能是因为它的标准大约在10年前定义。 你应该考虑继续......
以下示例。
<强> HTML5 强>
将您的doctype行切换为:
<!DOCTYPE html>
你的元字符串:
<meta charset="UTF-8" />
产生的HTML标记:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8" />
<title>Why select tag need at least one child to be xhtml valid ?</title>
</head>
<body>
Hello World : <select></select>
</body>
</html>
中验证