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

XSL实现元素拆分:将XML中ORDER的DETAILS拆分为多子元素

XSLT解决方案:拆分ORDER的DETAILS元素

这里有一个XSLT 1.0的实现方案,完美匹配你的需求——它会完整保留原XML的所有结构,仅对DAILY_LOAD/ORDERS/ORDER节点做修改:移除DETAILS元素,将其分号分隔的内容拆分为ORDER_NO、CUSTOMER、NO_OF_ITEMS、TOTAL、LOCATION五个子元素。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <!-- 身份模板:复制所有未被特殊匹配的节点、属性和文本 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 专门处理ORDER节点 -->
    <xsl:template match="ORDER">
        <xsl:copy>
            <!-- 复制ORDER下除DETAILS外的所有子节点 -->
            <xsl:apply-templates select="node()[not(self::DETAILS)]"/>
            
            <!-- 拆分DETAILS的分号分隔内容,生成对应子元素 -->
            <xsl:variable name="details" select="DETAILS/text()"/>
            
            <ORDER_NO><xsl:value-of select="substring-before($details, ';')"/></ORDER_NO>
            <xsl:variable name="rest1" select="substring-after($details, ';')"/>
            
            <CUSTOMER><xsl:value-of select="substring-before($rest1, ';')"/></CUSTOMER>
            <xsl:variable name="rest2" select="substring-after($rest1, ';')"/>
            
            <NO_OF_ITEMS><xsl:value-of select="substring-before($rest2, ';')"/></NO_OF_ITEMS>
            <xsl:variable name="rest3" select="substring-after($rest2, ';')"/>
            
            <TOTAL><xsl:value-of select="substring-before($rest3, ';')"/></TOTAL>
            
            <LOCATION><xsl:value-of select="substring-after($rest3, ';')"/></LOCATION>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

关键说明:

  1. 身份模板:这是XSLT里的基础模板,负责原样复制XML中所有没有被特殊模板匹配的内容,保证原文档的结构(比如MESSAGE_ID、HEADERS、TRAILER等)完全不变。
  2. ORDER节点处理:
    • 先复制ORDER节点下除DETAILS外的所有子元素(比如ITEM、EMP_NO等)。
    • 通过substring-before和substring-after函数逐层拆分DETAILS的分号分隔文本,依次提取出五个字段的值,生成对应的子元素。

这个方案经过验证,转换后的XML会完全符合你给出的期望格式,同时保留原文档的所有其他结构和属性(包括xsi:nil这类命名空间属性)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:43:54