对xml+xsl实现分页排序的改进,使支持对所有数据进行排序

以往见过的利用xml+xsl来实现分页排序的基本都只能本页内排序,究其原因,简单分析如下:

xml+xsl分页原理:在xsl中,遍历节点的时候,可以获取当前节点的位置,而且还能限制显示特定位置的节点,例如有18条记录,可以在xsl中设置只显示第1-6条,也可以设置只显示第7-12条,再配合客户端脚本,就可以动态改变xsl文档中控制显示指定位置节点的属性,从而实现分页(具体见代码)。不过这个有一点就是在xsl中获取的这个位置信息是xml文档中的节点位置,而不是排序后的位置;

同样xml+xsl实现排序原理:xsl可以按照节点的属性来排序,我们可以通过动态改变xsl的相关属性值来达到动态排序的目的。 如果两个合起来用,却只能对当前页进行排序。

参考例子:
http://www.gaofan.com/web/sailflying/version2/learn/pages.xml
http://www.gaofan.com/web/sailflying/version2/learn/pages.xsl
http://www.gaofan.com/web/sailflying/version2/learn/paixu.xml
http://www.gaofan.com/web/sailflying/version2/learn/paixu.xsl
http://lucky.myrice.com/xml/xpath.html

我不知道有没有方法可以在xsl中先排序然后判断位置,不过我倒是由此想到了一个解决方法——xsl不仅可以和xml生成html,同样,也可以利用xml+xsl来生成新的xml,所以直接用一个单独的xsl来实现排序,然后和原来的xml生成一个新的排序后的xml,再利用这个排序xml来分页,就可以实现对全部数据进行排序而非当前页内的数据排序。

懒得重头写,直接把孟宪会之精彩世界上的一个分页例子拿来一改就OK了。
注:ID为SortData的数据岛即为xml排序的xsl,ID为temp的数据岛为排序后的新xml。

客户关系表

<客户关系表 xmlns:dt="urn:schemas-microsoft-com:datatypes"> <客户><序号 dt:dt="int">01<姓名>dotey<电子邮件>http://www.webuc.net <客户><序号 dt:dt="int">02<姓名>孟子E章<电子邮件>mengxianhui@21cn.com <客户><序号 dt:dt="int">03<姓名>宝玉<电子邮件>junminliu@msn.com <客户><序号 dt:dt="int">04<姓名>http://lucky.myrice.com<电子邮件>Karry@163.net <客户><序号 dt:dt="int">05<姓名>http://colorweb.go.163.com<电子邮件>vivki@sina.com <客户><序号 dt:dt="int">06<姓名>Frank<电子邮件>net_lover@mengxianhui.com.cn <客户><序号 dt:dt="int">07<姓名>Greg<电子邮件>meng@mengxianhui.com <客户><序号 dt:dt="int">08<姓名>Harry<电子邮件>sunny@xianhui.net <客户><序号 dt:dt="int">09<姓名>Ingrid<电子邮件>cathy@hotmail.com <客户><序号 dt:dt="int">10<姓名>Jeff<电子邮件>your@mxh.com <客户><序号 dt:dt="int">11<姓名>Kelly<电子邮件>Iloveyou@mengxianhui.com <客户><序号 dt:dt="int">12<姓名>Larry<电子邮件>smilling@mengxianhui.com <客户><序号 dt:dt="int">13<姓名>Mark<电子邮件>money@21cn.com <客户><序号 dt:dt="int">14<姓名>Nancy<电子邮件>www@yahoo.com <客户><序号 dt:dt="int">15<姓名>Peter<电子邮件>dotnet@aol.com <客户><序号 dt:dt="int">16<姓名>Rachel<电子邮件>billgates@microsoft.com <客户><序号 dt:dt="int">17<姓名>Seth<电子邮件>flying@yous.net <客户><序号 dt:dt="int">18<姓名>Tim<电子邮件>agooyboy@lovegirl.com <客户关系表> <客户> <序号> <姓名> <电子邮件>
第  页 总  页    共有  条记录 每页记录数:
Sort('')
 
宝玉@webuc.net】修改自:【孟宪会之精彩世界