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

使用XSLT 1.0动态添加XML标签并实现Creditor条目去重咨询

XSLT 1.0 按AddressBookUID去重生成PolicyContactRoles节点实现方案

核心实现逻辑

XSLT 1.0 中针对指定字段去重需使用 Muenchian分组法,具体实现步骤如下:

  1. 定义索引key,将所有Creditor节点按Contact/AddressBookUID字段分组
  2. 筛选每个分组下的第一个Creditor节点,即可实现按UID去重
  3. 对筛选后的节点复用原有生成Entry的模板即可

完整XSLT代码

<!-- 首先在xsl:stylesheet根节点下新增key定义 -->
<xsl:key name="creditor-by-uid" match="Creditor" use="Contact/AddressBookUID" />

<xsl:template match="PolicyContactRoles">
  <xsl:copy>
    <!-- 仅选择每个UID分组下第一个出现的Creditor节点,实现去重 -->
    <xsl:apply-templates select="//Creditor[generate-id() = generate-id(key('creditor-by-uid', Contact/AddressBookUID)[1])]" mode="pcr"/>
  </xsl:copy>
</xsl:template>

<xsl:template match="Creditor" mode="pcr">
    <Entry>
               <AccountContactRole>
                  <Subtype>Creditor_De</Subtype>
                  <AccountContact>
                     <Contact>
                        <xsl:copy-of select=".//AddressBookUID"/>
                     </Contact>
                  </AccountContact>
               </AccountContactRole>
               <Subtype>PolicyCreditor_De</Subtype>
      </Entry>
</xsl:template>

逻辑说明

  • key('creditor-by-uid', Contact/AddressBookUID) 会返回所有和当前节点AddressBookUID相同的Creditor节点集合
  • generate-id() 会为每个节点生成唯一标识,通过对比当前节点ID和同分组第一个节点的ID,即可筛选出每个UID对应的首个节点,自动跳过后续重复节点
  • 原有节点生成逻辑无需修改,即可输出符合要求的PolicyContactRoles结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:48:04