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

使用XSLT自定义拆分XML的技术问询(映射工具场景)

XSLT实现XML Response元素拆分方案

首先看你提供的XML结构,里面在<multimap:Message1>下有<Response>(包含<Employment>)和<Responses>(包含<Term>)节点,我们的目标是把每个带<status>的业务元素(Employment、Term)都独立拆分出来,同时保留原有的命名空间和基础结构。

这里给你写一个针对性的XSLT样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:multimap="http://google.com/z/Z/SplitAndMerge">
    <xsl:output method="xml" indent="yes" encoding="UTF-8"/>

    <!-- 匹配根节点,生成外层容器结构 -->
    <xsl:template match="/multimap:Messages">
        <multimap:Messages>
            <!-- 遍历所有包含status子节点的业务元素 -->
            <xsl:apply-templates select=".//*[status]"/>
        </multimap:Messages>
    </xsl:template>

    <!-- 处理每个独立的业务元素,生成拆分后的消息节点 -->
    <xsl:template match="*[status]">
        <multimap:Message>
            <!-- 保留原元素的父容器(Response/Responses)结构 -->
            <xsl:element name="{name(..)}">
                <xsl:copy-of select="."/>
            </xsl:element>
        </multimap:Message>
    </xsl:template>
</xsl:stylesheet>

关键逻辑说明:

  • 先声明与原XML一致的multimap命名空间,避免转换后命名空间丢失
  • 根节点模板负责生成外层的<multimap:Messages>容器,通过//*[status]精准定位所有带状态节点的业务元素
  • 业务元素模板为每个匹配到的元素创建独立的<multimap:Message>节点,同时完整保留它原来的父容器结构(Response或Responses)

转换后的输出效果:

<?xml version="1.0" encoding="UTF-8"?>
<multimap:Messages xmlns:multimap="http://google.com/z/Z/SplitAndMerge">
   <multimap:Message>
      <Response>
         <Employment>
            <status>OK</status>
         </Employment>
      </Response>
   </multimap:Message>
   <multimap:Message>
      <Responses>
         <Term>
            <status>OK</status>
         </Term>
      </Responses>
   </multimap:Message>
</multimap:Messages>

这样每个Response相关的业务元素都被拆分成了独立的消息节点,完全满足自定义拆分的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:49:43