使用XSLT2.0进行合并时删除重复项

时间:2019-07-18 15:49:27

标签: xslt-2.0

我有一个要求,我需要通过将“ F_NAME:S_Name:L_Name”与“年龄”元素分组将其合并。但是在连接时,我必须排除 重复项。

我使用了for-each-group,然后尝试了Concat函数,代码如下。

<xsl:template match="/">
    <ns0:Parent>
      <xsl:for-each-group select="/ns0:Parent/ns0:child" group-by="ns0:Age">
        <ns0:child>
          <ns0:F_Name>
            <xsl:value-of separator=";" select="current-group()/concat(ns0:S_Name,':',ns0:F_NAME,':',ns0:L_Name)"/>

          </ns0:F_Name>
        </ns0:child>
      </xsl:for-each-group>
    </ns0:Parent>
  </xsl:template>

I / P:

<Parent>
    <child>
        <F_NAME> Alex </F_NAME>
        <S_Name> Mark <S_Name>
        <L_Name> Jay </L_Name>
        <Age> 35 </Age>
    </child>
    <child>
        <F_NAME> Marie </F_NAME>
        <S_Name> Julie <S_Name>
        <L_Name> Kane </L_Name>
        <Age> 35 </Age>
    </child>
    <child>
        <F_NAME> Alex </F_NAME>
        <S_Name> Mark <S_Name>
        <L_Name> Jay </L_Name>
        <Age> 35 </Age>
    </child>
</Parent>

实际输出:

<Parent>
    <Child>
        <Age>35</Age>
        <F_Name>Alex:Mark:Jay;Marie:Julie:Kane;Alex:Mark:Jay</F_NAME>
    </Child>
</Parent>

预期输出:

<Parent>
    <Child>
        <Age>35</Age>
        <F_Name>Alex:Mark:Jay;Marie:Julie:Kane</F_NAME>
    </Child>
</Parent>

1 个答案:

答案 0 :(得分:0)

好吧,如果您使用distinct-values(current-group()/concat(ns0:S_Name,':',ns0:F_NAME,':',ns0:L_Name))而不是current-group()/concat(ns0:S_Name,':',ns0:F_NAME,':',ns0:L_Name),则应该获得唯一的名称。