处理一个目录下的所有文件,并根据file-name创建一个文件

Process all files in a directory and create a file according to file-name

我有一个有效的 XSLT 转换,我需要将其应用于指定目录中的所有文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:tei ="http://www.tei-c.org/ns/1.0"
   exclude-result-prefixes="xs"
   version="3.0">
   <xsl:strip-space elements="*"/>
   
   <xsl:output method="text" indent="yes"/> 
   <xsl:output omit-xml-declaration="yes"/>
   <xsl:variable name="files" select="collection('C:\Users\KW\Desktop\Interim_56_zerlegt')"/>


 <xsl:template match="/">
    <xsl:result-document href="Interim_56_zerlegt/test.txt" method="text">
Kuerzel; AT/NT; Stelle
<xsl:apply-templates select="//note"></xsl:apply-templates>
    </xsl:result-document>
 </xsl:template>
      
   
   <xsl:template match="//note">
      <xsl:choose>
         <xsl:when test="child::*[1][self::ref[@type='biblical']]">
            <xsl:for-each select="child::*[@type='biblical']/@cRef">
               <xsl:value-of select="."/>
               <xsl:text>;</xsl:text>
            </xsl:for-each>
            <xsl:text></xsl:text>
            <xsl:text>test;</xsl:text>
            <xsl:value-of select="."/>
            <xsl:text>&#10;</xsl:text>
            
         </xsl:when>
      </xsl:choose>
   </xsl:template>
   

  
</xsl:stylesheet>

我有一个包含 56 个文件的文件夹,我想 运行 对其进行此转换。 所以我设法为一个文件 (<xsl:result-document href='Interim_56_zerlegt') 创建了一个文件,现在我需要为其中的“每个文件”执行此操作(技术上只有 XML 但那里没有其他东西)有没有办法要做到这一点?

使用初始模板

   <xsl:param name="files" select="uri-collection('file:///C:/Users/KW/Desktop/Interim_56_zerlegt/?select=*.xml')"/>

   <xsl:template name="xsl:initial-template">
     <xsl:apply-templates select="$files ! doc(.)"/>
   </xsl:template>

并以撒克逊语 (?) 开头,例如 -it.

您还需要将 href="Interim_56_zerlegt/test.txt" 调整为例如href="Interim_56_zerlegt/result-{position()}.txt" 或者 href="{document-uri() => replace('\.xml$', '.txt')}".