[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: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Fri, 2 Mar 2007 09:37:22 +0000
Re:  dynamically set priority in xsl:template
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:template match="@* | node()" mode="slenderise">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()" mode="slenderise"/>
    </xsl:copy>
  </xsl:template>

But I get this error:
  XTSE0530: Invalid numeric value for priority (0.0)

Is it not possible at all, to set the priority by a parameter? Because
it makes no difference if I declare $slenderise.level to be of type
xs:integer ,xs:double, etc. (which are numbers I suppose) or if I use
the function number() in the priority attribute. I couldn't find any
example to such a use case on the net.

Priorities are compile time values, so you can't change them. Don't you just need:

<xsl:template match="somenode[$param = -1]"/>

...depending on the number of other priorities in you stylesheet?

If you selectively want to suppress elements through a parameter then
you can do the following:

<xsl:param name="names" as="xs:string"/>
<xsl:variable name="suppress" select="tokenize($names, ' ')" as="xs:string*"/>

<xsl:template match="*[name() = $suppress]"/>

The names of the elements you want to suppress are passed to the
stylesheet as a space separated list, the $suppress variable tokenizes
the list into a sequence of strings, and the no-op template matches
any element with name equal to any item in that sequence.

cheers
andrew

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

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

Buy Stylus Studio Now

Cast Your Vote

We need your help – Vote for DataDirect XML Products!

  • Best SOA or XML site

Winners and finalists announced at SOA World Conference in November.

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.