Re: [xsl] Parameter Sorting Problem With Xalan

Subject: Re: [xsl] Parameter Sorting Problem With Xalan
From: "Rob Lugt" <roblugt@xxxxxxxxx>
Date: Thu, 14 Jun 2001 18:08:07 +0100
Rechell,

I'm pleased to say this is an easy one to solve.  External parameters must
be declared at the top level, i.e. within the <xsl:stypesheet> element.
Just move your parameters up to there and you should be okay.

Regards
Rob Lugt
ElCel Technology
http://www.elcel.com/

----- Original Message -----
From: "Schwartz, Rechell R, NLCIO" <rrschwartz@xxxxxxx>
To: <XSL-List@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Thursday, June 14, 2001 5:43 PM
Subject: [xsl] Parameter Sorting Problem With Xalan


> Hello,
> I have been banging my head against the wall trying to sort with a
> parameter-based xsl stylesheet. I have tried the suggestions posted in
> previous e-mails on this subject as well as in articles on the Web, but I
> still can't get the sorting to work. Basically, I am trying to take an xml
> file and convert it to another xml file that is sorted based on a column
and
> sort order that are dynamically selected by the user. I pass the
parameters
> for the column name and sort order in as strings to the stylesheet using
the
> Tarsnformer's setParameter() method. The problem is that the stylesheet
> always uses the default values for the column names and the sort order,
> regardless of what I pass in as a parameter. Any help would be GREATLY
> appreciated.
> Rechell Schwartz
> Here is the code for how I set the parameters:
> public void sortXSL(String sortParameter, String sortOrder) throws
> TransformerException, TransformerConfigurationException,
> FileNotFoundException
> {
> TransformerFactory tFactory = TransformerFactory.newInstance();
> String xsl = "c:\\directoryname\\xmlStyleSheet.xsl";
> Transformer transformer = tFactory.newTransformer(new StreamSource(xsl));
> DOMResult domResult = new DOMResult();
> transformer.setParameter("sortcolumn",
sortParameter.trim().toUpperCase());
> transformer.setParameter("sortorder", sortOrder);
> transformer.transform(new DOMSource(document), domResult);
> document = (Document)domResult.getNode();
> }
> Here is the xsl stylesheet:
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="<http://www.w3.org/1999/XSL/Transform>"
> version="1.0">
> <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
> <xsl:template match="xml">
> <xml>
> <data>
> <xsl:apply-templates/>
> </data>
> </xml>
> </xsl:template>
> <xsl:template match="data">
> <xsl:param name="sortcolumn" select="'COLUMN1'"/>
> <xsl:param name="sortorder" select="'ascending'"/>
> <xsl:apply-templates select="row">
> <xsl:sort order="{$sortorder}" data-type="text"
> select="*[name()=$sortcolumn]"/>
> </xsl:apply-templates>
> </xsl:template>
> <xsl:template match="row">
> <xsl:copy-of select="."/>
> </xsl:template>
> <xsl:template match="columntype">
> <xsl:copy-of select="."/>
> </xsl:template>
> <xsl:template match="truncated">
> <xsl:copy-of select="."/>
> </xsl:template>
> <xsl:template match="truncationsize">
> <xsl:copy-of select="."/>
> </xsl:template>
> </xsl:stylesheet>
> Finally, here is the xml file that is inputted to the stylesheet:
> <xml>
> <data>
> <row>
> <COLUMN1>ABC</COLUMN1><COLUMN2>ABC2</COLUMN2>
> </row>
> <row>
> <COLUMN1>GHI</COLUMN1><COLUMN2>GHI2</COLUMN2>
> </row>
> <row>
> <COLUMN1>DEF</COLUMN1><COLUMN2>DEF2</COLUMN2>
> </row>
> <columntype><COLUMN1>string</COLUMN1><COLUMN2>string</COLUMN2>
> <truncated>no</truncated>
> <truncationsize>1000</truncationsize>
> </data>
> </xml>
>
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread