[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: dynamically set priority in xsl:template

Subject: RE: dynamically set priority in xsl:template
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 2 Mar 2007 10:37:49 -0000
RE:  dynamically set priority in xsl:template
XSLT variables and parameters don't have a value until run-time, so you
can't refer to them in use-when. What you can do instead is to refer to Java
system properties

use-when="system-property('slenderise.level') = '1'"

which you can set from the command line using -Dslenderise.level=1 or from a
calling Java application using System.setProperty().

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

> -----Original Message-----
> From: Georges Schmitz [mailto:georges.schmitz@xxxxxxxxx] 
> Sent: 02 March 2007 10:30
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re:  dynamically set priority in xsl:template
> 
> 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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.