关闭

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

标签: xsltxslstylesheetjavascriptencodingborder
6324人阅读 评论(2) 收藏 举报
分类:

 作品: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>

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:362991次
    • 积分:2818
    • 等级:
    • 排名:第13107名
    • 原创:38篇
    • 转载:2篇
    • 译文:1篇
    • 评论:167条
    最新评论