Parameters 使用saxon将参数传递到样式表 我正在使用net.sf.saxon.TransformerFactoryImpl对多个XML文件进行转换 我正在使用collection函数获取XML文件

Parameters 使用saxon将参数传递到样式表 我正在使用net.sf.saxon.TransformerFactoryImpl对多个XML文件进行转换 我正在使用collection函数获取XML文件,parameters,xslt,saxon,Parameters,Xslt,Saxon,我想做的是,不知道是否可能,将一个变量传递给样式表,其中包含XML文件所在目录的路径。我想从Java代码中传递这个变量 <xsl:for-each select="for $x in(collection('MYVAR?select=*.xml;recurse=yes')) return saxon:discard-document($x)//testsuites"> 只需使用 <xsl:for-each s

我想做的是,不知道是否可能,将一个变量传递给样式表,其中包含XML文件所在目录的路径。我想从Java代码中传递这个变量

    <xsl:for-each 
        select="for $x in(collection('MYVAR?select=*.xml;recurse=yes'))
                    return saxon:discard-document($x)//testsuites">

只需使用

<xsl:for-each select="for $x in(collection(concat($MYVAR, '?select=*.xml;recurse=yes')))return saxon:discard-document($x)//testsuites">

在样式表中使用参数:

<xsl:param name="MYVAR" />
引用样式表中的参数,就像引用任何变量或参数一样:

<xsl:for-each select="for $x in
                        (collection(concat($MYVAR, '?select=*.xml;recurse=yes')))
                          return saxon:discard-document($x)//testsuites">


我想你没有理解我。我要问的是如何使用Java代码将URL放在$MYVAR中这不起作用。我在xslGetDataToXmlJUnit.xsl:FODC0004的第9行遇到错误:文件或目录文件:/Users/admin/Documents/$MYVAR不存在错误消息听起来好像您没有使用建议的
concat($MYVAR',?select=*.xml;recurse=yes')
,而是类似于
'$MYVAR?select=*.xml;recurse=yes'
。如果您仍然有问题,那么发布足够的代码,让我们可以轻松重现问题。这不起作用。我在xslGetDataToXmlJUnit.xsl:FODC0004的第9行遇到错误:文件或目录文件:/Users/admin/Documents/$MYVAR不存在,它对我有效。确保确实正确设置了参数。
$MYVAR
的值应该是'file:/Users/admin/Documents',并且不应该包含“$MYVAR”。很抱歉,我再次检查,xsl:param没有看到transformer.setParameter,我不知道为什么。
<xsl:param name="MYVAR" />
transformer.setParameter("MYVAR", 'file:/some/folder');
<xsl:for-each select="for $x in
                        (collection(concat($MYVAR, '?select=*.xml;recurse=yes')))
                          return saxon:discard-document($x)//testsuites">