我正在使用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