僅使用Ant和XSLT,我想創建一個XML文件,該文件是特定目錄中XML文件的列表。如何使用Ant和XSLT創建一個僅包含目標目錄中文件列表的XML文件?
Ant的concat
任務不會完成這項工作,因爲我最終得到的不是XML的列表 - 即。它沒有單個根元素。
我有一個使用XSLT Ant任務的XSLT文件,它使用collection()
函數。這產生了我想要的結果,但它試圖爲目標目錄中的每個文件這樣做 - 我只需要一個列表。我的XSLT正在目標目錄(集合)中的每個文件上運行 - 我如何限制XSLT應用的時間點數量?
這是我到目前爲止有:
XML文件在目標目錄c:\tmp
這是我申請的文件在目標目錄(使用Ant的XSLT任務)XSL文件;
<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>
因此,有似乎是沒有錯的XSLT,問題是在Ant代碼調用它。你能發佈你的build.xml的相關片段嗎? –
感謝您的快速響應,伊恩 - 我已經添加了XSLT任務。 – Drew
當XML文件處於相對路徑(例如,在$ {BUILDDIR} /文件而不是C:\ Tmp)時,你會如何工作?我試過類似'collection(iri-to-uri('./ files /?select = *。xml')',但那不是。 – Scribblemacher