|          
注意事项:※本文代码可能有一些多余部分未去掉,请在阅读时忽略。
 一些外部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=http://www.okasp.com/techinfo/"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>
 
 |