XSLT: ¿Cómo obtener nombres de archivo de un directorio determinado?
¿Existe una función en XSLT que puede tomar una ruta de directorio y devolver todos los archivos que contiene?
Tengo un archivo xml que ahora se lee así
<filelist>
<file>fileA.xml</file>
<file>fileB.xml</file>
</filelist>
Ahora, hay un directorio llamadodir
, tiene archivosfileX.xml
, fileY.xml
y un montón de otros archivos xml en él. Quiero agregar estos archivos al archivo xml original, para poder obtener:
<filelist>
<file>fileA.xml</file>
<file>fileB.xml</file>
<file>fileX.xml</file>
<file>fileY.xml</file>
.... <!-- other files -->
</filelist>
¿Hay una forma XSLT de hacer esto? ¿Algo que toma una raíz de directorio y puede iterar a través de todos los archivos que contiene? Y luego podría llamar algo como:
<xsl:element name = file >
<xsl:copy> <!--whatever file name--> <xsl:copy>
</xsl:element>0
[Editar-solución]todas las respuestas fueron muy útiles. Terminé encontrando una solución externa (usando saxon). Pensé que podría ser útil para otras personas publicar mi solución aquí, aunque es muy específica para mi propia situación.
Uso Ant para crear una aplicación web java y necesito traducir algunos archivos xml antes de la implementación. Por lo tanto, estaba usando laxslt
tarea para hacer el trabajo agregando el "saxon9.jar" en el classpath. Y en mi archivo xsl, acabo de hacer algo como esto:
<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>