XSLT - 将xml文档作为参数从javascript传递

时间:2014-09-10 12:50:41

标签: javascript xml xslt xslt-2.0

我目前正在处理一个需要两个xml文件的应用程序,并将它们与从Javascript调用的XSLT 2.0进行比较。

我从我的javascript中将参数传递给XSLT,如下所示:

 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 个答案:

答案 0 :(得分:1)

看起来问题肯定在这里:

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

这告诉它加载名为&#34; $ InputDirectory&#34;的文档。相反,这样做:

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