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

33 篇文章 0 订阅

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

 

<? xml version="1.0" ?>
< xsl:stylesheet  xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"  version ="1.0" >

  
< xsl:variable  name ="PageCount" > 10 </ xsl:variable >

  
< xsl:template  match ="/" >
    
< html >
      
< head >
        
< title > Msn Chat History </ title >
        
< style  type ="text/css" >
          body,td
          {
          font-size:14px;
          }
          .FirstCSS
          {
          color:#003366;
          background-color:#FFFFFF;
          }
          .PagesCss
          {
          color:#003366;
          font-size:13px;
          }
        
</ style >
        
< script  langauge ="javascript" >
          
< xsl:comment >
            
<![CDATA[
              var CurrentPage = 1;
              var PageCount = 10;
              
              function InitMessage()
              {
                LblMessage.innerHTML = "[Totle: "+ GetTotlePage() +"  ,Current:"+ CurrentPage +"]";
              }
              function GetTotlePage()
              {
                var XMLObj = document.XMLDocument;                                    
                var totlePage = XMLObj.documentElement.selectNodes("//Message");   
                if( parseInt(totlePage.length/10)*10 == totlePage.length )
                  totlePage =  parseInt(totlePage.length/PageCount);
                else
                  totlePage =  parseInt(totlePage.length/PageCount) + 1;
                  
                return totlePage;
              }
              function PageChange( expr )
              {
                switch( expr  )
                {
                  case "F":
                    CurrentPage = 1;
                    break;
                  case "P":
                    if(CurrentPage>1)
                      CurrentPage -= 1;
                    break;
                  case "N":
                  if(CurrentPage<GetTotlePage())
                    CurrentPage += 1;
                    break;
                  case "L":
                    CurrentPage = GetTotlePage();
                    break;
                }
                var XSLObj = document.XSLDocument;
                var XMLObj = document.XMLDocument;                                    
                var expr = "Message[position() < "+ CurrentPage*PageCount +" and position() > "+ (CurrentPage-1)*PageCount +"]";                            
                document.XSLDocument.selectSingleNode("//xsl:for-each/@select").value = expr;        
                ConXML.innerHTML = XMLObj.documentElement.transformNode(XSLObj);
                LblMessage.innerHTML = "[Totle: "+ GetTotlePage() +"  ,Current:"+ CurrentPage +"]";
              }
       
          
]]>
          
</ xsl:comment >
        
</ script >

      
</ head >
      
< body  class ="document_body"  onload ="InitMessage()" >
        
< h1 >
          
< xsl:value-of  select ="Log/Message/From/User/@FriendlyName" />
          Chat With
          
< xsl:value-of  select ="Log/Message/To/User/@FriendlyName" />
        
</ h1 >
        
< div  id ="ConXML" >
          
< xsl:apply-templates  select ="Log" ></ xsl:apply-templates >
        
</ div >
      
</ body >
    
</ html >
  
</ xsl:template >

  
< xsl:template  match ="Log" >
    
< table  width ="100%"  cellspacing ="1"  cellpadding ="1"  border ="0"  bgcolor ="#6699AA" >
      
< tr  bgcolor ="#DDDDDD" >
        
< td > SessionID </ td >
        
< td > From </ td >
        
< td > To </ td >
        
< td > Time </ td >
        
< td > Text </ td >
      
</ tr >
      
< xsl:for-each  select ="Message[position() &lt; $PageCount]" >
        
< xsl:sort  order ="ascending"  select ="@SessionID"  data-type ="number" ></ xsl:sort >
        
< tr  class ="FirstCSS" >
          
< td >
            
< xsl:value-of  select ="@SessionID" />

          
</ td >
          
< td >
            
< xsl:value-of  select ="From/User/@FriendlyName" />
          
</ td >
          
< td >
            
< xsl:value-of  select ="To/User/@FriendlyName" />
          
</ td >
          
< td >
            
< xsl:value-of  select ="@Time" />
          
</ td >
          
< td >
            
< xsl:value-of  select ="string(Text)" />
          
</ td >
        
</ tr >
      
</ xsl:for-each >
      
< tr  bgcolor ="#DDDDDD" >
        
< td  colspan ="5"  align ="right" >
          
< span  class ="PagesCss" >
            
< span  id ="LblMessage" ></ span >
            [
< span  onclick ="PageChange('F')"  style ="cursor:hand" >  First  </ span > ]
            [
< span  onclick ="PageChange('P')"  style ="cursor:hand" >  Previous  </ span > ]
            [
< span  onclick ="PageChange('N')"  style ="cursor:hand" >  Next  </ span > ]
            [
< span  onclick ="PageChange('L')"  style ="cursor:hand" >  Last  </ span > ]
          
</ span >
        
</ td >
      
</ tr >
    
</ table >
  
</ xsl:template >
</ xsl:stylesheet >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值