首页 文章

为什么select标签至少需要在child上才能使xhtml 1.0有效

提问于
浏览
1

为什么select标签需要至少有一个孩子才能有效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 :
<select size="5" style="width: 200px"> </select>
Alls users :
<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控件使此页面有效?)

3 回答

  • 0

    假设这是一个问题的原因是因为你动态添加 option ,我建议也动态添加 select .

    实际上,您可以在页面加载时添加 node ...

    <a name="whatever" id="whatever-id" />

    并在必要时用 selectoptions 替换它 .

  • 1

    没有任何选项的选择的语义意义是什么?你可能没有选择......

  • 0

    为什么?很可能是因为它的标准大约在10年前定义 . 你应该考虑继续......

    以下示例 .


    HTML5

    将您的doctype行切换为:

    <!DOCTYPE html>
    

    你的meta charset线路:

    <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>
    

    随意在http://validator.w3.org/#validate_by_input验证

相关问题