Re: [xsl] dynamically set priority in xsl:template

Subject: Re: [xsl] dynamically set priority in xsl:template
From: Georges Schmitz <georges.schmitz@xxxxxxxxx>
Date: Fri, 02 Mar 2007 11:29:34 +0100
Andrew Welch wrote:
> On 3/2/07, Georges Schmitz <georges.schmitz@xxxxxxxxx> wrote:
>> I want to dynamically set the priority of a template (with
>> $expand.level), with the objective to control the "amount of output"
>> from outside the stylesheet via parameter setting.
>>
>>   <xsl:param name="slenderise.level" select="-1" />
>>
>>   <xsl:template match="@db:type |
>>                        @db:size |
>>                        @db:nullable"
>>                        mode="slenderise"
>>                        priority="$slenderise.level" />
>
...
> <xsl:variable name="suppress" select="tokenize($names, ' ')"
> as="xs:string*"/>
Thank you for this hint, but it isn't practicable for me (I gave just a
simplified example); the stylesheet is rather complex: 11
apply-templates in mode "slenderise" ...

I would prefer the "pass-fail" solution proposed by Michael Kay, but
when I tried the following, I get again an error:
  <xsl:template match="@db:type |
                       @db:size |
                       @db:nullable"
                       mode="slenderise"
                       priority="2" />
                       use-when="$slenderise.level = 1"

==>
   XPST0008: Error in use-when expression. XPath syntax error at char 18
on line 211 in
  {$slenderise.level = 1}:
    Variable $slenderise.level has not been declared

The parameter is definitively set, so what is wrong? "$slenderise.level
= 1" can be evaluated to a boolean, or am I missing another thing?

Current Thread