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

Dun*_*can 30 forms xhtml

以这个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>
Run Code Online (Sandbox Code Playgroud)

树应该有效,但是这不会在浏览器中正确解析.

Chr*_*isW 57

查看使用http://validator.w3.org尝试时获得的错误消息

除了警告您没有指定字符编码(并因此假设为UTF-8),主要错误是<p>不允许a 包含非内联内容.您可以删除<p></p>彻底,或者,移动它们里面<form>.

至于"为什么",这是因为它是如何在模式中定义的,它定义什么是什么和什么是无效的XHTML.如果您查看XHTML定义的这一部分,您将看到<p>只允许包含文本或"内联"(而非"块")标记.但是,<form>将"阻止"内容计为"内联"内容.

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

  • +1也出于同样的原因.其他人就像是"是的,它根据validator.w3c.org没有验证 (2认同)