You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XSLT按逗号分隔的fileURL批量生成独立XML文件

XSLT批量拆分XML实现方案

本方案依赖XSLT 2.0及以上版本特性,需使用支持该版本的处理器(如Saxon)运行,默认的Xalan等1.0版本处理器无法执行

以下是可直接运行的完整XSLT代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 身份复制模板:默认全量复制所有节点、属性,不做修改 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 单独匹配fileURL字段的value节点,替换为当前处理的单路径 -->
    <xsl:template match="property[name='fileurl']/value">
        <xsl:param name="currentFileUrl" tunnel="yes"/>
        <xsl:copy>
            <xsl:value-of select="$currentFileUrl"/>
        </xsl:copy>
    </xsl:template>

    <!-- 处理入口:匹配根节点启动逻辑 -->
    <xsl:template match="/">
        <!-- 读取原始多路径字符串 -->
        <xsl:variable name="rawUrlStr" select="//property[name='fileurl']/value"/>
        <!-- 拆分字符串、去除每个路径前后空格、过滤掉末尾逗号产生的空值 -->
        <xsl:variable name="validUrlList" select="tokenize($rawUrlStr, ',') ! normalize-space(.)[. != '']"/>
        
        <!-- 遍历每个合法路径生成独立XML文件 -->
        <xsl:for-each select="$validUrlList">
            <xsl:variable name="currentSingleUrl" select="."/>
            <!-- 提取PDF文件名作为输出XML的文件名,可根据业务需求调整命名规则 -->
            <xsl:variable name="outputFileName" select="replace(tokenize($currentSingleUrl, '\\')[last()], '\.pdf$', '.xml')"/>
            <xsl:result-document method="xml" indent="yes" href="{$outputFileName}">
                <!-- 隧道参数传入当前单路径,触发全量XML复制逻辑 -->
                <xsl:apply-templates select="/">
                    <xsl:with-param name="currentFileUrl" select="$currentSingleUrl" tunnel="yes"/>
                </xsl:apply-templates>
            </xsl:result-document>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

核心逻辑说明

  • 用隧道参数传递当前处理的单路径,无需逐层传参即可在深层节点匹配模板中获取当前值
  • 拆分路径后做了空白处理和空值过滤,避免原字符串末尾逗号产生无效文件
  • 默认输出XML文件名为对应PDF文件名替换后缀为xml,如需调整输出路径或命名规则,修改href属性的取值逻辑即可

运行示例

以Saxon处理器为例,命令行执行命令:
java -jar saxon9he.jar -s:输入的工单XML文件路径 -xsl:上述XSLT文件路径


内容的提问来源于stack exchange,提问作者Rickard Hansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:57:02