Hi All,
I am in need of some desperate help here. I am attempting to use the article
found on http://www.bayes.co.uk with respect to client side paging using XML
and XSLT. I have searched high and low on the web and have not managed to
find an answer/solution to my problem. Hoping someone can help.
Basically, I am using ASP.Net and SQL Server to return to me a randomised
result set. I then manually build up a XML document and use the stylesheet
example and javascript function from the bayes website to do the client side
paging. It filters nicely, i.e. displaying only 5 records, but when I click
the next 'button' and it executes the javascript it gives me an "object
error".
It seems to be at this point: "navigator.XSLDocument.xml" - undefined.
Remember my XML is created manually and dynamically.
I have found an article on the list that has the same problem, but there
does not seem to be a solution. Can someone please help. Below are code
extracts to help explain....
Thanx in advance
--------------------- ASP.Net C# code extract Start
------------------------------------------
System.IO.StringReader strReader = new System.IO.StringReader(xmlData);
xpathDoc = new XPathDocument(strReader); XslTransform transform = new
XslTransform(); transform.Load(Server.MapPath("results_page.xslt"));
transform.Transform(xpathDoc,null,Response.Output,new XmlUrlResolver());
--------------------- ASP.Net C# code extract End
------------------------------------------
-------------------------------- XML Start
---------------------------------------------------
<series>
<page>
<ad>
<CompanyName>ABC (Pty) Ltd.</CompanyName>
<ContactPerson>Mr ABC</ContactPerson>
<Email>me(_at_)test(_dot_)com</Email>
</ad>
<ad>
<CompanyName>Co. B</CompanyName>
<ContactPerson>Trust Me</ContactPerson>
<Email>test(_at_)trust(_dot_)com</Email>
</ad>
</page>
<page>
<ad>
<CompanyName>ABC (Pty) Ltd.</CompanyName>
<ContactPerson>Mr ABC</ContactPerson>
<Email>me(_at_)test(_dot_)com</Email>
</ad>
</page>
</series>
--------------------------------- XML End
---------------------------------------------------
My XSLT is as follows:
------------------------------- XSLT Start
--------------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="pagenumber" select="1" />
<xsl:template match="*|@*">
<xsl:copy>
<xsl:apply-templates select="@* | * | comment() |
processing-instruction() | text()" />
</xsl:copy>
</xsl:template>
<xsl:template match="series">
<html>
<head>
<!-- <link rel="stylesheet" type="text/css"
href="slider.css" /> -->
<!-- <script language="javascript" src="slider.js" /> -->
</head>
<body>
<script language="javascript">
function changePage(number){
try{
var s = new
ActiveXObject("MSXML2.FreeThreadedDOMDocument");
var x =
document.XMLDocument;
if (x == null){
x =
navigator.XMLDocument;
s.loadXML(navigator.XSLDocument.xml);
}else{
s.loadXML(document.XSLDocument.xml);
}
var tem = new
ActiveXObject("MSXML2.XSLTemplate");
tem.stylesheet = s;
var proc =
tem.createProcessor();
proc.addParameter("pagenumber", number);
proc.input = x;
proc.transform();
var str =
proc.output;
var newDoc =
document.open("text/html", "replace");
newDoc.write(str);
navigator.XMLDocument = x;
navigator.XSLDocument = s;
newDoc.close();
}catch(exception){
alert(exception);
}
}
</script>
<xsl:apply-templates select="page[$pagenumber]" />
<xsl:call-template name="footerPages">
<xsl:with-param name="element"
select="'page'" />
<xsl:with-param name="pagenumber"
select="$pagenumber" />
</xsl:call-template>
</body>
</html>
</xsl:template>
<xsl:template match="ad">
<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="112">Company Name:</td>
<td colspan="3"><xsl:value-of select="CompanyName"/></td>
<td><font size="1" face="MS Sans Serif, MS Serif">Contact
Person:</font></td>
<td><font size="1" face="MS Sans Serif, MS
Serif"><xsl:value-of select="CPerson"/></font></td>
<td><font size="1" face="MS Sans Serif, MS Serif">E-Mail
Address:</font></td>
<td><font size="1" face="MS Sans Serif, MS
Serif"><xsl:value-of select="PriEMail"/></font></td>
</tr>
</table>
</xsl:template>
<xsl:template name="footerPages">
<xsl:param name="element" />
<xsl:param name="pagenumber" />
<xsl:variable name="total" select="count(*[name() = $element])" />
<center>
<xsl:if test="$pagenumber > 1">
<a href="JavaScript:changePage({$pagenumber
-1});">Prev</a>
</xsl:if>
<xsl:for-each select="*[name() = $element]">
<xsl:choose>
<xsl:when
test="not(count(preceding-sibling::*)+1 = $pagenumber)">
<a
href="JavaScript:changePage({count(preceding-sibling::*)+1});">
<xsl:value-of
select="count(preceding-sibling::*)+1" />
</a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select="count(preceding-sibling::*)+1" />
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:if test="$pagenumber < $total">
<a href="JavaScript:changePage({$pagenumber
+1});">Next</a>
</xsl:if>
</center>
</xsl:template>
</xsl:stylesheet>
----------------------------------- XSLT END
----------------------------------------
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--