如何对文件夹中的所有文件运行Saxon XSLT



我有文件夹/子文件夹中的文件列表。如何运行单个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()函数从样式表中控制流程更为灵活。

相关内容

  • 没有找到相关文章