Subject: Re: [xsl] sort by predefined order From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Tue, 20 May 2008 09:18:49 +0100 |
2008/5/20 Michael Kay <mike@xxxxxxxxxxxx>: > <xsl:sort select="index-of($sortorder, @ID)"/> > > where > > <xsl:variable name="sortorder" > select="for $t in tokenize(/source/sortorder, ',\s*') return > xs:integer($t)"/> > > This isn't going to be very efficient if sortorder is a long list, in that > case you probably want to use keys to speed it up. I would've tended towards that route anyway - not using sort at all. So modifying the above a bit you get: <xsl:key name="element-by-ID" match="element" use="@ID"/> <xsl:for-each select="for $t in tokenize(/source/sortorder, ',\s*') return xs:integer($t)"> <xsl:apply-templates select="key('element-by-ID', .)"/> </xsl:for-each> or perhaps <xsl:apply-templates select="for $t in tokenize(/source/sortorder, ',\s*') return key('element-by-ID', xs:integer($t))"/> -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] sort by predefined order, Michael Kay | Thread | [xsl] MS KnowledgeBase arcticle: Te, Andrew Welch |
RE: [xsl] sort by predefined order, Michael Kay | Date | [xsl] MS KnowledgeBase arcticle: Te, Andrew Welch |
Month |