1

我有一个模板,每个页面都像这样开始:

<?xml version="1.0" encoding="utf-8"?>
<!-- blah blah-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>

产生错误:

无法显示 XML 页面 无法使用样式表查看 XML 输入。请更正错误,然后单击“刷新”按钮,或稍后重试。


服务器不理解请求,或者请求无效。错误处理资源' http://www.w3.org/TR/xhtm ...

在 IE 上,因为W3C 已停止提供 DTD

解决此问题的正确方法是什么?

4

4 回答 4

1

可能的解决方案

我上传了两个文件供您查看:

  1. 作为 HTML 文件:试试看,标题是text/html.
  2. 当 XML 文件 试一试时,标题是text/html.

第一个适用于所有浏览器。第二个将在 IE 中失败(并在其他人中工作),因为它忽略了服务器的标头。原因:*.xml文件名部分的结尾。这是 IE 的错误行为,但我们必须处理它。如果您的文件名以 xml 结尾,或者您的服务器将其作为 application/xml 发送,则更改这些设置。

背景

您引用的资源标识符不是资源标识符。它是一个唯一标识符,可以说是一个占位符。在提供 HTML 的情况下(不管在这种情况下是 XHTML),它从来都不是用来下载的。这是行为不端的IE。

您提到的帖子表明他们可能会将资源脱机。DTD 仍然在线。对于其他标准,他们使用不同的方法,其中资源不在与标识符相同的位置在线(人们对命名空间有同样的问题:它不是资源,而是标识符)。

这不是 XML 的恐怖,而只是 IE 的奇怪行为。要使用 IE 和 XHTML,您必须将其text/xml用作 MIME 类型。如果你在本地运行它,你会得到这个错误。尝试以不同的方式提供服务。

注意:在您问之前:XML 规范声明不应下载 DTD,而应将其视为唯一 ID。仅用于验证 XML 下载资源是好的,但标准说资源 ID 和实际资源不需要相同。

于 2009-10-15T13:48:01.150 回答
0

IE 根本不支持 XHTML。

它应该在其 DTD 目录中包含该 DTD。浏览器不应该实际下载 DTD(出于实际原因,规范愚蠢地允许这样做)。

于 2009-11-19T00:25:17.537 回答
0

用户需要安装以下更新来解决问题:

http://support.microsoft.com/kb/973687/

于 2010-11-14T22:09:47.393 回答
0

我发现一个帖子说类似的事情是由于权限问题。

您可能想在 IE 中尝试以下操作:

嗨 Karl, 只是猜测,可能是什么问题.. 您的 IE 的安全设置导致此错误。如果您检查 Internet 选项 -> 安全性,您将看到一个选项“跨域访问数据源”。它通常被禁用。请启用它,看看它是否有效..

问候, 穆库尔

来源: http: //www.stylusstudio.com/xsllist/200412/post41070.html

我不确定此选项会引发哪些安全问题。

于 2009-10-15T13:55:56.407 回答