Subject: RE: [xsl] Sorting on different elements... From: "Andrew Welch" <AWelch@xxxxxxxxxxxxxxx> Date: Thu, 22 Jan 2004 10:32:26 -0000 |
> Hi, > > Sorry if this has been asked before - or is a daft question. > > Is it possible to parameterise an <xsl:sort> ? > > Example. > > <root> > <data> > <firstname value="Fred"/> > <lastname value="Smith"/> > </data> > <data> > <firstname value="Tom"/> > <lastname value="Jones"/> > </data> > <data> > <firstname value="Myles"/> > <lastname value="Ward"/> > </data> > ... > </root> > > Sometimes I want to sort <data> on "firstname/@value" > sometimes on "lastname/@value" based on a user parameter of some kind. > > Is this possible? You will need to an extension function if you want to evualate an xpath at run time, so if you have: <xsl:param name="sortParam" select="'lastname/@value'"/> Where you pass in the sort criteria as a parameter, you would need to use: <xsl:sort select="saxon:evaluate($sortParam)"/> The evaluate() extention function will turn a string into an xpath. If your data was simple enough, or more to the point your sort criteria was simple enough, such as a single element name: <xsl:param name="sortParam" select="'lastname'"/> Then you can get away without using an extension functions, such as: <xsl:sort select="*[local-name() = $sortParam]/@value"/> I think this still applies for xslt 2.0. Cheers andrew XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Sorting on different elem, Chris Ward | Thread | RE: [xsl] Percentage in XSL, Willink, Ed |
Re: [xsl] Printing blank line, Vineeth | Date | RE: [xsl] Printing blank line, David . Pawson |
Month |