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 >