XSLT的分组

XML到XSLT转换

数据如下:

<Users>  
   <User id="2" name="ABC" Division="HR"/>   
   <User id="3" name="xyz" Division="Admin"/>   
   <User id="4" name="LMN" Division="Payroll"/>  
   <User id="5" name="PQR" Division="HR"/>  
</Users>

想要这样的效果:

<AllUsers>
<Division value="HR">
<User>
<id>2</id>
<name>ABC</name>
</User>
<User>
<id>5</id>
<name>PQR</name>
</User>
</Division>
<Division value="ADMIN">
<User>
<id>3</id>
<name>XYZ</name>
</User>
</Division>
<Division value="Payroll">
<User>
<id>4</id>
<name>LMN</name>
</User>
</Division>
</AllUsers>

代码的实现方式:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:key name="division" match="User" use="@Division" />
<xsl:template match="Users">
<AllUsers>
<xsl:apply-templates select="User[generate-id(.)=generate-id(key('division',@Division)[1])]"/>
</AllUsers>
</xsl:template>
<xsl:template match="User">
<Division value="@Division">
<xsl:for-each select="key('division', @Division)">
<User>
<id>
<xsl:value-of select="@id" />
</id>
<name>
<xsl:value-of select="@name" />
</name>
</User>
</xsl:for-each>
</Division>
</xsl:template>
</xsl:stylesheet>

转载于:https://www.cnblogs.com/frankzye/archive/2011/05/05/2037684.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值