XSLT分页(多行多列版)

作品:Sank Orange's Xslt 分页(多行多列版)
版本:1.0.0
更新日期:2006-07-06
下载地址:http://cds.gameres.com/samples/fenye_rows.rar

fenye_rows.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;

try {
 xslt=new XsltClass(XMLFILE, XSLFILE);//创建对象,传如XML文件名和XSL文件名
}
catch(e) {
 alert(e.description);
}

function init() {
 divContainer.innerHTML=xslt.output();//输出XSLT转换后的HTML
 //xslt.setParam("FuncName", "goPage");//设置跳转页面的函数名,默认情况下为"goPage"
 //xslt.setParam("Count", 2);//设置每页显示的记录数,默认为4
 //xslt.setParam("Rows", 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();">
 作品:Sank Orange's Xslt 分页(多行多列版)<br />
 版本:1.0.0<br />
 更新日期:2006-07-06<br />
下载地址:<a href="http://cds.gameres.com/samples/fenye_lines.rar">http://cds.gameres.com/samples/fenye_rows.rar</a>
<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_rows.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">4</xsl:param>
 <!--Count表示一页里显示的记录数,默认为4-->
 <xsl:param name="Rows">2</xsl:param>
 <!--Rows表示分几列显示,默认为2-->
 <xsl:template match="/Root">
  <xsl:variable name="MaxNo" select="count(Item)"/><!--总记录数-->
  
  <table border="1" align="center" width="100">
   <xsl:apply-templates select="Item[(position() &lt;= $PageNo*$Count) and (position() &gt; (number($PageNo)-1)*$Count)][position() mod $Rows = 1]"/>
   <!--这段用来显示记录符合条件的记录-->
   
  </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">
  <xsl:variable name="Position" select="position()"/>
  <tr>
   <xsl:for-each select=".|following-sibling::Item[position() &lt; $Rows]">
    <td width="10"><xsl:value-of select="No"/></td>
   </xsl:for-each>
  </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>

 

参考文章:
分页 http://blog.csdn.net/cds27/archive/2006/05/21/747283.aspx
换行 http://blog.csdn.net/cds27/archive/2005/10/23/514068.aspx

你可能感兴趣的:(JavaScript,border,XSL,encoding,XSLT,stylesheet)