我有以下XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.test.com/AuditTrail.xsl"?>和XSL:
<?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报告并在浏览器中显示它们,并使用远程服务器上托管的样式表进行转换。
发布于 2011-07-09 07:44:37
这能在本地工作吗?我不这么认为,因为XML和XSLT中都有一些错误。
Chrome阻止本地XML和XSLT处理!这是一个问题,或者他们出于安全原因禁用了它。查看此Chrome Bug Report以了解一些变通方法。
IE9禁用了对本地XML和远程XSLT的混合支持。也是出于安全原因!(我没有这个链接)
您的XML需要至少有一个根元素:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.test.com/AuditTrail.xsl"?>
<hello/>并且您的XSLT需要有一些XSLT模板:
<?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服务器上或本地存储(不能混合)。
发布于 2011-07-09 09:18:18
我们有一个桌面应用程序,可以生成XML报告并在浏览器中显示它们,并通过托管在远程服务器上的样式表进行转换
我认为最简单的方法是通过HTTP协议将样式表下载或存储/缓存(最后一个副本)到用户的本地硬盘上(使用该应用程序),然后执行“完全合法”的客户端转换。
https://stackoverflow.com/questions/6627265
复制相似问题