2011-08-24 52 views
0

欲預加載的XML文檔(稱爲XMLParam)並把它傳遞到另一個文檔(OXML)的XSLT處理,作爲參數,使用的setParameter。傳遞XML文檔(片段)作爲參數來XSLT在鉻

然而,XSLT不處理它作爲一個節點,節點列表或什麼,只是報道[對象元素]

oXML = XMLDoc_load(sXMLURL); 
oXMLParam = XMLDoc_load(sXMLParamURL); 
oXSLT = XMLDoc_load(sXSLTURL); 
var oXSLTProcessor = new XSLTProcessor(); 
oXSLTProcessor.importStylesheet(oXSLT); 
oXSLTProcessor.setParameter(null,"oDocument",oXMLParam.documentElement); 
var oResultDoc = oXSLTProcessor.transformToFragment(oXML, document); 


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:param name="oDocument"/> 
    <xsl:template match="/"><p>Parameter:<xsl:copy-of select="$oDocument"/></p></xsl:template> 

回答

1

考慮要加載作爲參數值文檔的URL傳遞,然後使用XSLT document函數使用XSLT加載文檔。這樣就有可能實現你想要的。

恐怕http://www.w3.org/TR/xslt#top-level-variables並沒有真正具體是什麼樣的類型的處理器需要支持將在從應用程序到一個樣式表通過指定。這聽起來好像Chrome只是在傳入的DOM元素節點上調用toString,然後XSLT可以使用字符串,而不是根據需要使用節點集。

+0

不幸的是文檔($ sURL)在chrome中也不起作用 – Torx