0

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

2 回答 2

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.

于 2012-10-02T12:56:52.727 回答
0

如果在开始时添加了 XHTML 1.0 过渡文档类型声明,则最初发布的标记会生成有效的 XHTML 1.0 过渡文档。

正如@adamjansch 所编辑,使用 XHTML 1.0 Strict 文档类型声明,它是无效的,并且可能是使用该文档类型声明进行了验证。然后第一条错误消息是“这里不允许使用字符数据”,并解释了一些可能的原因,包括“将文本直接放在文档的正文中,而不将其包装在容器元素(例如 a <p>aragraph</p>)中”。这接近了:问题是在 XHTML 1.0 Strict 中,一个form元素可能只有块级子级。

这意味着任何文本和文本级标记都input必须包装在一个或多个块容器中,例如pdivfieldsettable。其中,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> 
于 2012-10-02T14:42:59.150 回答