为什么W3C验证服务会说这是无效的XHTML?

为什么W3C验证服务会说这是无效的XHTML?,html,forms,input,validation,Html,Forms,Input,Validation,有人能告诉我为什么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

有人能告诉我为什么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> 

这是网页的标题
名字:

我尝试了这两种代码,验证器说问题代码作为XHTML 1.0是有效的

无论如何,这里的问题是您的
中没有
,而文本
中没有


名字:

不要忘记
DOCTYPE

如果在开始时添加了XHTML1.0过渡文档类型声明,则最初发布的标记将生成有效的XHTML1.0过渡文档

正如@adamjansch编辑的那样,使用XHTML1.0严格文档类型声明,它是无效的,可能是使用该文档类型声明验证的。然后,第一条错误消息是“此处不允许使用字符数据”,并解释了可能的原因,包括“将文本直接放入文档正文,而不将其包装在容器元素中(例如
aragraph

)”。这很接近:问题是在XHTML1.0Strict中,
表单
元素可能只有块级子元素

这意味着任何文本和文本级标记,如
input
,都必须包装在一个或多个块容器中,如
p
div
字段集
、或
。其中,
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> 

这是网页的标题
名字:

您能更新您的问题并指出验证器给您的错误吗?
标签
元素虽然有用,但与验证问题无关。而
fieldset
只是可能的块级包装之一。如果使用,则需要“图例”子元素。您提出的解决方案中还存在其他标记错误(其中一些错误在原始解决方案中不存在),您可以通过尝试验证代码看到这一点。