用xslt循环xml同一节点的不同子节点

遇到类似以下xml文件时,需要将每年的不同月份分别置于年的节点下,如果用C#的程序语言很容易实现,因为对xslt用的不多,这个还费了我一点心思。
< rows >
    < row  year ="2004"  month ="2" />
    < row  year ="2004"  month ="5" />
    < row  year ="2005"  month ="2" />
    < row  year ="2004"  month ="7" />
    < row  year ="2005"  month ="4" />
    < row  year ="2005"  month ="8" />
</ rows >
最初构思还是定义一个变量用来记录循环,可是对变量的赋值却总是不能执行。浪费了我一个多小时,做完后发现原来非常简单,根本没有其他程序语言的实现那么复杂。写出来方便有需要的朋友使用。
< xsl:template  match ="row"  mode ="Month" >
    < Month  Name ="{@month}"  ImageIndex ="28"  Link ="" />
</ xsl:template >
< xsl:template  match ="row" >
    < xsl:variable  name ="pos"  select ="position() - 1"   />
    < xsl:if  test ="$pos = 0 or ../row[$pos]/@year != @year" >
        < Year  Name ="{@year}"  ImageIndex ="26" >
            < xsl:apply-templates  select ="../row[@year = current()/@year]"  mode ="Month"   />
        </ Year >
    </ xsl:if >
</ xsl:template >

转载于:https://www.cnblogs.com/qingyang/archive/2005/08/23/220542.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值