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

XSLT处理XML时按父节点BXYI范围去重ITEM节点的问题求助

XSLT处理XML时按父节点BXYI范围去重ITEM节点的问题求助

各位大佬好,我现在碰到一个XSLT处理XML的去重难题,想请大家帮忙看看:

我的需求是这样的:

  • 需要移除BXYI父节点下,拥有相同N11和AR值的重复ITEM段
  • 如果多个ITEM的N11和AR值相同,只保留其中一个即可;但如果某个ITEM带有子节点,那就要只保留这个带子节点的ITEM,删掉其他重复的同参数ITEM

我目前用的XSLT逻辑大体是能工作的,但遇到了一个问题:在我提供的输入示例里,第一个N11=003且AR=170的ITEM被错误删除了——可这个ITEM和最后出现的同参数ITEM属于不同的BXYI父节点啊!我的核心需求是只在各自的父节点BXYI范围内判断重复,不能跨BXYI节点去重,麻烦各位帮忙看看怎么调整我的XSLT?

输入示例

<?xml version="1.0" encoding="UTF-8"?>
<D02X001>
    <DOC BEGIN="1">
        <DC40 SEGMENT="1">
            <NAM>DC40</NAM>
        </DC40>
        <BXYH SEGMENT="1">
            <LDAT>date</LDAT>
            <!-- 省略其他内容 -->
        </BXYH>
        <!-- 第一个BXYI节点 -->
        <BXYI SEGMENT="1">
            <ITEM SEGMENT="1">
                <N11>003</N11>
                <AR>170</AR>
                <!-- 这个ITEM没有子节点 -->
            </ITEM>
            <ITEM SEGMENT="1">
                <N11>002</N11>
                <AR>150</AR>
                <SUBITEM SEGMENT="1">
                    <!-- 这个ITEM带有子节点 -->
                </SUBITEM>
            </ITEM>
        </BXYI>
        <!-- 第二个BXYI节点 -->
        <BXYI SEGMENT="1">
            <ITEM SEGMENT="1">
                <N11>003</N11>
                <AR>170</AR>
                <!-- 这个ITEM属于另一个BXYI,不该和第一个BXYI里的同参数ITEM互斥 -->
            </ITEM>
        </BXYI>
    </DOC>
</D02X001>

备注:内容来源于stack exchange,提问作者Padd T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:12:59