仅使用 Ant 和 XSLT,我想创建一个 XML 文件,它是特定目录中 XML 文件的列表。
Ant 的concat
任务没有完成这项工作,因为我最终得到了一个不是 XML 的列表——即。它没有单个根元素。
我有一个使用该collection()
函数的 XSLT Ant 任务应用的 XSLT 文件。这会产生我想要的结果,但它会尝试对目标目录中的每个文件都这样做——我只想要一个列表。我的 XSLT 正在对目标目录(集合)中的每个文件进行操作——如何限制应用 XSLT 的次数?
这是我到目前为止所拥有的:
XML 文件位于目标目录中c:\tmp
这是我应用于目标目录中文件的 XSL 文件(使用 Ant XSLT 任务);
<xsl:template match="/">
<xsl:call-template name="generatelist" />
</xsl:template>
<xsl:template name="generatelist">
<xsl:result-document href="list.xml">
<xsl:element name="list">
<xsl:element name="dir">
<xsl:for-each
select="collection('file:///C:/tmp?select=*.xml')">
<xsl:element name="file">
<xsl:attribute name="name">
<xsl:value-of select="tokenize(document-uri(.), '/')[last()]" />
</xsl:attribute>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:result-document>
</xsl:template>
这是生成的 XML 列表:
<list>
<dir>
<file name="filename_1.xml"/>
<file name="filename_2.xml"/>
. . .
<file name="filename_n.xml"/>
</dir>
</list>
谢谢。
德鲁
添加我正在使用的 Ant XSLT 任务:
<xslt basedir="${staging_2}"
destdir="${staging_3}" extension=".xml" includes="**/*.xml"
style="create_list.xsl">
</xslt>