我目前正在处理一个需要两个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文件的?非常感谢。
答案 0 :(得分:1)
看起来问题肯定在这里:
<xsl:variable name="reportFile" select="document('$InputDirectory')" />
这告诉它加载名为&#34; $ InputDirectory&#34;的文档。相反,这样做:
<xsl:variable name="reportFile" select="document($InputDirectory)" />