新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → [转帖]仅用xsl+asp实现分页 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5633 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]仅用xsl+asp实现分页 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     孤独 帅哥哟,离线,有人找我吗?
      
      
      威望:7
      等级:大三(面向对象是个好东东!)(版主)
      文章:826
      积分:4220
      门派:XML.ORG.CN
      注册:2004/1/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给孤独发送一个短消息 把孤独加入好友 查看孤独的个人资料 搜索孤独在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看孤独的博客楼主
    发贴心情 [转帖]仅用xsl+asp实现分页

    http://mface.xicp.net/htm/Article_show.htm?Article_id=22
    仅用XSL和ASP实现分页功能   

    注意事项:
    ※本文代码可能有一些多余部分未去掉,请在阅读时忽略。
     一些外部include进来的文件这里就不贴上来了。
    ※小乙写xsl也不久,很多语句都不会使用,有些地方写得比较罗嗦,
     如果您有更好的分页代码,请多多拿来交流。
    ※适用于:用asp load进来xml代码,
    然后用此xsl文件进行分页处理。
    ※[2001.2.19]
    ------------------------------------
    asp文件大致结构:
    程序代码:
    <%@ Language=VBScript %>
    <!-- #include file=include/lib.asp -->
    <%  
    cc=server.MapPath('trans.xml')
    set source=server.CreateObject('msxml2.domdocument')
    source.async=false
    source.load(cc)

    xslfile=server.MapPath('index.xsl')
    set style=server.CreateObject('msxml2.domdocument')
    style.async=false
    style.load(xslfile)

    ''Response.write source.transformNode(style)
    Response.write gb_html(source.transformNode(style))
    Response.End  
    %>  

    ------------------------------------load进来的xml数据是这样的:
    程序代码:
    <?xml version='1.0' encoding='GB2312' ?>  
    <root>
    <function>
    <PO>里面的标签在后面的xsl文件里被'<xsl:for-each>'</PO>
    <PO>……………………</PO>
    <PO>……………………</PO>
    <PO>……………………</PO>
    </function>
    </root>  


    ------------------------------------
    xsl文件的内容:

    程序代码:
    <?xml version='1.0' encoding='GB2312'?>
    <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    <xsl:include href='include/ydzhongxin.xsl'/><!-- 嵌入头模板,尾模板 -->
    <xsl:param name='yd'>7</xsl:param><!-- 调用二级导航条所用参数 -->
    <xsl:param name='page'>  <xsl:value-of select='count(//PO)'/></xsl:param>

    <!-- 定义根模板 -->
    <xsl:template match='/'>
    <html>
    <head>
    <meta http-equiv='Content-Type' content='text/html; charset=gb2312'/>
    <link rel='stylesheet' type='text/css' href='include/style.css'/>
    <title>结果列表</title>
    </head>
    <body leftMargin='0' topMargin='0'>
    <xsl:call-template name='ydtitle'/>

        <div align='center'>
        <xsl:apply-templates select='root/function'/>
        <!-- 匹配function模板 -->
        </div>

    <xsl:call-template name='end'/>
    </body>
    </html>
    </xsl:template>

    <!-- 定义function模板 -->
    <xsl:template match='function'>
    <!-- ---------------翻页链接开始----------- -->
    <xsl:variable name='pagesize'>5</xsl:variable><!-- 是分页参数 -->

    <xsl:choose>
    <xsl:when test='/root/session/page[text()!='''']'>
    <!-- 进入一级choose的一个when条件分支!!!!!
    -------------进入此分支,证明用户已有翻页操作-------------- -->
    <xsl:variable name='page'><xsl:value-of select='/root/session/page'/></xsl:variable>
    <table border='0' cellpadding='2' cellspacing='0' width='630'>
      <tr>
        <td align='right'>
        <!-- 进入二级choose!!! -->
        <xsl:choose>
        <!-- ①id小于等于0的情况,显示最后一页。-->
        <xsl:when test='$pid<1'>
        <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='count(//PO)'/></xsl:attribute>
    [ 首 ]</a>
        <a title='前一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$size*2'/></xsl:attribute>[ <<< ] </a>
        <a title='后一页'>[ >>> ] </a>
        <a>[ 尾 ]</a>
        </xsl:when>
        <!-- ②id位于[0~pagesize]之间的情况,前页正常,后页无。 -->
        <xsl:when test='$pid<($size + 1) and $pid>0'>
        <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='count(//PO)'/></xsl:attribute>
    [ 首 ]</a>
        <a title='前一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$pid+$size'/></xsl:attribute>[ <<< ] </a>
        <a title='后一页'>[ >>> ] </a>
        <a>[ 尾 ]</a>
        </xsl:when>
        <!-- ③id位于[pagesize~count]之间的情况,前页无,后页正常。 -->
        <xsl:when test='$pid<count(//PO) and $pid>(count(//PO)-$size)'>
        <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='count(//PO)'/></xsl:attribute>
    [ 首 ]</a>
        <a title='前一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='count(//PO)'/></xsl:attribute>[ <<< ] </a>
        <a title='后一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$pid - $size'/></xsl:attribute>[ >>> ] </a>
        <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$size'/></xsl:attribute>
    [ 尾 ]</a>
        </xsl:when>

        <!-- ④id等于count的情况,显示首页。 -->
        <xsl:when test='$pid=count(//PO)'>
        <a>[ 首 ]</a>
        <a title='前一页'>[ <<< ] </a>
        <a title='后一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='count(//PO)-$size'/></xsl:attribute>[ >>> ] </a>
        <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$size'/></xsl:attribute>
    [ 尾 ]</a>
        </xsl:when>
        <!-- ⑤id大于count的情况,显示首页。 -->
        <xsl:when test='$pid>count(//PO)'>
        <a>[ 首 ]</a>
        <a title='前一页'>[ <<< ] </a>
        <a title='后一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='count(//PO)-$size'/></xsl:attribute>[ >>> ] </a>
        <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$size'/></xsl:attribute>
    [ 尾 ]</a>
        </xsl:when>

        <!-- 正常情况 -->
        <xsl:otherwise>
        <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='count(//PO)'/></xsl:attribute>
    [ 首 ]</a>
        <a title='前一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$pid + $size'/></xsl:attribute>[ <<< ] </a>
        <a title='后一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$pid - $size'/></xsl:attribute>[ >>> ] </a>
        <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$size'/></xsl:attribute>
    [ 尾 ]</a>
        </xsl:otherwise>
        </xsl:choose>
        <!-- ---------------------------------------- -->
              </td>
              </tr>
            </table><br/>
          <!-- ---------遍历符合要求的PO结点------------- -->
          <xsl:for-each select='PO[position()<=$pid and position()>($pid - $size)]'>
            <xsl:sort select='PO_ID' order='descending' data-type='number'/>
            <xsl:call-template name='PO'/>
            <br/><br/><br/>
          </xsl:for-each>
    <!-- 退出一级choose的一个when条件分支!!!!! -->
    </xsl:when>
    <!-- ------------------用户直接进入的状态------------------ -->
    <xsl:otherwise>
    <!-- 进入一级choose的另一个when条件分支!!!!! -->
    <table border='0' cellpadding='2' cellspacing='0' width='630'>
    <tr><td align='right'>
    <a>[ 首 ]</a>
    <a title='前一页'>[ <<< ] </a>
    <a title='后一页'><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$pid - $size'/></xsl:attribute>[ >>> ] </a>
    <a><xsl:attribute name='href'>search_jieguo.asp?id=<xsl:value-of select='$size'/></xsl:attribute>
    [ 尾 ]</a>
    </td></tr>
    </table><br/>
          <xsl:for-each select='PO[position()<=$pid and position()>($pid - $size)]'>
            <xsl:sort select='PO_ID' order='descending' data-type='number'/>
            <xsl:call-template name='PO'/>
            <br/><br/><br/>
          </xsl:for-each>
    <!-- 退出一级choose的另一个when条件分支!!!!! -->
    </xsl:otherwise>
    </xsl:choose>
        <!-- --------------翻页链接到此结束----------- -->
        <br/>
        <xsl:if test='count(//PO)=0'>

      <div align='center'><b>
       <img src='images/msg2.gif' align='absmiddle'/>
       </b><font color='#CC0000' face='楷体CS' size='3'><b>
       没有符合当前条件的订单</b></font>  
       <a><xsl:attribute name='href'>lkxx.asp?po_id=<xsl:value-of select='PO_ID'/></xsl:attribute></a>
      </div>
    ><br/><br/>
    <input type='button' value='重新输入条件查询' onclick='location.href=''search.asp'''/>
        </xsl:if>
      </xsl:template>


    <!-- ------------------------------------------>
    <xsl:template name='PO'>
     <table border='1' cellpadding='2' cellspacing='0' width='100%'>
      <tr>  
       <td nowrap='nowrap' width='70'> 号码</td>
       <td nowrap='nowrap' width='110'> 名称</td>
       <td nowrap='nowrap' width='110'> 日期</td>
       <td nowrap='nowrap' width='110'> 人员</td>
      </tr>
      <tr>
    <td nowrap='nowrap'> <xsl:value-of select='num'/></td>
    <td nowrap='nowrap'> <xsl:value-of select='username'/></td>
    <td nowrap='nowrap'> <xsl:value-of select='dt'/></td>
    <td nowrap='nowrap'> <xsl:value-of select='men'/></td>
      </tr>
     </table>
    </xsl:template>
    </xsl:stylesheet>


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    <?xml version="1.0" encoding="gb2312"?>
    <个人签名>
      <Website>[url=http://www.mahaobo.cn]
    MaHaobo.cn[/url]
    </Website>
    <Email>aloning(at)gmail.com</Email>
      <Qq >32113739</Qq>
    </个人签名>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/12 13:11:00
     
     liutower 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:3
      积分:73
      门派:XML.ORG.CN
      注册:2004/4/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给liutower发送一个短消息 把liutower加入好友 查看liutower的个人资料 搜索liutower在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看liutower的博客2
    发贴心情 
    faint

    文字
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/12 21:01:00
     
     KAI 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:40
      积分:215
      门派:XML.ORG.CN
      注册:2004/4/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给KAI发送一个短消息 把KAI加入好友 查看KAI的个人资料 搜索KAI在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看KAI的博客3
    发贴心情 
    用xslt分页都不现实,记录数多了,前台内存严重吃紧。。。。
    还是在后台分页了(比如用SQL存储过程),返一页的记录然后发送到前台合算

    ----------------------------------------------
    [url]http://www.kingbbs.net[/url]

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/15 14:10:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/10 5:32:29

    本主题贴数3,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms