Sorting Javascript

R

reclusive monkey

I copied the following example from MSDN, and it works nicely. However,

I want to combine it with another technique I discovered on the IBM
Developer site. However, the first method relies upon Micorsoft's old
xmlns:xsl="http://www.w3.org/TR/WD-xsl" namespace and "order-by" but
the other technique uses position(), which won't work with
xmlns:xsl="http://www.w3.org/TR/WD-xsl". Can anyone help me with
regards to altering the javascript at the top to work with xsl:sort
rather than order-by? Thanks. My current XSLT is this;


<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>SCSD Finance Department - Cost Centres</title>
<link rel="stylesheet" href="IntranetPrintStyle.css" type="text/css"
media="print" />
<link rel="stylesheet" href="IntranetStyle.css" type="text/css"
media="screen" />
</head>
<body>
<SCRIPT><xsl:comment><![CDATA[
function sort(field)
{
sortField.value = field;
<!-- set cursor to watch here? -->
listing.innerHTML = source.documentElement.transfo­rmNode(stylesheet);



}


]]></xsl:comment></SCRIPT>
<SCRIPT for="window" event="onload"><xsl:comment><!­[CDATA[
stylesheet = document.XSLDocument;
source = document.XMLDocument;
sortField = document.XSLDocument.selectSin­gleNode("//@order-by");
]]></xsl:comment></SCRIPT>
<div id="container">
<div id="header">
<a name="Top"></a>
<h1>SCSD Finance Department</h1>
<h2>Cost Centres</h2>
</div>
<div class="content">
<div class="content_header">
<span>Click on a heading to sort</span>
</div>
<div class="content_body">
<p>
<div id="listing">
<xsl:apply-templates select="dataroot"/>
</div>
</p>
</div>
<div class="content_footer">
<span><a href="#top">Back to top</a></span>
</div>
</div>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="dataroot">
<table width="99%" align="center">
<thead>
<th width="10%"><div onClick="sort('CostCentreID')"­><a>Cost
Centre</a></div></th>
<th width="40%"><div
onClick="sort('CostCentreDescr­iption')">Description</div></t­h>
<th width="25%"><div onClick="sort('BM')">Budget Manager</div></th>
<th width="25%"><div onClick="sort('FMO')">F.M.O.</­div></th>
</thead>
<xsl:for-each select="tblCostCentresXML" order-by="CostCentreID">
<tr>
<td><xsl:value-of select="CostCentreID" /></td>
<td><xsl:value-of select="CostCentreDescription" /></td>
<td><xsl:value-of select="BM" /></td>
<td><xsl:value-of select="FMO" /></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

But I want to be able to change the bottom template to something along
the lines of this (which I have working without the javascript sorting)

so that I can style alternate lines differently for legibility;


<xsl:template match="tblCostCentresXML[posit­ion() mod 2 = 1]">
<tr class="odd">


and then


<xsl:template match="tblCostCentresXML">
<tr class="even">


However, When I apply the
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" namespace to correct
the position problem, I get the "Can't use order-by" problem. I know
its sortField = document.XSLDocument.selectSin­gleNode("//@order-by");

that needs changing, but I am a bear of very little brain and
JavaScript bothers me. I am sure an XML/Javascript whizz will know the
answer...

I asked in comp.text.xml, but I think it may be better off in here.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,780
Messages
2,569,611
Members
45,265
Latest member
TodLarocca

Latest Threads

Top