有人可以告诉我为什么W3C验证服务会说这段代码无效吗?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>this is the title of the web page</title>
</head>
<body>
<form action="formscript.php" method="post">
first name:<input type="text" name="firstname" />
<input type="submit" />
</form>
</body>
</html>
答案 0 :(得分:1)
我尝试了两个代码,验证器说问题代码有效,因为XHTML 1.0 Transitional。
无论如何,这里的问题是你的<fieldset>
内没有<form>
,文字<input>
没有<label>
。
<form action="formscript.php" method="post" name="thisform">
<fieldset>
<label for="firstname">first name:</label>
<input type="text" name="firstname" />
<input type="submit" />
</fieldset>
</form>
不要忘记DOCTYPE
。
答案 1 :(得分:0)
如果在开始时添加了XHTML 1.0 Transitional文档类型声明,则最初发布的标记会生成有效的XHTML 1.0 Transitional文档。
由@adamjansch编辑,使用XHTML 1.0 Strict文档类型声明,它无效,并且可能是使用该文档类型声明进行验证。然后第一条错误消息是“此处不允许使用字符数据”,其中包含可能的原因的一些解释,包括“将文本直接放在文档正文中而不将其包装在容器元素中(例如<p>aragraph</p>
)”。这很接近:问题是在XHTML 1.0 Strict中,form
元素可能只有块级子元素。
这意味着任何文本和文本级标记(如input
)都必须包含在一个或多个块容器中,例如p
,div
,fieldset
或table
。其中,div
是唯一中立的,对渲染没有默认影响:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>this is the title of the web page</title>
</head>
<body>
<form action="formscript.php" method="post">
<div>
first name:<input type="text" name="firstname" />
<input type="submit" />
</div>
</form>
</body>
</html>