我刚刚通过w3c验证服务(http://validator.w3.org/check)运行了这个简单的代码.这是我正在运行的代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
>
<html lang="en">
<head>
<title><!-- Insert your title here --></title>
</head>
<body>
<form name="testform" action="/" method="post">
<input type="text" name="testfield">
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我在输入字段上收到以下错误:
第10行,第40列:文档类型不允许元素"INPUT"; 缺少"P","H1","H2","H3","H4","H5","H6","PRE","DIV","ADDRESS"开始标记之一
我没有看到它有什么问题.有任何想法吗?
问题在于如何FORM在DTD中定义元素:
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
Run Code Online (Sandbox Code Playgroud)
因此,它可以有%block(除了FORM)或SCRIPT元素.
并%block定义为:
<!ENTITY % block
"P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
Run Code Online (Sandbox Code Playgroud)
其余的:
<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
<!ENTITY % list "UL | OL">
<!ENTITY % preformatted "PRE">
Run Code Online (Sandbox Code Playgroud)
由于您的表单不包含任何直接子项,因此页面验证失败.