利用我的XSLT类实现分页范例

原创 2006年05月21日 01:20:00

 作品:Sank Orange's Xslt 分页
 版本:1.0.2
 更新日期:2006-07-06
 下载地址:http://cds.gameres.com/samples/fenye.rar  

利用我的XSLT类可以很方便的实现XML数据的分页效果,下面是一个范例。
xslt类的代码在
http://blog.csdn.net/cds27/archive/2006/05/08/712546.aspx


fenye.htm :

<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<TITLE>利用我的XSLT类实现分页范例</TITLE>
<script language="javascript" src="XsltClass.js"></script>
<SCRIPT language="javascript">
var XMLFILE="fenye.xml", XSLFILE="fenye.xsl";

var xslt=new XsltClass(XMLFILE, XSLFILE);//创建对象,传如XML文件名和XSL文件名

function init() {
 divContainer.innerHTML=xslt.output();//输出XSLT转换后的HTML
 //xslt.setParam("FuncName", "goPage");//设置跳转页面的函数名,默认情况下为"goPage"
 //xslt.setParam("Count", 2);//设置每页显示的记录数,默认为2
}

function goPage(pageNo) {
 xslt.setParam("PageNo", pageNo);//设置XSL的参数,页号
 divContainer.innerHTML=xslt.output();//输出XSLT
}
</SCRIPT>
<style>
body, td, div, span{
 font-size: 18px;
}
#divContainer {
 margin: 20px;
 position: absolute;
 left: 10%;
 top: 30%;
}
table {
 margin: 20px;
 border: 1px solid black;
}
</style>
</HEAD>
<BODY onLoad="init();">
<DIV id="divContainer">
</DIV>
</BODY>
</HTML>

fenye.xml:

<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="fenye.xsl"?>
<Root>
 <Item>
  <No>1</No>
  <Name>姓名1</Name>
 </Item>
 <Item>
  <No>2</No>
  <Name>姓名2</Name>
 </Item>
 <Item>
  <No>3</No>
  <Name>姓名3</Name>
 </Item>
 <Item>
  <No>4</No>
  <Name>姓名4</Name>
 </Item>
 <Item>
  <No>5</No>
  <Name>姓名5</Name>
 </Item>
 <Item>
  <No>6</No>
  <Name>姓名6</Name>
 </Item>
 <Item>
  <No>7</No>
  <Name>姓名7</Name>
 </Item>
</Root>

 

fenye.xsl:

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" omit-xml-declaration="yes"/>
 <xsl:param name="PageNo">1</xsl:param>
 <xsl:param name="FuncName">goPage</xsl:param>
 <xsl:param name="Count">2</xsl:param>
 <!--Count表示一页里显示的记录数,默认为2-->

 <xsl:template match="/Root">
  <xsl:variable name="MaxNo" select="count(Item)"/><!--总记录数-->
  
  <table border="1" align="center">
   <tr>
    <xsl:for-each select="Item[1]/*">
     <th>
      <xsl:value-of select="name()"/>
     </th>
    </xsl:for-each>
   </tr>
   <!--这段显示列名-->
   
   <xsl:for-each select="Item[(position() &lt;= $PageNo*$Count) and (position() &gt; (number($PageNo)-1)*$Count)]">
    <xsl:apply-templates select="."/>
   </xsl:for-each>
   <!--这段用来显示记录符合条件的记录-->
   
  </table>
  <div>
   <xsl:call-template name="PrevPage"/>
   <!--这段用来显示上一页-->
   
   <xsl:for-each select="Item[position() mod $Count = 1]">
    <xsl:variable name="Position" select="position()"/>
    <xsl:call-template name="PageLink">
     <xsl:with-param name="Position" select="$Position"/>
    </xsl:call-template>
   </xsl:for-each>
   <!--这段用来显示页号-->
   
   <xsl:call-template name="NextPage">
    <xsl:with-param name="MaxNo" select="$MaxNo"/>
   </xsl:call-template>
   <!--这段用来显示下一页-->
  </div>

 </xsl:template>

 <xsl:template match="Item">
  <tr>
   <td>
    <xsl:value-of select="No"/>
   </td>
   <td>
    <xsl:value-of select="Name"/>
   </td>
  </tr>
 </xsl:template>

 <xsl:template name="PrevPage"><!-- 上页 -->
  <xsl:variable name="Position" select="number($PageNo)-1"/>
  <xsl:variable name="Href">javascript:<xsl:value-of select="$FuncName"/>(<xsl:value-of select="$Position"/>);</xsl:variable>
  <a>
   <xsl:if test="$Position>=1">
    <xsl:attribute name="href"><xsl:value-of select="$Href"/></xsl:attribute>
   </xsl:if>
   上一页
  </a>
  <xsl:call-template name="Separator"/>
 </xsl:template>

 <xsl:template name="NextPage"><!-- 下页 -->
  <xsl:param name="MaxNo"/>
  <xsl:variable name="Position" select="number($PageNo)+1"/>
  <xsl:variable name="Href">javascript:<xsl:value-of select="$FuncName"/>(<xsl:value-of select="$Position"/>);</xsl:variable>
  <a>
   <xsl:if test="(number($Position)-1)*$Count&lt;$MaxNo">
    <xsl:attribute name="href"><xsl:value-of select="$Href"/></xsl:attribute>
   </xsl:if>
   下一页
  </a>
 </xsl:template>

 <xsl:template name="PageLink"><!-- 页号的超链接 -->
  <xsl:param name="Position"/>
  <xsl:variable name="Href">javascript:<xsl:value-of select="$FuncName"/>(<xsl:value-of select="$Position"/>);</xsl:variable>
  <a>
   <xsl:if test="$Position!=$PageNo">
    <xsl:attribute name="href"><xsl:value-of select="$Href"/></xsl:attribute>
   </xsl:if>
   第 <xsl:value-of select="position()"/> 页
  </a>
  <xsl:call-template name="Separator"/>
 </xsl:template>

 <xsl:template name="Separator"><!-- 页号的分隔符 -->
  &#160;|&#160;
 </xsl:template>

</xsl:stylesheet>

相关文章推荐

使用XML、XSLT和XPath创建可排序、分页、重用的数据显示页面

使用XML、XSLT和XPath创建可排序、分页、重用的数据显示页面 在Web开发中,我们经常会遇到分页显示和排序数据记录集的情况,这在服务器端使用服务器端的代码和数据库技术是件很轻松的事情,比如:A...

一个完整的Ajax查询及对查询结果实现分页的范例

分页是WEB应用开发中最常用的功能之一,大多数是在动态页面(如:jsp、asp、php)中完成。pageObj是本人针对JavaScript数组实现分页的一个通用的对象,使用简单,效果良好,功能比较完...
  • wj800
  • wj800
  • 2011年11月21日 06:27
  • 4001

datagrid的功能齐全的分页范例

  • 2007年01月18日 10:37
  • 3KB
  • 下载

利用xslt对xml中数据实现splite换行的总结

Empire Burlesque Use xlst to dealwith xml USA test1,test2,test3 10.90 1985 ...

JAVA利用XSLT进行格式转换,XML转成自己需要的XML、HTML等。

JAVA利用XSLT进行格式转换,XML转成自己需要的XML、HTML等。

使用XML+XSLT实现业务表单

http://www.cnblogs.com/lijun4017/archive/2008/04/28/1175323.html 其实这是我的一个两年前的项目中用到的东西,今天刚好翻以前的代码,看到...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用我的XSLT类实现分页范例
举报原因:
原因补充:

(最多只允许输入30个字)