Re: [xsl] Evaluating parameter in <xsl:when> vs evaluating parameter in <xsl:sort>.

Subject: Re: [xsl] Evaluating parameter in <xsl:when> vs evaluating parameter in <xsl:sort>.
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Wed, 24 Jul 2002 14:12:07 +0100
Hi Roelf,

> In the following snippet the " xalan:evaluate($sortParameter) " gets
> the correct value when placed in the <xsl:sort> tag but not does not
> seem to do so when placed in the <xsl:when> tag. Is there any reason
> why the evaluation in the <xsl:when> tag is not working in my code?

You're doing:

>         <xsl:when test="xalan:evaluate($sortParameter) = 'name'" >
>               <xsl:for-each select="query">
>               <xsl:sort select="xalan:evaluate($sortParameter)"
>                         order="ascending"/>

In the test attribute of xsl:when, the context node, against which the
$sortParameter expression is evaluated, is the current node in the
template, whatever that is.

In the select attribute of xsl:sort, the context node is the query
element that you're sorting (selected by the xsl:for-each).

So my guess would be that the reason that it's not working is that the
context node is different in the two cases, and that doing something
like:

  <xsl:when test="xalan:evaluate(concat('query/', $sortParameter)) =
                  'name'">
    ...
  </xsl:when>

would work.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread