为什么这不会在此验证的任何想法:
http://validator.w3.org/#validate_by_input
表单输入标签似乎是错误的但是通过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">
<head>
<title>Test</title>
</head>
<body>
<div class="Header">
<table class="HeaderTable">
<tr>
<td>
<div class="Heading">Test <span class="Standard">Test</span>
</div>
</td>
<td>
<div class="Controls">
<form id="ControlForm" method="get" action="Edit.php">
<input type="submit" name="action" id="Edit" value="Edit" />
<input type="submit" name="action" id="New" value="New" />
</form>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>
答案 0 :(得分:5)
尝试在输入周围添加fieldset
标记。我认为XHTML中表单的概念是它们不能有直接的后代,而不是div,fieldset等。
答案 1 :(得分:3)
正如其他人所说:
【引用】 验证器告诉您隐藏的输入元素不能立即跟随表单标记 - 它需要具有某种容器元素。 [/报价]
(Source)
我猜一个字段集可以提供帮助;见The XHTML DTD:
<!ELEMENT form %form.content;>
<!ENTITY % form.content "(%block; | %misc;)*">
<!ENTITY % misc "noscript | %misc.inline;">
<!ENTITY % misc.inline "ins | del | script">
<!ENTITY % block "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
<!ENTITY % lists "ul | ol | dl">
<!ENTITY % blocktext "pre | hr | blockquote | address">
没有输入:(
答案 2 :(得分:3)
你需要移动
<div class="Controls">
这样 &lt; form 标记内
这很好地验证了
<!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">
<head>
<title>Test</title>
</head>
<body>
<div class="Header">
<table class="HeaderTable">
<tr>
<td>
<div class="Heading">Test <span class="Standard">Test</span></div>
</td>
<td>
<form id="ControlForm" method="get" action="Edit.php">
<div class="Controls">
<input type="submit" name="action" id="Edit" value="Edit" />
<input type="submit" name="action" id="New" value="New" />
</div>
</form>
</td>
</tr>
</table>
</div>
</body>
</html>
答案 3 :(得分:1)
我遇到了同样的问题,我花了一些时间才弄明白。这是w3c验证器最近的变化吗?这只是我确定我的一些页面的表单在过去已经过验证,但是现在他们似乎都遇到了同样问题的错误。
我以前经常这样做:
<div>
<form>
<label></label>
<input />
<label></label>
<input />
<label></label>
<input />
</form>
并获得验证错误,所以现在我只需在所有标签和输入周围添加fieldset或div以使其验证,如下所示:
<div>
<form>
<fieldset>or<div>
<label></label>
<input />
<label></label>
<input />
<label></label>
<input />
</fieldset>or</div>
</form>
似乎工作,但我确信我过去不必这样做......嗯?
答案 4 :(得分:0)
<!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">
<head>
<title>Test</title>
</head>
<body>
<div class="Header">
<table class="HeaderTable">
<tr>
<td>
<div class="Heading">Test <span class="Standard">Test</span>
</div>
</td>
<td>
<form id="ControlForm" method="get" action="Edit.php">
<div class="Controls">
<input type="submit" name="action" id="Edit" value="Edit" />
<input type="submit" name="action" id="New" value="New" />
</div>
</form>
</td>
</tr>
</table>
</div>
</body>
</html>
将你的div放在你的表格中。
答案 5 :(得分:0)
您的输入元素应位于字段集中。这样可以验证并具有使非可视用户代理更容易访问文档的附加好处。
顺便说一下,你的标记有点受到 divitis 的影响。您可以直接在表格单元格上放置类,而不是在其中嵌套div元素(我不打算评论表格的使用情况)。此外,您可以直接设置表单元素的样式,而不是将其嵌套在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">
<head>
<title>Test</title>
</head>
<body>
<div class="Header">
<table class="HeaderTable">
<tr>
<td>
<div class="Heading">Test <span class="Standard">Test</span></div>
</td>
<td>
<div class="Controls">
<form id="ControlForm" method="get" action="Edit.php">
<fieldset>
<input type="submit" name="action" id="Edit" value="Edit" />
<input type="submit" name="action" id="New" value="New" />
</fieldset>
</form>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>