对xml+xsl实现分页排序的改进,使支持对所有数据进行排序
【原创: xml】对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。
代码如下:
提示:您可以先修改部分代码再运行
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。
代码如下:
提示:您可以先修改部分代码再运行