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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Parameter Sorting Problem, Gareth Sylvester-Bra | Thread | RE: [xsl] Parameter Sorting Problem, Schwartz, Rechell R, |
RE: [xsl] Parameter Sorting Problem, Gareth Sylvester-Bra | Date | RE: [xsl] error after attribute, Michael Kay |
Month |