[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Sorting on different elements...
> 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|