使用外部XSL样式表呈现本地下载的XML文件的回退策略

时间:2012-05-02 10:09:03

标签: css xml firefox xslt cross-domain

在我们的协作内部,我们使用有关我们实验的状态信息交换XML文件。这些XML文件的来源是一个中心网站,我们希望使用XSL样式表来呈现文件。当协作者将XML文件下载到她的本地计算机并尝试在Firefox中打开该文件时(或者看起来不像Safari),浏览器由于跨域冲突而拒绝加载现在的外部XSL文件。这种行为是可以存活的,问题是许多浏览器而不是显示有用的原始XML会显示错误:

Error loading stylesheet: An unknown error has occurred
(805303f4) http://user.web.cern.ch/user/grl_xslt/grl.xsl

有没有办法告诉浏览器,如果XSL文件不可用,请显示原始XML或应用另一个基于CSS的样式表?

1 个答案:

答案 0 :(得分:1)

您可以考虑将服务器配置为允许访问,例如当我加载包含内容的本地文件时

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="http://home.arcor.de/martin.honnen/cdtest/test2012050101.xsl"?>
<root>
  <foo>
    <bar>test</bar>
  </foo>
</root>

使用Firefox 12时,它会应用远程样式表,因为该目录的服务器配置为允许使用HTTP标头Access-Control-Allow-Origin "*"进行跨源访问。 https://developer.mozilla.org/en/HTTP_access_control

但请注意,我在Opera中得到的结果不同,它会显示文档树,说明找不到相关的样式表。

Chrome拒绝访问外部样式表是不安全的。