【发布时间】:2011-02-15 13:06:30
【问题描述】:
我刚刚尝试在 Opera(版本 10.50)中查看我的网站 http://www.logmytime.de/,它给了我一个“xml 解析失败错误”并拒绝显示网页。
我可以选择“将文档重新解析为 HTML”,然后页面就可以正常工作,但这几乎不能解决我的问题。
奇怪的是,设置一个 HTML(而不是 XTHML)doctype 后仍然出现错误:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
我检查了浏览器的源输出,以确保我没有对 Doctype 犯任何错误我什至在 Firebug 中查看了同一个网页,它显示的 Content-Type 为 text/html; .
那么,为什么 Opera 仍然尝试将我的网页解析为 XML?
谢谢,
阿德里安
编辑: 澄清一下:我不是在问我网页上的错误是什么。我明白为什么这不是有效的 XHTML。但是,我也在使用javascript micro templating engine,它的模板永远不是有效的 XML,这就是为什么我需要浏览器将我的整个网站解析为 HTML,而不是 XHTML。为了演示这一点,我只是在网页中插入了一个示例模板。
<script type="text/html" id="StopWatchTemplate" >
<h1><a href="#" onclick="TimeEntriesList.EditTimeEntry('<#=timeEntryID#>')"><#=currentlyRunning?"Aktueller":"Letzter"#> Stoppuhr-Zeiteintrag</a></h1>
<%-- Stoppuhr - Ende--%>
</script>
在 Opera 中打开页面时,您可以看到模板现在会产生 XML 解析错误,即使页面的 doctype 仍然是 HTML。
编辑 2::只是为了让这一点更清楚:我不是在问为什么我的网页不是有效的 XHTML。我在问为什么 Opera 试图将其解析为 XHTML,尽管 HTML 文档类型。
Edit3::请不要再发布任何答案,我已经在下面找到了这个原因和documented它。
【问题讨论】:
-
您的标记是否有问题(即标签未正确关闭?)我正在尝试通过 w3 验证器运行它,但它现在没有为我加载。
-
“为了证明这一点,我刚刚在网页中插入了一个示例模板。” - 你到底插入了什么,在哪里插入?
-
@M28,但是 XHTML IS XML 和因此任何解析错误都会使浏览器吠叫。
-
@M28:不,但 XHTML 始终是 XML。
-
您的网页也不是有效的 HTML,所以即使 if 您知道如何将其解析为 HTML,这仍然无法解决问题。问题是,您的网页已损坏。解决方案是修复它。真的就是这么简单。事实上,您可能已经修复了十次,就在您编写 cmets 所花费的时间。