Firefox和远程XSL样式表

时间:2010-08-06 02:01:45

标签: xml firefox xslt

我正在尝试使用远程XSL样式表加载本地XML文件。 IE似乎处理这个很好,但不是Firefox。有没有解决这个问题?

6 个答案:

答案 0 :(得分:6)

如果这不是语法问题,我认为这是一个同源政策问题。出于安全原因,Firefox(和also Chrome and IE9)不会使用远程XSLT转换本地XML。它会产生未知错误805303f4。想象一下,XSLT可以生成恶意JavaScript,嵌入在HTML输出代码中。

解决方案,如果您是开发人员:

  • 在服务器端进行转换,并为用户提供指向输出HTML的链接
  • 在本地(在后台)下载XML和XSLT,然后为用户打开XML

我注意到CSS和图像文件可以无限制地保留在服务器上。

答案 1 :(得分:3)

你也可以在firefox上更改此设置:

  1. about.config
  2. 接受安全警告(并注意: - ))
  3. 查找security.fileuri.strict_origin_policy
  4. 将其设为false

答案 2 :(得分:2)

要检查的一些事项:

检查您是否在服务器端使用正确的mime类型和字符编码。 Firefox在加载本地文件时会自行编码,但在服务器请求时会尊重服务器的mime-type / encoding声明。

我看过一些帖子(例如here)声称Firefox不支持使用绝对路径加载远程XSL模板。我对此表示怀疑,并怀疑上面的mime问题更可能导致他们相信这一点,但可能值得直接向Mozilla询问这个问题。

最后,您是否测试了XSL样式表在本地拉出时的效果?你能否证实它确实是XSLT,而不是微软奇怪的IE-XSL变种之一,如WD-XSL?

答案 3 :(得分:2)

关于原始问题:如果在打开XML文档时出现Firefox错误:

Error loading stylesheet: An unknown error has occurred (805303f4)

如果在xml-stylesheet处理指令中使用绝对URL引用XSLT样式表到不同于XML文档站点的站点,那么一个解决方案可以是让Firefox使用CORS来安装Force CORS附加组件。当然,这要求XSLT文件的服务器也支持CORS。

这对我有所不同(对于使用绝对URL引用远程XSLT的本地XML文件的情况)。

通过设置about:config:

,我在Firefox中关闭了文件URI的同源策略
security.fileuri.strict_origin_policy = false

但是在这种情况下没有做到这一点(在这种情况下甚至可以设置为true)。

答案 4 :(得分:1)

我遇到了Firefox正确执行转换的问题,但是能够通过添加XHTML命名空间来修复它。

有关详细信息,请参阅以下内容:How can I make XSLT work in chrome?

答案 5 :(得分:0)

我已经解决了完全相同的问题 - 它似乎与“同源政策”有某种关系。域http://someting.orghttp://www.someting.org不一样 - 我的问题是使用第一个变体引用.xsl样式表(没有“www。”部分)。在我添加了“www。”之后。部分到我的.xls样式表网址,一切正常。

相关问题