设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

搜索
查看: 10211|回复: 3

[原创] 在51JS的处女贴--XSL分页条template

[复制链接]
发表于 2007-8-25 14:21:19 | 显示全部楼层 |阅读模式
spliter.xsl
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3. <!--当前页码-->
  4. <xsl:param name="page"><xsl:value-of select="//page"/></xsl:param>
  5. <!--基础URL-->
  6. <xsl:param name="url">/xxx.aspx?p=</xsl:param>
  7. <!--示例-->
  8. <xsl:template match="/">
  9.         <div>
  10.                 <!--调用分页条生成模板-->
  11.                 <xsl:call-template name="pager">
  12.                         <!--参数:总页数-->
  13.                         <xsl:with-param name="tp">
  14.                                 <!--计算总页数,count节点表示总的记录数,div 20表示每页20条记录-->
  15.                                 <xsl:value-of select="round(number(//count) div 20+0.49)"/>
  16.                         </xsl:with-param>
  17.                 </xsl:call-template>
  18.         </div>
  19. </xsl:template>
  20. <xsl:template name="pager">
  21.         <!--参数:总页数-->
  22.         <xsl:param name="tp"/>
  23.         <!--如果总页熟大于1则开始生成分页链节-->
  24.         <xsl:if test="$tp>1">
  25.                 <!--如果当前页不是第一页则生成上一页的链接-->
  26.                 <xsl:if test="($page)>1">
  27.                         <a target="_self">
  28.                                 <xsl:attribute name="href">
  29.                                         <xsl:value-of select="$url" /><xsl:value-of select="number($page)-1" />
  30.                                 </xsl:attribute>
  31.                                 上一页
  32.                         </a>
  33.                 </xsl:if>
  34.                 <!--调用循环生成中间的页码链接-->
  35.                 <xsl:call-template name="loop">
  36.                         <!--参数:开始页码-->
  37.                         <xsl:with-param name="start">
  38.                                 <xsl:choose>
  39.                                         <!--如果总页数大于10并且当前页码大于5则开始计算起始页码,否则起始页码为1-->
  40.                                         <xsl:when test="$tp>10 and $page>5">
  41.                                                 <xsl:choose>
  42.                                                         <!--如果总页数大于当前页加5则起始页码为当前页减5-->
  43.                                                         <xsl:when test="$tp>$page+5">
  44.                                                                 <xsl:value-of select="number($page)-5"/>
  45.                                                         </xsl:when>
  46.                                                         <!--否则起始页码为总页数减10-->
  47.                                                         <xsl:otherwise><xsl:value-of select="number($tp)-10"/></xsl:otherwise>
  48.                                                 </xsl:choose>
  49.                                         </xsl:when>
  50.                                         <xsl:otherwise>1</xsl:otherwise>
  51.                                 </xsl:choose>
  52.                         </xsl:with-param>
  53.                         <!--参数:结束页码-->
  54.                         <xsl:with-param name="end">
  55.                                 <xsl:choose>
  56.                                         <!--如果总页数大于10则开始结算结束页码,否则结束页码为总页数-->
  57.                                         <xsl:when test="$tp>10">
  58.                                                 <xsl:choose>
  59.                                                         <!--如果总页数大于当前页码加5-->
  60.                                                         <xsl:when test="$tp>$page+5">
  61.                                                                 <xsl:choose>
  62.                                                                         <!--如果当前页码大于5,则结果页码为当前页码加5-->
  63.                                                                         <xsl:when test="$page>5">
  64.                                                                                 <xsl:value-of select="number($page)+5"/>
  65.                                                                         </xsl:when>
  66.                                                                         <!--否则结果页码为10-->
  67.                                                                         <xsl:otherwise>10</xsl:otherwise>
  68.                                                                 </xsl:choose>
  69.                                                         </xsl:when>
  70.                                                         <!--否则结果页码为总页数-->
  71.                                                         <xsl:otherwise><xsl:value-of select="$tp"/></xsl:otherwise>
  72.                                                 </xsl:choose>
  73.                                         </xsl:when>
  74.                                         <xsl:otherwise><xsl:value-of select="$tp"/></xsl:otherwise>
  75.                                 </xsl:choose>
  76.                         </xsl:with-param>
  77.                 </xsl:call-template>
  78.                 <!--如果当前页不是最后一页则生成下一页的链接-->
  79.                 <xsl:if test="$tp>number($page)">
  80.                         <a target="_self">
  81.                                 <xsl:attribute name="href">
  82.                                         <xsl:value-of select="$url" /><xsl:value-of select="number($page)+1" />
  83.                                 </xsl:attribute>
  84.                                 下一页
  85.                         </a>
  86.                 </xsl:if>
  87.         </xsl:if>
  88. </xsl:template>
  89. <xsl:template name="loop">
  90.         <!--参数:开始页码-->
  91.         <xsl:param name="start"/>
  92.         <!--参数:结束页码-->
  93.         <xsl:param name="end"/>
  94.         <!--如果结束页码大于开始页码则继续处理下一个链接-->
  95.         <xsl:if test="$end>=$start">
  96.                 <xsl:choose>
  97.                         <!--如果是当前页则只显示页码不创建链接-->
  98.                         <xsl:when test="$start=$page">
  99.                                 <span>
  100.                                         <xsl:value-of select="$start"/>
  101.                                 </span>
  102.                         </xsl:when>
  103.                         <!--创建链接页码-->
  104.                         <xsl:otherwise>
  105.                                 <a target="_self">
  106.                                         <xsl:attribute name="href">
  107.                                                 <xsl:value-of select="$url" /><xsl:value-of select="$start" />
  108.                                         </xsl:attribute>
  109.                                         [<xsl:value-of select="$start" />]
  110.                                 </a>
  111.                         </xsl:otherwise>
  112.                 </xsl:choose>
  113.                 <!--继续生成下一个链接-->
  114.                 <xsl:call-template name="loop">
  115.                         <!--开始页码加1后传入下一个调用-->
  116.                         <xsl:with-param name="start">
  117.                                 <xsl:value-of select="number($start)+1"/>
  118.                         </xsl:with-param>
  119.                         <!--结束页码直接传入下一个调用-->
  120.                         <xsl:with-param name="end">
  121.                                 <xsl:value-of select="$end"/>
  122.                         </xsl:with-param>
  123.                 </xsl:call-template>
  124.         </xsl:if>
  125. </xsl:template>
  126. </xsl:stylesheet>
复制代码

spliter.xml

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <?xml-stylesheet type="text/xsl" href="spliter.xsl"?>
  3. <root>
  4.         <page>3</page>
  5.         <count>5864</count>
  6. </root>
复制代码

[ 本帖最后由 silverdrag 于 2007-8-25 14:30 编辑 ]

评分

参与人数 1威望 +2 收起 理由
※潇洒※ + 2 原创内容

查看全部评分

发表于 2007-9-9 03:08:00 | 显示全部楼层
不错……  支持一下原创.

不过应该可以进一步精减?
URL 和 PageCount 等配置信息似乎不应该写在XSL里.  否则一但需要在不同地方使用不同配置就得写不同的 XSL 文件.
发表于 2009-12-22 16:49:32 | 显示全部楼层
您需要登录后才可以回帖 登录 | 加入无忧

本版积分规则

小黑屋|手机版|Archiver|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445   鄂公网安备 42011102000433号

GMT+8, 2017-11-18 06:54 , Processed in 0.093384 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表