MSN 历史纪录分页显示(XML + XSL + Javascript)

MSN自带的XSL无分业功能,写一个简单的分页XSL:
将此文件替换MSN原有的XSL文件:MessageLog.xsl 即可

None.gif<?xml version="1.0"?>
None.gif
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
None.gif
None.gif  
<xsl:variable name="PageCount">10</xsl:variable>
None.gif
None.gif  
<xsl:template match="/">
None.gif    
<html>
None.gif      
<head>
None.gif        
<title>Msn Chat History</title>
None.gif        
<style type="text/css">
None.gif          body,td
None.gif          {
None.gif          font-size:14px;
None.gif          }
None.gif          .FirstCSS
None.gif          {
None.gif          color:#003366;
None.gif          background-color:#FFFFFF;
None.gif          }
None.gif          .PagesCss
None.gif          {
None.gif          color:#003366;
None.gif          font-size:13px;
None.gif          }
None.gif        
</style>
None.gif        
<script langauge="javascript">
None.gif          
<xsl:comment>
None.gif            
<![CDATA[
None.gif              var CurrentPage = 1;
None.gif              var PageCount = 10;
None.gif              
None.gif              function InitMessage()
None.gif              {
None.gif                LblMessage.innerHTML = "[Totle: "+ GetTotlePage() +"  ,Current:"+ CurrentPage +"]";
None.gif              }
None.gif              function GetTotlePage()
None.gif              {
None.gif                var XMLObj = document.XMLDocument;                                    
None.gif                var totlePage = XMLObj.documentElement.selectNodes("//Message");   
None.gif                if( parseInt(totlePage.length/10)*10 == totlePage.length )
None.gif                  totlePage =  parseInt(totlePage.length/PageCount);
None.gif                else
None.gif                  totlePage =  parseInt(totlePage.length/PageCount) + 1;
None.gif                  
None.gif                return totlePage;
None.gif              }
None.gif              function PageChange( expr )
None.gif              {
None.gif                switch( expr  )
None.gif                {
None.gif                  case "F":
None.gif                    CurrentPage = 1;
None.gif                    break;
None.gif                  case "P":
None.gif                    if(CurrentPage>1)
None.gif                      CurrentPage -= 1;
None.gif                    break;
None.gif                  case "N":
None.gif                  if(CurrentPage<GetTotlePage())
None.gif                    CurrentPage += 1;
None.gif                    break;
None.gif                  case "L":
None.gif                    CurrentPage = GetTotlePage();
None.gif                    break;
None.gif                }
None.gif                var XSLObj = document.XSLDocument;
None.gif                var XMLObj = document.XMLDocument;                                    
None.gif                var expr = "Message[position() < "+ CurrentPage*PageCount +" and position() > "+ (CurrentPage-1)*PageCount +"]";                            
None.gif                document.XSLDocument.selectSingleNode("//xsl:for-each/@select").value = expr;        
None.gif                ConXML.innerHTML = XMLObj.documentElement.transformNode(XSLObj);
None.gif                LblMessage.innerHTML = "[Totle: "+ GetTotlePage() +"  ,Current:"+ CurrentPage +"]";
None.gif              }
None.gif       
None.gif          
]]>
None.gif          
</xsl:comment>
None.gif        
</script>
None.gif
None.gif      
</head>
None.gif      
<body class="document_body" onload="InitMessage()">
None.gif        
<h1>
None.gif          
<xsl:value-of select="Log/Message/From/User/@FriendlyName"/>
None.gif          Chat With
None.gif          
<xsl:value-of select="Log/Message/To/User/@FriendlyName"/>
None.gif        
</h1>
None.gif        
<div id="ConXML">
None.gif          
<xsl:apply-templates select="Log"></xsl:apply-templates>
None.gif        
</div>
None.gif      
</body>
None.gif    
</html>
None.gif  
</xsl:template>
None.gif
None.gif  
<xsl:template match="Log">
None.gif    
<table width="100%" cellspacing="1" cellpadding="1" border="0" bgcolor="#6699AA">
None.gif      
<tr bgcolor="#DDDDDD">
None.gif        
<td>SessionID</td>
None.gif        
<td>From</td>
None.gif        
<td>To</td>
None.gif        
<td>Time</td>
None.gif        
<td>Text</td>
None.gif      
</tr>
None.gif      
<xsl:for-each select="Message[position() &lt; $PageCount]">
None.gif        
<xsl:sort order="ascending" select="@SessionID" data-type="number"></xsl:sort>
None.gif        
<tr class="FirstCSS">
None.gif          
<td>
None.gif            
<xsl:value-of select="@SessionID"/>
None.gif
None.gif          
</td>
None.gif          
<td>
None.gif            
<xsl:value-of select="From/User/@FriendlyName"/>
None.gif          
</td>
None.gif          
<td>
None.gif            
<xsl:value-of select="To/User/@FriendlyName"/>
None.gif          
</td>
None.gif          
<td>
None.gif            
<xsl:value-of select="@Time"/>
None.gif          
</td>
None.gif          
<td>
None.gif            
<xsl:value-of select="string(Text)"/>
None.gif          
</td>
None.gif        
</tr>
None.gif      
</xsl:for-each>
None.gif      
<tr bgcolor="#DDDDDD">
None.gif        
<td colspan="5" align="right">
None.gif          
<span class="PagesCss">
None.gif            
<span id="LblMessage"></span>
None.gif            [
<span onclick="PageChange('F')" style="cursor:hand"> First </span>]
None.gif            [
<span onclick="PageChange('P')" style="cursor:hand"> Previous </span>]
None.gif            [
<span onclick="PageChange('N')" style="cursor:hand"> Next </span>]
None.gif            [
<span onclick="PageChange('L')" style="cursor:hand"> Last </span>]
None.gif          
</span>
None.gif        
</td>
None.gif      
</tr>
None.gif    
</table>
None.gif  
</xsl:template>
None.gif
</xsl:stylesheet>

转载于:https://www.cnblogs.com/Dicky/archive/2006/08/13/475351.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值