The*_*heo 5 xslt parameters saxon
net.sf.saxon.TransformerFactoryImpl对多个 XML 文件进行一些转换。我想要做的(但不知道是否可行)是将一个变量传递给包含 XML 文件所在目录路径的样式表。我想从我的 Java 代码传递该变量。
<xsl:for-each
select="for $x in(collection('MYVAR?select=*.xml;recurse=yes'))
return saxon:discard-document($x)//testsuites">
Run Code Online (Sandbox Code Playgroud)
只需使用
<xsl:for-each select="for $x in(collection(concat($MYVAR, '?select=*.xml;recurse=yes')))return saxon:discard-document($x)//testsuites">
Run Code Online (Sandbox Code Playgroud)
请注意,MYVAR 应该是文件 URL,而不是(取决于平台)目录路径。
[编辑] 在你的 XSLT 中你需要
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:param name="MYVAR"/>
...
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
在您的Java代码中使用方法http://download.oracle.com/javase/6/docs/api/javax/xml/transform/Transformer.html#setParameter%28java.lang.String,%20java.lang.Object% 29例如
transformer.setParameter("MYVAR", "file:///C:/dir/subdir/dir");
Run Code Online (Sandbox Code Playgroud)