以此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>
树应该有效,但是这不能在浏览器中正确解析。
答案 0 :(得分:57)
除了警告您没有指定字符编码(并因此假设为UTF-8)之外,主要错误是<p>
不允许包含非内联内容。您可以完全删除<p>
和</p>
,也可以将其移至<form>
。
至于“为什么”,这是因为它是如何在模式中定义的,它定义什么是什么,什么是无效的XHTML。如果您查看this section of the XHTML definition,您会看到<p>
仅允许包含文字或'内联'(非'封锁')标记。但是,<form>
计为“阻止”内容而不是“内联”内容。
换句话说,表单可以包含段落,但段落不能包含表单。
答案 1 :(得分:1)
根据this,因为:
第8行,第44列:文档类型 这里不允许元素“形式”;失踪 “对象”,“ins”,“del”,“map”之一 开始标记✉ 提到的元素是不允许的 出现在其中的上下文中 你放了它;另一个提到 元素是唯一的元素 两者都允许,并且可以包含 元素提到。这可能意味着 你需要一个包含元素,或者 可能你已经忘记了 关闭上一个元素。
此消息的一个可能原因是 你试图放一个 块级元素(例如“p”或 “table”)在内联元素中 (例如“a”,“span”或 “字体”)。
第9行,第40列:文档类型 这里不允许元素“输入”; 缺少“p”,“h1”,“h2”,“h3”之一, “h4”,“h5”,“h6”,“div”,“pre”, “地址”,“字段集”,“ins”,“del” 起始标签 input type =“submit”value =“Hello”提到的 元素不允许出现 你放置它的背景; 其他提到的元素是 只有那些都允许在那里 并且可以包含提到的元素。 这可能意味着你需要一个 包含元素,或者可能包含元素 你忘了关闭以前的 元件。
此消息的一个可能原因是 你试图放一个 块级元素(例如“p”或 “table”)在内联元素中 (例如“a”,“span”或 “字体”)。
答案 2 :(得分:-1)
尝试使用W3C Markup Validator,它会告诉您大多数(X)HTML和CSS文档无效。
答案 3 :(得分:-2)
你不能把表格放在段落里面。写得像这样:
<body>
<form action="something.php" method="get">
<p>
<input type="submit" value="Hello"/>
</p>
</form>
</body>
答案 4 :(得分:-3)
我使用您的HTML代码通过validator.w3.org运行测试,结果是您需要交换P和FORM标记,以便将其作为有效的W3C HTML传递。
<!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>
<form action="something.php" method="get">
<p>
<input type="submit" value="Hello"/>
</p>
</form>
</body>
</html>