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
相关产品推荐
相关产品推荐

