我正在尝试使用远程XSL样式表加载本地XML文件。 IE似乎处理这个很好,但不是Firefox。有没有解决这个问题?
答案 0 :(得分:6)
如果这不是语法问题,我认为这是一个同源政策问题。出于安全原因,Firefox(和also Chrome and IE9)不会使用远程XSLT转换本地XML。它会产生未知错误805303f4
。想象一下,XSLT可以生成恶意JavaScript,嵌入在HTML输出代码中。
解决方案,如果您是开发人员:
我注意到CSS和图像文件可以无限制地保留在服务器上。
答案 1 :(得分:3)
你也可以在firefox上更改此设置:
答案 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.org和http://www.someting.org不一样 - 我的问题是使用第一个变体引用.xsl样式表(没有“www。”部分)。在我添加了“www。”之后。部分到我的.xls样式表网址,一切正常。