&引用;“散乱的doctype”;firefox源代码查看器中出现错误
自从我学会将XHTML页面作为XML提供以来,我开始注意到一些奇怪的事情:每当我在Firefox源代码查看器中查看XHTML页面时,DOCTYPE总是被标记为错误。根据我在上面滑动鼠标得到的工具提示,所讨论的错误是“游离的doctype”。从我所理解的,一个“杂散的DOCTYPE”意味着文档中间有一个额外的DOCTYPE。我不属于这里,这里肯定不是这样 这里&apos;例如,此标记将通过验证,并在所有现代浏览器中正确显示:&引用;“散乱的doctype”;firefox源代码查看器中出现错误,firefox,xhtml,doctype,Firefox,Xhtml,Doctype,自从我学会将XHTML页面作为XML提供以来,我开始注意到一些奇怪的事情:每当我在Firefox源代码查看器中查看XHTML页面时,DOCTYPE总是被标记为错误。根据我在上面滑动鼠标得到的工具提示,所讨论的错误是“游离的doctype”。从我所理解的,一个“杂散的DOCTYPE”意味着文档中间有一个额外的DOCTYPE。我不属于这里,这里肯定不是这样 这里&apos;例如,此标记将通过验证,并在所有现代浏览器中正确显示: <?xml version="1.0" encoding="utf
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--FF source viewer will mark the preceding two lines as an error.-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="content-type"
content="application/xhtml+xml; charset=utf-8" />
<title>Sample XHTML Page</title>
</head>
<body>
<p>This is an example.</p>
</body>
</html>
示例XHTML页面
这是一个例子
考虑到这些页面完全通过了验证,并且一个解析错误通常会破坏页面,此错误消息特别奇怪。我是此功能的开发人员。你发现了一个bug。谢谢
视图源代码语法突出显示基于HTML解析器,因为我们的XML解析器不适合此用途,而且XML非常罕见,因此没有必要将资源用于实现适当的XML视图源代码。因此,XML视图源代码功能是对HTML解析器的一种攻击,这一功能无法正常工作。出现错误是因为文件保存为UTF-8 BOM而不是UTF-8。在记事本中打开文件并更改其编码。除了@Public Sphere的答案之外 使用
时也会出现此警告。
对于
、
和
标记(零散的开始标记“html”),可能也会显示相同的警告
要检查UTF-8 BOM是否存在问题:
- 单击“网络”选项卡
- 单击第一个请求
- 在右侧详细信息面板上,单击“响应”选项卡并展开“响应有效负载”
- 现在您将看到原始响应。 doctype行前面有一个红点, 悬停时显示“\ufeff”
grep -rl $'\xEF\xBB\xBF' .
从技术上讲,DOCTYPE声明对于以XML模式解析和呈现页面是可选的,但这并不意味着正如您正确指出的那样,在该位置会出现意外的声明,尽管它对于解析是可选的,但对于验证仍然是必需的(毕竟,验证器如何知道这是严格的XHTML1.0,而不做任何假设?)。如果页面作为HTML提供,我希望看到错误,但它也存在于真正的XHTML页面中。我倾向于认为这是FF中的错误,特别是因为这种行为与W3验证器的输出相反。实际上,只有当页面作为
应用程序/XHTML+xml
;作为