Re: [xsl] Fwd: Parameterised Sorts

Subject: Re: [xsl] Fwd: Parameterised Sorts
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 10 Dec 2003 11:57:50 GMT
   <xsl:sort select="*[local-name()=string($sortRequested)]" 

the * means all element children, so..

     If $sortRequested = '@name' and name is an attribute of group it dosn't work.

in that case you are sorting on a key found by taking the element
children with local-name equal to the name "@foo" but there are no
elements called foo (element names are not allowed to begin  with @)

What you want in this case is to set your $sortRequested variable to
"foo" and then select the attribute with that name:

 <xsl:sort select="@*[local-name()=$sortRequested]"/>

(you don't need string() in either case as a comparison with
local-name() will always be a string comparison.)

Now you want to select either an element or an attribute with name foo
so that's:

 <xsl:sort select="(*|@*)[local-name()=$sortRequested]"/>

so long as no element has an attribute an and an element of the same
name. If you had

<x foo="1"><foo>2</foo></x>

and $sortRequested was "foo" then the above would sort as "1" as teh
attribute would be used not the element (as it's first in document



This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:

 XSL-List info and archive:

Current Thread