如何通过使用XSLT来获得独特的XML元素的值(How to get value of unique

2019-10-19 17:05发布

我想从XML文档元素的唯一列表。 如果要素的发生超过1,我想在我的输出中最后一次出现:

请参考为获得独特的名单下面的XML:

<Organization>
    <Fund>
      <id>001</id>
      <name>ABC Ltd</name>
    </Fund>
    <Fund>
      <id>002</id>
      <name>DEF Limited</name>
    </Fund>
    <Fund>
      <id>001</id>
      <name>ABC Ltd.</name>
    </Fund>
    <Fund>
      <id>002</id>
      <name>DEF Corporation</name>
    </Fund>
    <Fund>
      <id>003</id>
      <name>XYZ LLC.</name>
    </Fund>
 </Organization>

变换应该输出以下结果:

<Organization>
    <Fund>
      <id>001</id>
      <name>ABC Ltd.</name>
    </Fund>
    <Fund>
      <id>002</id>
      <name>DEF Corporation</name>
    </Fund>
    <Fund>
      <id>003</id>
      <name>XYZ LLC.</name>
    </Fund>
 </Organization>

*请注意:id为001和002在基金的姓名标签的变化。

需要XSLT1示例代码。 提前致谢。

Answer 1:

使用muenching分组:

为每个fund_by_id的关键

通过只选择其ID的键组的最后一个ID相匹配的资金从每个键复制最后一个基金。

<xsl:key name="funds_by_id" match="Fund" use="id"/>
<xsl:template match="Organization">
  <Organization>
      <xsl:copy-of select="Fund[generate-id() = 
                generate-id(key('funds_by_id',id)[last()])]"/>
  </Organization>
</xsl:template>


文章来源: How to get value of unique XML element by using XSLT