导航

XSLT中的排序

Posted on 2007-09-05 14:35  鸡尾虾的壳  阅读(249)  评论(0编辑  收藏  举报

问题:某个元素可能出现多次,其孙子节点中存在一个seq域。此多个元素中的seq的值不一定具有某种顺序,而且值不一定连续。可能四个元素其对应的seq值是4,2,8,1。需求是取得seq最大或者最小值的元素中其他域。

解决方法: xsl:sort

实例代码:

<xsl:template name="DISC_POD_ETATemplate">

     <xsl:variable name="cntCount" select="count(../s5:transportation)"/>
    
     <xsl:variable name="cntTransSeqMax" >
       <xsl:for-each select="../s5:transportation">
          <xsl:sort select="s0:voyage/s0:seq" />
          <xsl:if test="position() = $cntCount">
             <xsl:value-of select="s0:voyage/s0:seq/text()" />
          </xsl:if>
       </xsl:for-each>
      </xsl:variable>
    
     <xsl:variable name="ca_value" select="../s5:transportation[s0:voyage/s0:seq=$cntTransSeqMax]/s0:voyage/s0:pod/s0:eta/record_datetime/text()"/>
     <xsl:variable name="ConvertCA" select="ScriptNS0:ConvertXMLDateTimetoYYYYMMDD($ca_value)"/>
    
     <xsl:element name="DISC_POD_ETA">
         <xsl:value-of select="$ca_value"/>
     </xsl:element>
    
</xsl:template>