首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果XML是本地的而XSL在远程服务器上,则IE9和Chrome不使用XSL呈现XML

如果XML是本地的而XSL在远程服务器上,则IE9和Chrome不使用XSL呈现XML
EN

Stack Overflow用户
提问于 2011-07-09 00:11:17
回答 2查看 16.8K关注 0票数 8

我有以下XML:

代码语言:javascript
复制
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.test.com/AuditTrail.xsl"?>

和XSL:

代码语言:javascript
复制
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <html>
        <head><title>Test</title></head>
    </html>
</xsl:stylesheet>

这在IE8上运行良好,但在IE9或Chrome上就不行了。我读到过,如果XML源文件在本地机器上,IE9似乎禁止从远程服务器加载XSL。有没有办法让IE9和Chrome在不影响浏览器安全设置的情况下将远程XSL文件应用到本地XML文件?我们有一个桌面应用程序,它生成XML报告并在浏览器中显示它们,并使用远程服务器上托管的样式表进行转换。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-09 07:44:37

这能在本地工作吗?我不这么认为,因为XML和XSLT中都有一些错误。

Chrome阻止本地XML和XSLT处理!这是一个问题,或者他们出于安全原因禁用了它。查看此Chrome Bug Report以了解一些变通方法。

IE9禁用了对本地XML和远程XSLT的混合支持。也是出于安全原因!(我没有这个链接)

您的XML需要至少有一个根元素:

代码语言:javascript
复制
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.test.com/AuditTrail.xsl"?>
<hello/>

并且您的XSLT需要有一些XSLT模板:

代码语言:javascript
复制
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <html>
    <head><title>Test</title></head>
    </html>
</xsl:template>

</xsl:stylesheet>

有了这个修正,这个例子将适用于IE8和火狐。

在Chrome中,XML和XSLT需要在XML服务器上。在IE9中,两者都需要在IE9服务器上或本地存储(不能混合)。

票数 7
EN

Stack Overflow用户

发布于 2011-07-09 09:18:18

我们有一个桌面应用程序,可以生成XML报告并在浏览器中显示它们,并通过托管在远程服务器上的样式表进行转换

我认为最简单的方法是通过HTTP协议将样式表下载或存储/缓存(最后一个副本)到用户的本地硬盘上(使用该应用程序),然后执行“完全合法”的客户端转换。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6627265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档