分组基于属性

时间:2014-04-01 08:50:35

标签: xml xslt

我想要XML文档中唯一的元素列表。如果元素的出现次数大于1,我想在输出中出现最后一次:

请参阅以下XML获取唯一列表:

<Organization>
   <Fund id="F01" name="HighVista I Ltd Partnership"/>
   <Fund id="F01" name="HighVista II Limited Partnership"/>
   <Fund id="F02" name="HighVistaLand I, Ltd."/>
   <Fund id="F02" name="HighVistaLand II, Ltd."/>
   <Fund id="F03" name="HighVista III Limited Partnership"/>
</Organization>

转换应输出以下结果:

<Organization>
   <Fund id="F01" name="HighVista II Limited Partnership"/>
   <Fund id="F02" name="HighVistaLand II, Ltd."/>
   <Fund id="F03" name="HighVista III Limited Partnership"/>
</Organization>

*请注意基金名称属性的更改,ID为F01和F02。

需要XSLT1.0中的示例代码 - 提前致谢。

1 个答案:

答案 0 :(得分:0)

您之前的帖子和How to get value of unique XML element by using XSLT中的答案适用,只需根据属性<xsl:key name="by-id" match="Fund" use="@id"/>定义密钥,然后使用<xsl:copy-of select="Fund[generate-id() = generate-id(key('by-id', @id)[last()])]"/>。您应该能够从之前的完整解决方案中推断出其他内容。