提问人:Slartibartfast 提问时间:11/8/2013 最后编辑:Slartibartfast 更新时间:10/1/2023 访问量:7546
firefox源代码查看器中的“Stray doctype”错误
"Stray doctype" error in firefox source code viewer
问:
自从我学会了将 XHTML 页面作为 XML 提供后,我开始注意到一些奇怪的事情:每当我在 Firefox 源代码查看器中查看 XHTML 页面时,DOCTYPE 总是被标记为错误。根据我从鼠标悬停中得到的工具提示,有问题的错误是“杂散文档类型”。据我了解,“杂散文档类型”意味着在文档中间有一个额外的 DOCTYPE,它不属于它,这里肯定不是这种情况。
下面是一个示例 - 此标记将通过验证,并在所有现代浏览器中正确显示:
<?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>
考虑到这些页面完美地通过了验证,并且单个解析错误通常会破坏页面,此错误消息尤其奇怪。
答:
9赞
hsivonen
11/19/2013
#1
我是这个功能的开发者。您发现了一个错误。(刚才提交。谢谢。
视图源语法突出显示基于 HTML 解析器,因为我们的 XML 解析器不适合此目的,并且 XML 非常罕见,因此投入资源来实现正确的 XML 视图源没有意义。因此,XML 查看源代码功能是对 HTML 解析器的黑客攻击,这方面不能正常工作。
评论
0赞
marius
1/7/2014
使用 XSL 生成 HTML 的 XML 文档也会出现同样的问题。我注释了标记为“杂散文档类型”的 DOCTYPE,然后我收到了 XSL 行的控制台错误: > InvalidStateError:尝试使用不可用或不再可用的对象 结果是,对于生成 HTML 输出的 XML+XSL 来说,相对链接无法正常工作。加载类似 http://.../file.xml#link 的链接时,该链接不会转到正确的锚点。单击链接地址栏并再次按Enter键,然后就可以工作了。(我也在 Bugzilla 中更新了这个案例)
0赞
marius
1/7/2014
我刚刚测试了Chrome,它也有同样的问题。(FF 26,铬 31.0.1650.63 米)
0赞
9/30/2016
3 年后,这个错误仍然存在于 (Debian GNU/Linux) 中,我在带有 .Firefox ESR 45.4
DTD XHTML Basic 1.1
1赞
Public Sphere
5/31/2020
#2
出现此错误的原因是文件保存为 UTF-8 BOM 而不是 UTF-8。在记事本中打开文件并更改其编码。
0赞
Piemol
2/3/2021
#3
除了@Public球体的回答。
使用 时也会出现此警告。
可能还会对 和 标记(杂散开始标记“html”)显示相同的警告。<!DOCTYPE html>
<html>
<head>
<body>
要检查 UTF-8 BOM 是否是问题所在:
- 点击“网络”选项卡
- 单击第一个请求
- 在右侧详细信息面板上,单击“响应”选项卡,然后展开“响应有效负载”
- 您现在将看到原始响应。 文档类型行前面有一个红点, 悬停时显示“\ufeff”
为了轻松找到可能导致问题的文件,您可以在 Linux 中使用此 grep 查找带有 BOM 的所有文件:
grep -rl $'\xEF\xBB\xBF' .
0赞
Asif
10/1/2023
#4
您需要删除(移至废纸篓)保留其代码副本的文件,然后重新创建文件并粘贴剪裁的代码。
评论
application/xhtml+xml
text/html