我正在使用XSLTProcessor类来转换通过AJAX从相同服务器,相同协议检索到的XML文件。用于翻译的XSL文件被硬编码为串联的字符串,并通过jQuery的$ .parseXML()转换为XML。XSLTProcessor:操作不安全?
那么我这样做:
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl); // created inline via jQuery
result = xsltProcessor.transformToDocument(xml); // xml retrieved via AJAX
铬静静地失败。 Firefox在第三行给我这个消息:
SecurityError: The operation is insecure.
任何想法为什么这是一个安全问题?此页面我正在运行JavaScript,并且我是AJAXing的XML文件来自同一个域,都是HTTPS。我是否也必须从服务器上拉取XSL文件,而不是将其内联编写出来?
编辑: 只是为了澄清我没有访问服务器端代码。
我实际上只是使用XSL重命名了几个元素。我试图从XML中取出同一个服务器路径,而不是将其写入内联,同样的错误。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="xelement">
<element><xsl:apply-templates select="@*|node()" /></element>
</xsl:template>
<xsl:template match="xsub-element">
<sub-element><xsl:apply-templates select="@*|node()" /></sub-element>
</xsl:template>
</xsl:stylesheet>
如果有一种简单的方法,而无需使用XSL我会很乐意使用,而不是重命名XML元素。我的目标是重命名元素,而不一定要让XSL工作。
XSLT可能使用'document'函数从不同来源加载XML吗? –
你能告诉我们你的XSLT吗? – JLRishe
上面添加了XSLT。 – user2867288