我现在有一个XML文件,读起来是这样的:
<filelist>
<file>fileA.xml</file>
<file>fileB.xml</file>
</filelist>
现在有一个名为
dir
的目录,其中包含文件fileX.xml
、fileY.xml
和一堆其他的xml文件。我想将这些文件添加到原始xml文件中,以便我可以得到:<filelist>
<file>fileA.xml</file>
<file>fileB.xml</file>
<file>fileX.xml</file>
<file>fileY.xml</file>
.... <!-- other files -->
</filelist>
有没有一种XSLT的方式可以做到这一点?可以接收一个目录根,能够迭代其中的所有文件吗?然后我就可以调用类似这样的东西:
<xsl:element name = file >
<xsl:copy> <!--whatever file name--> <xsl:copy>
</xsl:element>0
[编辑解决方案]
所有答案都非常有帮助。我最终找到了一个外部解决方案(使用saxon)。我认为将我的解决方案发布在这里可能会对其他人有所帮助,尽管它非常特定于我的情况。
我使用Ant构建Java Web应用程序,并需要在部署之前翻译一些XML文件。因此,我使用 xslt
任务通过将 "saxon9.jar" 添加到类路径中来完成工作。在我的XSL文件中,我只需像这样执行:
<xsl:for-each select="collection('../dir/?select=*.xml')" >
<xsl:element name='file'>
<xsl:value-of select="tokenize(document-uri(.), '/')[last()]"/>
</xsl:element>
</xsl:for-each>