|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Dynamic Sorting
The usual solution, which covers simple cases, is <xsl:sort select="*[name()=$sortkey]"/> For more complex cases you need to either (a) use xx:evaluate(), or (b) generate or modify the stylesheet source before its compiled. Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Ben Macaulay > Sent: 07 November 2002 19:34 > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > Subject: Dynamic Sorting > > > Question -> Can you define a template that allows you to > define, at runtime, the elements that you want to sort on? > For instance, we have an XML document as follows. > > <records> > <contact id="0001"> > <title>Mr</title> > <forename>John</forename> > <surname>Smith</surname> > </contact> > <contact id="0002"> > <title>Dr</title> > <forename>Amy</forename> > <surname>Jones</surname> > </contact> > ... > <records> > > What we want to do is sort by (surname, forename), or sort by > (title, surname), or whatever we decide on the day. In our > XSL, we would like to be able to specify variables that > dictate how the sorting should be done. For instance, > consider the following XSL extract. > > <xsl:variable name="sort-by-element-1" value="surname" /> > <xsl:variable name="sort-by-element-2" value="forename" /> > > In reality we are not going to hard code the variable values > like this, but rather pull them in from another document by > way of the document() function, but that's not important right now. > > The problem is, later on in the XSL we can't have <xsl:sort > select="{$sort-by-element-1}" /> since xsl:sort's select > attribute doesn't accept attribute value templates. You can > specify attribute value templates for xsl:sort's other > attributes, for instance the article at > http://www.biglist.com/lists/xsl-list/archives/200012/msg00392 .html demonstrates how to dynamically specify a descending or ascending sort order. However you can't do this for the select attribute. Short of creating nonportable XSL by using saxon:evaluate() or xalan:evaluate() I can't see a way around this. Any suggestions? Can this kind of dynamic sorting be done at all? Cheers, Ben Macaulay Senior Software Engineer DHL Worldwide Express XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list 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
|

Cart








