This solution was offered up when I had the same question a few weeks
ago.
<xsl:function name="my:performSort" as="element()+">
<xsl:param name="list" as="element()+" />
<xsl:param name="sortKey" as="element()+" />
<xsl:variable name="sortedList" as="element()+">
<xsl:for-each select="$list">
<xsl:sort select="*[name() = $sortKey[1]]" />
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:variable>
<xsl:sequence select="if ($sortKey[2])
then my:performSort($sortedList,
subsequence($sortKey, 2))
else $sortedList" />
</xsl:function>
Thanks!
Angela
-----Original Message-----
From: Jeff Sese [mailto:jsese(_at_)asiatype(_dot_)com]
Sent: Thursday, June 21, 2007 9:28 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Sorting Using A Predefined Order
Thanks for all the answers, I think I'll gonna go with Mr. Kay's
solution cause the defined ordering lists a large number of keys.
-- Jeff
David Carlisle wrote:
Andrew> which can also be written as:
Andrew> <xsl:apply-templates select="(div[2], div[3], div[5],
Andrew> div[1], div[4])"/>
oh yes if we're using xpath2 there's other ways as well eg
<xsl:apply-templates select="for $p in (2,3,5,1,4) return div[$p]"/>
this is equivalent to Andrew's although actually neither's quite
equivalent to my original suggestion of 5 apply-templates calls, as in
that case position() and last() would be equal to 1 each time whereas
in either of the versions here, last() is 5 and position() would be
1..5, which is often preferable.
David
______________________________________________________________________
__ The Numerical Algorithms Group Ltd is a company registered in
England and Wales with company number 1249803. The registered office
is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs.
______________________________________________________________________
__
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--