html - W3C验证服务为什么说这不是有效的XHTML?

  显示原文与译文双语对照的内容
0 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> 
时间:原作者:3个回答

0 0

我尝试了两个代码,验证器说问题代码是有效的,如 XHTML 1.0过渡。

不管怎样,问题是你没有 <fieldset> inside,并且文本没有 <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

原作者:
0 0

如果在开始时添加了is文档类型声明,标记( 如初次发布) 将使一个有效的XHTML 1.0转换文档。

由于 @adamjansch, 与 XHTML 1.0严格文档类型声明的编辑,它无效,并且可以能是使用文档类型声明验证的。 然后,第一个错误消息是"这里不允许字符数据",并对可能出现的错误( 包括"不将文本包装在容器元素( 如 <p>aragraph</p> ) 中,直接在文档正文中放置文本) ) 进行了一些解释。 这得到了关闭:问题是,在 XHTML 1.0严格中,form 元素只有块级别子级。

这意味着像 input 这样的文本和文本级别标记必须包装在一个或者多个 block 容器中,比如 pdivfieldset 或者 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> 
原作者:
...