xml排序

1 xsl:sort

所使用的名字空间:xmlns:xsl='http://www.w3.org/1999/XSL/Transform'

Syntax

<xsl:sort

select="expression"

lang="language-code"

data-type="text|number|qname"     //数据类型,可支持按数字排序

order="ascending|descending"       //排序升序,降序

case-order="upper-first|lower-first"/>

 

test1.xml
<? xml version="1.0" encoding="GB2312" ?>
<? xml-stylesheet type="text/xsl" href="test1.xsl" ?>
< source >
< name > John </ name >  
< name > Josua </ name >  
< name > Charles </ name >  
< name > Alice </ name >  
< name > Martha </ name >  
< name > George </ name >  
</ source >

test.xsl

< xsl:stylesheet  version  = '1.0' 
     
xmlns:xsl ='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match ="/" >  
     
< TABLE >  
      
< xsl:for-each  select ="//name" >  
       
< xsl:sort  order ="ascending"  select ="." />  
           
< TR >   < TH >< xsl:value-of  select ="." /></ TH >   </ TR >  
      
</ xsl:for-each >  
     
</ TABLE >  
</ xsl:template >
</ xsl:stylesheet >

2 for-each的属性ordey-by

所使用的名字空间:xmlns:xsl="http://www.w3.org/TR/WD-xsl"

Syntax

<xsl:for-each select="expression"> 

<!-- Content:(xsl:sort*,template) -->

</xsl:for-each>

示例:test.html

< html >< head >   
< script >   
var  sig=true  
function  sort(strKey)  
{  
var  xml1=mxhxml.XMLDocument  
var  xsl1=mxhxsl.XMLDocument  
var  s1=xsl1.selectSingleNode("//xsl:for-each/@order-by")  
if(s1.value==strKey)  s1.value="-"  +  strKey  
else  
s1.value
=strKey  
document.all.mxh.innerHTML
=xml1.transformNode(xsl1)  
}
  
</ script >   
</ head >   
< body   onload ="sort('Name')" >   
< div   id =mxh ></ div >   
< XML   id =mxhxsl >   
<? xml  version="1.0" ?>   
< xsl:stylesheet   xmlns:xsl ="http://www.w3.org/TR/WD-xsl" >   
   
< xsl:template   match ="/" >   
   点击标题排序:  
       
< table   border ="2" >   
           
< tr >   
               
< th   onclick ="sort('Name')"   style ="cursor:hand" > 名称 </ th >   
               
< th   onclick ="sort('Email')"   style ="cursor:hand" > 电子邮件 </ th >   
           
</ tr >   
           
< xsl:for-each   select ="/Custs/Cust"   order-by ="Name" >   
               
< tr >   
                   
< td >< xsl:value-of   select ="Name" /></ td >   
                   
< td >< xsl:value-of   select ="Email" /></ td >   
               
</ tr >   
           
</ xsl:for-each >   
       
</ table >   
   
</ xsl:template >   
</ xsl:stylesheet >   
</ XML >   
 
< XML   id =mxhxml >   
<? xml  version="1.0" ?>   
< Custs >   
 
< Cust >   
       
< Name > Nancy </ Name >   
       
< Email > www@yahoo.com </ Email >   
   
</ Cust >   
   
< Cust >   
       
< Name > Peter </ Name >   
       
< Email > dotnet@aol.com </ Email >   
   
</ Cust >   
   
< Cust >   
       
< Name > Rachel </ Name >   
       
< Email > billgates@microsoft.com </ Email >   
   
</ Cust >   
   
< Cust >   
       
< Name > Seth </ Name >   
       
< Email > flying@yous.net </ Email >   
   
</ Cust >   
</ Custs >   
</ XML >   

 

3 按数字进行排序

1)xsl:sort方式: 只需指定datatype="number"

2)ordey-by方式:只需指定ordey-by=number("结点")

3)另外,还需对脚本进行修改:

<script type="text/javascript">

function taxis(x) 

{ 

    //获取到xml,xsl文档,获取到node: selectSingleNode

    if(x == '指定要排序的数字元素')

       sortField.value='number('+x+')';

    else

       sortField.value=x;

    if (this.rel == '+')

    {

       this.rel = '-';

    }

    else

    {

       sortField.value = '-'+sortField.value;

       this.rel = '+';

    }

    //transformNode

}

</script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值