RE: [xsl] Using javascript to pass a parameter to XSL

Subject: RE: [xsl] Using javascript to pass a parameter to XSL
From: Pieter Reint Siegers Kort <pieter.siegers@xxxxxxxxxxx>
Date: Thu, 17 Mar 2005 11:41:42 -0600
Hi Maria,

> I've almost got it but it doesn't quite work.

What exactly doesn't work? Let's see...

To start, first error I get is from MSXML 3.0 that complains: 

"The value of the "order" attribute may only be "ascending" or "descending""

See Michael Kay's 2nd Edition of XSLT, page 296.

I suggest you want the parameter "order" to contain "ascending" or
"descending", right?


<xsl:sort select="$sortKey" order="{$sortOrder}"/>

That should do the trick.


-----Original Message-----
From: Maria Amuchastegui [mailto:mamuchastegui@xxxxxxxxxxx] 
Sent: Jueves, 17 de Marzo de 2005 11:12 a.m.
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Using javascript to pass a parameter to XSL

I have an HTML file with an embedded XML island which calls an external
stylesheet. I want to use Javascript to pass a parameter to the stylesheet
using the addParameter method. I've almost got it but it doesn't quite work.

Here is the HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
<head> <script language="JavaScript"> function sortXML(column,order) { var
xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
var xsldoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
var xslproc;
xsldoc.async = false;
xslt.stylesheet = xsldoc;
var xmldoc = document.getElementById('ChargeableMessages');
xslproc = xslt.createProcessor();
xslproc.input = xmldoc;
xslproc.addParameter("sortKey", column); xslproc.addParameter("sortOrder",
order); xslproc.transform();
container.innerHTML = xmldoc.transformNode(xsldoc);        
<body onload="sortXML('id','ascending');">

<div id="container"></div>

<xml id="ChargeableMessages" style="display:none;">
			<location>Quebec QC</location>
			<number>418 683 1234</number>
			<location>Montreal QC</location>
			<number>514 485 6611</number>
			<location>Winnipeg MB</location>
			<number>204 475 4565</number>


And here is the stylesheet:

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet
	<xsl:param name="sortKey"/>
	<xsl:param name="sortOrder"/>
	<xsl:template match="/">
		<xsl:apply-templates select="chargeablemessages"/>
	<xsl:template match="chargeablemessages">
		<h3>Long distance calls - Click on any column heading to
		<table border="1">
		<th><a href="#"
		<th><a href="#"
		<th><a href="#"
		<th><a href="#"
		<th><a href="#"
		<th><a href="#"

		<xsl:apply-templates select="//message">
		<xsl:sort select="$sortKey" order="$sortOrder"/>

	<xsl:template match="//message">
		<td><xsl:value-of select="id"/></td>
		<td><xsl:value-of select="date"/></td>
		<td><xsl:value-of select="location"/></td>
		<td><xsl:value-of select="number"/></td>
		<td><xsl:value-of select="duration"/></td>
		<td><xsl:value-of select="charges"/></td>

Current Thread