xhtml - 为什么嵌套在p中的表单不验证为XHTML

标签 xhtml forms

以这个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的架构中定义的方式。如果您查看this section of the XHTML definition,您会看到<p>仅允许包含文本或“行内”(而不是“阻止”)标签。但是, <form> 算作“阻止”内容,而不算作“内联”内容。

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

关于xhtml - 为什么嵌套在p中的表单不验证为XHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1022041/

相关文章:

ajax - 使用 jquery-ajax 在多个表单中提交一个表单

mysql - 在 Laravel 5.2 中如何从 html 表单获取输入并将其存储在数据库中?

java - w3c HTML validator 上使用的 JTidy (HTML-Tidy) 配置

css - 与 Firefox 和 Chrome 相比,IE 中的 Div 高度不同

xslt - 将 XHTML 转换为 Word ML

php - 根据用户选择在页面上包含不同的 mysql 数据

php - 提交按钮呈现在表数据下。我只想要一个表单提交按钮

html - 如何从 float 图像中删除多余的边距底部?

html - 内联元素中的 block 级元素

javascript - 取消订阅按钮后,表单的事件监听器不起作用