zoukankan      html  css  js  c++  java
  • xslt转换xml常用知识(4)

         这节来谈谈xslt对xml查询分组的问题。平时我们在写sql语句时,经常用到group by ,如果xslt里面也有这样的元素就好了。

    不错,在xslt2.0里面确实有这样的元素了,那就是xsl:for-each-group元素。

    看下例子:

    Code

    xsl:

    Code

    的确有了xsl:for-each-group这个元素,非常方便,不过这是xslt2.0里面的特性。而且非常致命的一点,

    vs2008不支持xslt2.0(查看:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2881720&SiteID=1),

    因此只能用xslt1.0里面的方法了。那么如何做呢?请看下面的例子:

    呈现效果可以在我的文章http://www.cnblogs.com/jackhuclan/archive/2008/08/23/1274058.html中找到,

    xml和xslt样式文件下载:

    https://files.cnblogs.com/jackhuclan/xmlxsl.rar

    根据当时需求,需要根据DescriptionType分组,然后显示在页面右侧,并且左侧显示的右侧不再显示。这个时候考虑算法

    根据DescriptionType分组,然后排除左侧已经显示过的DescriptionType,下载文件里面都有,这里只是对xslt1.0里面

    分组强调一下。

    <xsl:key name="des-search" match="JobDetail//Row" use="DesciptionType"/>

    这一句是列出要分组的字段

    <xsl:for-each select="JobDetail//Row[generate-id()=generate-id(key('des-search',DesciptionType)[1])]">
      
    <xsl:sort select="DesciptionType" data-type="number" order="ascending"/>
      
    <xsl:if test="DesciptionType != $desciptionType">
        
    <xsl:variable name="desciptionType" select="DesciptionType"></xsl:variable>
        
    <xsl:call-template name="jd">
          
    <xsl:with-param name="des1" select="$desciptionType"></xsl:with-param>
          
    <xsl:with-param name="cnode" select="//JobDetail/Row"></xsl:with-param>
        
    </xsl:call-template>
      
    </xsl:if>
    </xsl:for-each>

    这部分是具体的算法,注意一下:

    <xsl:for-each select="JobDetail//Row[generate-id()=generate-id(key('des-search',DesciptionType)[1])]">

    更详细的文章请参考:http://www.oracle.com/technology/global/cn/pub/articles/wang_xslt.html 

  • 相关阅读:
    Jenkins+Ansible+Gitlab自动化部署三剑客(四)--Jenkins Linux shell集成
    Jenkins+Ansible+Gitlab自动化部署三剑客(三)--Jenkins
    腾讯云从业者线上课程(一)--云计算技术架构
    腾讯云从业者线上课程(一)--云计算发展历史
    nmcli 静态方式添加IP地址
    nmcli
    systemctl 控制单元
    ansible组件 Ad-Hoc
    ansible 定义主机用户和密码
    ansible 主机清单 /etc/ansible/hosts
  • 原文地址:https://www.cnblogs.com/jackhuclan/p/1283873.html
Copyright © 2011-2022 走看看