处理目录中的所有文件,并根据文件名创建一个文件



我有一个有效的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:UsersKWDesktopInterim_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开头Saxon(?(。

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

最新更新