我今天发现的HTML验证器 - http://html5.validator.nu/ - 说我使用<noscript>
元素是错误的。我的XHTML源代码是这样的:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<body>
<div id="head">
<noscript>
<p>JavaScript is disabled.</p>
</noscript>
...
来自验证程序的错误消息是:
错误:在此上下文中,XHTML元素noscript不允许作为XHTML元素div的子元素。 (抑制此子树中的更多错误。)
可以使用元素noscript的上下文:
- 在HTML文档的head元素中,如果没有祖先noscript元素。
- 如果没有祖先的noscript元素,那么在HTML文档中需要使用短语内容。
元素div的内容模型:
- 流量内容。
现在我继续阅读Mozilla文档,并尝试了解这意味着什么。我找到了一些关于内容类别,流内容,措辞内容,属于每个类别的元素(无论“属于”意味着什么)以及如何使用<noscript>
元素的信息。 (https://developer.mozilla.org/en/HTML/Element/noscript)
我现在知道这一点:<div>
必须包含流内容。必须在措辞内容中出现<noscript>
。这显然不匹配。我该如何管理?尽管如此,许多元素都在流动和短语中。它们似乎不是分离集,所以有些人无法决定,或者我没有得到它。
HTML规范打算如何解决这个问题?
答案 0 :(得分:2)
您不应使用HTML5验证程序来验证您的XHTML 1.1文档。
HTML5规范说明了noscript
element:
不得在XML文档中使用
noscript
元素。
因此在XHTML5中不允许在noscript
内div
,但在XHTML 1.1中允许这样做。
答案 1 :(得分:2)
您不能在XHTML / XML文档中使用“noscript”,因为它会禁用“noscript”内容的解析器,而您无法在XML中执行此操作。无法暂时禁用或关闭解析器。
例如,CSE HTML Validator为XHTML文档生成此消息: XHTML文档不得使用“noscript”元素。这是因为“noscript”的工作方式是在启用脚本时“关闭”解析器,这不能用XML完成。此外,HTML5中不允许使用“noscript”元素。
如果要正确使用“noscript”,则需要将文档类型更改为HTML5(推荐)或HTML4而不是XHTML。
答案 2 :(得分:0)
使用official validator验证您的HTML。以下代码验证完全适合我:
<!DOCTYPE html>
<html>
<head>
<title>I AM YOUR DOCUMENT TITLE REPLACE ME</title>
</head>
<body>
<div id="head">
<noscript>
<p>JavaScript is disabled.</p>
</noscript>
</div>
</body>
</html>
编辑:有趣的是,W3C验证器声称解析器基于您提供的链接上的验证器。
'上传的文档已成功检查为HTML5。这意味着有问题的资源将自己标识为“HTML5”,并且我们成功地对其进行了正式验证。我们用于此检查的解析器实现基于validator.nu(HTML5)。'
http://validator.nu的验证器可能是旧版本。 修改编辑:不,它也可以在那里验证。检查为HTML5和XHTML 1.0 Strict。