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
>