This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Sort on multiple elements
Jitu wrote:
i can use multiple xsl:sort statements, to sort on many elements.
But my problem is i do not know in advance, how many levels of sorting
is required.
...
I may want to sort
by lastname
OR
by lastname,firstname (sort first by lastname and within it sort by
firstname)
OR
by salary, age, lastname (sort by salary and within it sort by age and
within that sort by lastname)
This fact i do not know in advance therefore i cannot hardcode it into
my xsl. In other words i cannot write a fixed number of xsl:sort
statements.
Note that you have to pull tricks to sort for
a dynamical element name. As for the levels,
code for the maximum level and use a non-existant
field for the unused sort levels, for example
<xsl:param name="level1" select="'lastname'"/>
<xsl:param name="level2" select="'firstname'"/>
<xsl:param name="level3" select="'*'"/> <!-- invalid for any element name -->
...
<xsl:for-each select="employee">
<xsl:sort select="*[name()=$level1]"/>
<xsl:sort select="*[name()=$level2]"/>
<xsl:sort select="*[name()=$level3]"/>
...
HTH
J.Pietschmann
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list