为什么不在p中嵌套验证为XHTML

<!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>A webpage</title>
</head>
<body>
  <p>
  <form action="something.php" method="get">
    <input type="submit" value="Hello"/>
  </form>
</p>
</body>
</html>

查看当您使用http://validator.w3.org进行尝试时得到的错误消息

除了没有指定字符编码的警告(并且因此假设为UTF-8)之外,主要错误是不允许<p>包含非内联内容。 您可以完全移除<p></p> ,或者将它们移动到<form>

至于'为什么',这是因为它是在模式中定义的,它定义了什么是和什么是无效的XHTML。 如果你看看XHTML定义的这一部分,你会发现<p>只允许包含文本或'inline'(而不是'block')标签。 然而,一个<form>不是'内联'内容,而是'块'内容。

换句话说,表单可以包含段落,但段落不能包含表单。


据此,因为:

第8行,第44列:文档类型不允许元素“form”在这里; 缺少“对象”,“插入”,“删除”,“地图”中的一个开始标记✉上述元素不允许出现在您放置它的上下文中; 其他提到的元素是唯一允许在那里并且可以包含所提到的元素的元素。 这可能意味着你需要一个包含元素,或者可能忘记关闭以前的元素。

此消息的一个可能原因是您已尝试在内联元素(例如“a”,“span”或“font”)内放置块级元素(例如“p”或“table”)。

第9行,第40列:文档类型不允许元素“输入”在这里; 缺少“p”,“h1”,“h2”,“h3”,“h4”,“h5”,“h6”,“div”,“pre”,“address”,“fieldset”,“ins” ,“del”start-tag input type =“submit”value =“Hello”所提到的元素不允许出现在您放置它的上下文中; 其他提到的元素是唯一允许在那里并且可以包含所提到的元素的元素。 这可能意味着你需要一个包含元素,或者可能忘记关闭以前的元素。

此消息的一个可能原因是您已尝试在内联元素(例如“a”,“span”或“font”)内放置块级元素(例如“p”或“table”)。


你不能把表单放在段落中。 这样写:

<body>
  <form action="something.php" method="get">
  <p>
    <input type="submit" value="Hello"/>
  </p>
  </form>
</body>
链接地址: http://www.djcxy.com/p/88837.html

上一篇: Why doesn't form nested in p validate as XHTML

下一篇: why doesn't the xhtml validate