XHTML Strict验证

5

实际上有两个问题,为什么这些代码不能验证为XHTML 1.0 Strict。XHTML 1.0 Strict是项目要求。

第二行代码导致了问题。

文档类型不允许在此处使用"input"元素;缺少其中一个"p"、"h1"、"h2"、"h3"、"h4"、"h5"、"h6"、"div"、"pre"、"address"、"fieldset"、"ins"、"del"起始标记。

<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="max_file_size" value="1048576" />
<table><tr><td><b>Image location: </b></td><td><input type="file" name="file" size="30"/></td></tr>
<tr><td><b>Caption: </b></td><td><input type="text" name="caption" size="30"/></td></tr>
<tr><td><input name="submit" type="submit" value="Upload" /></td><td>*(png, jpeg, jpg and gif files &lt; 1mb)</td></tr></table>
</form>

对于第2行和第3行

文档类型不允许在此处使用 "input" 元素;缺少其中一个 "p"、"h1"、"h2"、"h3"、"h4"、"h5"、"h6"、"div"、"pre"、"address"、"fieldset"、"ins" 或 "del" 的开始标记。

<form action="#">
    <input type="text" size="30" name="query"  value="" onkeypress="return disableEnterKey(event)" />
    <input type="button" name="searchButton" value="Search" onclick="loadResults(this.form)" />
</form>

1
一个要求?我喜欢你的项目!世界需要更多这样的项目。 :) - jalf
3个回答

6
您需要将表单输入放置在 <fieldset> 或其他块级标签中。<input> 元素是内联表单元素,而内联元素不能出现在块级上下文中。请尝试:
<fieldset>
   <input ... />
<fieldset>

不,他可以将其放置在以下任何标签中:“p”,“h1”,“h2”,“h3”,“h4”,“h5”,“h6”,“div”,“pre”,“address”,“fieldset”,“ins”,“del”。 - strager
2
这就是为什么它说“或其他块标记”的原因。 - Andy
没错,这就是为什么我说“或其他块级标记”的原因。但是考虑到他的操作,fieldset 是最合适的选择。 - John Feminella
如果您将使用 fieldset,请确保为 strict 添加图例。 - Brandon Frohbieter

5
正如消息所述,您不能将输入元素作为表单的直接子级。它必须包含在以下任一元素之一中:"p"、"h1"、"h2"、"h3"、"h4"、"h5"、"h6"、"div"、"pre"、"address"、"fieldset"、"ins"、"del"中。
最简单的解决方法可能是将它们放在 "p"、"div" 或 "fieldset" 元素中。

2
XHTML strict要求您不直接将输入元素放在表单内,您可以通过将输入元素放置在验证器建议的任何块级元素中来修复错误。请尝试像这样做:
<form action="#">
    <div>
        <input type="text" size="30" name="query"  value="" onkeypress="return disableEnterKey(event)" />
        <input type="button" name="searchButton" value="Search" onclick="loadResults(this.form)" />
    </div>
</form>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接