Subject: [xsl] Parameter Sorting Problem With Xalan From: "Schwartz, Rechell R, NLCIO" <rrschwartz@xxxxxxx> Date: Thu, 14 Jun 2001 12:43:31 -0400 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] if not match "match", Michael Kay | Thread | RE: [xsl] Parameter Sorting Problem, Gareth Sylvester-Bra |
RE: [xsl] Asp Variable into XSLT, Piers Haken | Date | RE: [xsl] Parameter Sorting Problem, Gareth Sylvester-Bra |
Month |