利用我的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>

在 XSLT 中用递归实现循环

原文地址:https://www.ibm.com/developerworks/cn/xml/x-tiploop.html 扩展 XSLT 能力的技术 XSLT 是一种函数式编程语...
  • u010523770
  • u010523770
  • 2017年05月04日 22:41
  • 355

Oracle怎么实现分页

分页查询格式: SELECT * FROM  ( SELECT A.*, ROWNUM RN  FROM (SELECT * FROM TABLE_NAME) A  WHERE ROWNUM ) W...
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2016年09月25日 11:55
  • 2841

php+ajax实现分页

ajaxpage.php【这里是数据展示页面的代码】: http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js” type=”...
  • will5451
  • will5451
  • 2016年07月26日 18:00
  • 772

java内存分页工具类

工作中由于有时候项目中特殊业务需求,需要使用到内存分页,本人根据java.util.Arrays、java.util.Collections工具类结合泛型标记写了一个简单的内存分页工具类,支持数组和L...
  • deb_ug
  • deb_ug
  • 2016年05月26日 09:45
  • 962

PHP-Ajax实现无刷新分页

1.创建数据库并插入数据 create database shop; use shop; CREATE TABLE ecs_goods ( goods_id INT UNSIGNED NOT NU...
  • bbs375
  • bbs375
  • 2016年08月15日 13:58
  • 1073

在Spring Boot中使用Spring-data-jpa实现分页查询

在我们平时的工作中,查询列表在我们的系统中基本随处可见,那么我们如何使用jpa进行多条件查询以及查询列表分页呢?下面我将介绍两种多条件查询方式。 1、引入起步依赖   org.spri...
  • zhengxiangwen
  • zhengxiangwen
  • 2017年03月20日 00:14
  • 10418

XSLT - 利用template实现for循环

ForLoop.xslt: [html] view plaincopyprint? xml version="1.0" encoding="utf-8"?>...
  • u012764241
  • u012764241
  • 2014年12月12日 17:16
  • 1187

[XML]学习笔记(八)XSLT

一、XSL(eXtensible Stylesheet Language)扩展样式表语言:主要包含三个部分——XSLT用于XML文档转换,XPath用于在XML文档中导航,XSL-FO用于XML文档格...
  • CristianoJason
  • CristianoJason
  • 2016年05月20日 00:45
  • 4352

分页实现后端逻辑

由于项目需要,写了个提供给h5,还有客户端的分页接口。而公司使用的框架 laravel 自带的框架paginate套用不方便,因为paginate的分页是原理是在对数据库进行query的时候分页,相当...
  • situjiang
  • situjiang
  • 2016年05月04日 11:40
  • 1978

通用分页工具类

通用分页工具类最近自己写了一套分页类,和大家分享下,请多多支持。分页详细介绍,首先在即设置每页要显示的条数。通过前台传参获取当前页显示的页数计算出上一页、下一页,第一页,最后一页,页面要显示可选择的页...
  • u010797575
  • u010797575
  • 2016年01月27日 17:16
  • 6439
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用我的XSLT类实现分页范例
举报原因:
原因补充:

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