我有文件夹/子文件夹中的文件列表。如何运行单个XSLT来运行文件夹/子文件夹中的所有文件。在saxon命令行中可能吗?
我尝试了以下命令,但不起作用:
java -jar saxon9.jar -o:foldername -xsl:xslfilename.xsl
非常感谢你的帮助。
由于您使用的是Saxon,因此可以使用xslt 2.0和collection
函数。
例如:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="collection(concat('file:///c:/filesarehere', '?select=*.xml;recurse=yes'))">
<!--process nodes-->
</xsl:for-each>
</xsl:template>
如果您想为每个输入文件创建一个具有相应名称的输出文件,那么您可以在命令行上设置-s:inputDir和-o:outputDir,它将处理目录中的所有文件。但这有点不灵活,例如,如果目录中有一些非XML文件要忽略。按照@PhilVallone的建议,使用collection()函数从样式表中控制流程更为灵活。