我想要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中的示例代码。提前致谢。
答案 0 :(得分:2)
使用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>