Subject: Re: [xsl] Sort on multiple elements|
From: "J.Pietschmann" <j3322ptm@xxxxxxxx>
Date: Fri, 23 Aug 2002 23:47:13 +0200
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,firstname (sort first by lastname and within it sort by firstname)
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]"/> ...