2014-09-10 60 views
1

我目前正在研究一個需要兩個xml文件的應用程序,並將它們與Javascript調用的XSLT 2.0進行比較。XSLT - 從javascript傳遞xml文檔作爲參數

我傳遞參數給XSLT從我的JavaScript像這樣:

xsltProcessor.setParameter(null, "testParameter", "I AM A TEST PARAMETER HEAR ME ROAR"); 
xsltProcessor.setParameter(null, "InputDirectory", "file:///D:/WORKSPACE/results_comparison_1.1/testng-results.xml"); 

,我能夠在XSLT,像這樣顯示這些:

<xsl:value-of select="$testParameter" />  
<xsl:value-of select="$InputDirectory"/> 

這給了我這個輸出當我在我的瀏覽器中加載文件時:

I AM A TEST PARAMETER HEAR ME ROARfile:///D:/WORKSPACE/results_comparison_1.1/testng-results.xml 

目前爲止還不錯。

我的問題:

麻煩的是,我有這樣的硬編碼的變量,我想通過外部參數分配:

<xsl:variable name="reportFile" select="document('file:///D:/WORKSPACE/results_comparison_1.1/testng-results.xml')" /> 

我已經試過類似:

<xsl:variable name="reportFile" select="document('$InputDirectory')" /> 

當InputDirectory對應於上面的參數時。但它似乎並不奏效。此外,當我嘗試打印使用這樣的事情是:

<xsl:value-of select="$reportFile" /> 

我沒有錯誤可言的時候我通常會得到一個長期複雜的錯誤信息顯示在屏幕上,這似乎暗示我「上了類型「是不同的。

我想知道如何才能以這種方式從外部參數獲取xml文件?非常感謝。

回答

1

它肯定看起來像問題就在這裏:

<xsl:variable name="reportFile" select="document('$InputDirectory')" /> 

這是告訴它加載一個名爲「$ InputDirectory」的文件。相反,做到這一點:

<xsl:variable name="reportFile" select="document($InputDirectory)" /> 
+0

哦哇我很亂搞那些年齡,我不能相信它,但它做到了。謝謝你的答案JLRishe,我真的很感激:) – kevinh 2014-09-10 13:10:47