[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] xsl:sort not working within xsl:choose


Subject: RE: [xsl] xsl:sort not working within xsl:choose
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 10 Dec 2004 14:35:45 -0000

You are doing exactly what the error message says: you are using xsl:sort in
a place where it may not be used. Within xsl:for-each, it must be the first
child of the xsl:for-each.

Try using two sort keys:

 <xsl:for-each select="codes/value[code_type = $code_type]">
    <xsl:sort select="*[name()=$select_sort_field]" />
    <xsl:sort select="code" />

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Hardy Merrill [mailto:HMerrill@xxxxxxxxxxxxxxxx] 
> Sent: 10 December 2004 13:55
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] xsl:sort not working within xsl:choose
> 
> MSXML4
> 
> I'm passing a script parameter into the xsl style sheet that tells me
> what the sort field should be:
> 
> <xsl:param name="select_sort_field"/>
> 
> and then, within my for-each loop, I have the code to decide what to
> sort by:
> 
> <xsl:for-each select="codes/value[code_type = $code_type]">
> 	
> 	<xsl:choose>
> 	<xsl:when test="$select_sort_field">
> 		<xsl:sort select="*[name()=$select_sort_field]" />
> 	</xsl:when>
> 	<xsl:otherwise>
> 		<xsl:sort select="code" />
> 	</xsl:otherwise>
> 	</xsl:choose>
> 	
> <!--	<xsl:sort select="code" /> -->
> <!--	<xsl:sort select="*[name()=$select_sort_field]" /> -->
> 
> -----------------------------------
> 
> but that's not working - I keep getting this error:
> 
> msxml4.dll error '80004005' 
> 
> Keyword xsl:sort may not be used here.
> 
> ------------------------------------
> 
> What am I doing wrong?  The thing is, if I take out the entire choose,
> and just use
> 
>    <xsl:sort select="code" />
> 
> or
> 
>    <xsl:sort select="*[name()=$select_sort_field]" />
> 
> it seems to work.  The thing is, I wanted to make it bullet proof in
> case the script invoking this style sheet doesn't pass in the
> $select_sort_field parameter - if not passed in, I want it to sort by
> "code".
> 
> TIA.
> 
> Hardy Merrill.


Current Thread
Keywords
xsl