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() < $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>