Subject: Re: [xsl] sorting, xslt 2.0 From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 16 Mar 2021 16:28:29 -0000 |
There's another option which I forgot about because I tend to prefer one of the others: compute the sort key in the body of xsl:sort: >> <xsl:for-each select="term"> >> <xsl:sort> >> <xsl:choose> >> <xsl:when test="fr/@sort"> >> <xsl:value-of select="fr/@sort"/> >> </xsl:when> >> <xsl:otherwise> >> <xsl:value-of select="(lower-case(substring(fr,1,1)))"/> >> </xsl:otherwise> >> </xsl:choose> >> </xsl:sort> > On 16 Mar 2021, at 16:24, Michael Kay mike@xxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > As David C and Martin suggest, write the sort key computation as a single XPath expression if you can. > > In the rare cases where you can't, call out to a function: compute the sort key in a separate xsl:function, and call the function in xsl:sort/@select. > > Michael Kay > Saxonica > >> On 16 Mar 2021, at 16:08, Dave Pawson dave.pawson@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: >> >> xml >> >> <term> >> <fr sort="">sourire</fr> >> ... >> </term> >> >> context is term >> I want to sort on fr/@sort >> or (if empty) >> <xsl:value-of select="(lower-case(substring(fr,1,1)))"/> >> >> error XTSE0010 Within xsl:for-each, xsl:sort elements must come before >> other instructions >> >> <xsl:for-each select="term"> >> <xsl:variable name='sort'> >> <xsl:choose> >> <xsl:when test="fr/@sort"> >> <xsl:value-of select="fr/@sort"/> >> </xsl:when> >> <xsl:otherwise> >> <xsl:value-of select="(lower-case(substring(fr,1,1)))"/> >> </xsl:otherwise> >> </xsl:choose> >> </xsl:variable> >> >> >> <xsl:sort select="$sort"/> >> >> >> Any suggestions for a workaround please? >> >> TiA >> >> >> -- >> Dave Pawson >> XSLT XSL-FO FAQ. >> Docbook FAQ.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] sorting, xslt 2.0, Michael Kay mike@xxx | Thread | Re: [xsl] sorting, xslt 2.0, Dave Pawson dave.paw |
Re: [xsl] sorting, xslt 2.0, Dave Pawson dave.paw | Date | Re: [xsl] sorting, xslt 2.0, Dave Pawson dave.paw |
Month |