How to get value of unique XML element by using XSLT
我想要XML文档中元素的唯一列表。如果element的出现次数大于1,我希望在输出中出现最后一个出现:
请参考以下XML获取唯一列表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <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> |
转换应输出以下结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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中的示例代码。提前致谢。
使用诱人分组:
为每个fund_by_id
创建一个密钥
通过仅选择ID匹配密钥组中最后一个ID的那些基金来复制每个密钥中的最后一个基金。
1 2 3 4 5 6 7 | <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> |