Есть ли функция в XSLT, которая может принимать путь к каталогу и возвращает все файлы в нем?
У меня есть 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? что-то, что принимает в корне dir, и умеет итератор через все файлы в нем?? И тогда я мог бы просто называть что-то вроде:
<xsl:element name = file >
<xsl:copy> <!--whatever file name--> <xsl:copy>
</xsl:element>0
[Редактировать-решение]
все ответы были очень полезными. В итоге я нашел внешнее решение (используя саксон). Я думал, что это может быть полезно для других людей, чтобы опубликовать мое решение здесь, хотя это очень специфично для моей собственной ситуации.
Я использую Ant для создания веб-приложения java и вам нужно перевести некоторые 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>