Subject: Re: [xsl] dynamically set priority in xsl:template From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Fri, 2 Mar 2007 09:37:22 +0000 |
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:
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*"/>
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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] dynamically set priority , Michael Kay | Thread | Re: [xsl] dynamically set priority , Georges Schmitz |
RE: [xsl] dynamically set priority , Michael Kay | Date | Re: [xsl] dynamically set priority , Georges Schmitz |
Month |