[xsl] Re: passing external parameter to template match

Subject: [xsl] Re: passing external parameter to template match
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Wed, 30 Jul 2003 11:10:48 +0200
"Adriaan Woerléé" <ade@xxxxxxx> wrote in message
news:37522.203.18.39.2.1059520262.squirrel@xxxxxxxxxxxxxxx
> Hi,
>     I wanted to send an external paramater to the the template to create
> dynamic matching
>
>         <xsl:param name="element" select="'default'"/>
>         <xsl:template match="{$element}">
>
> but I get a TransformerException Error : illegal tokens $
>
> is there a better way to dynamically populate the 'match' attribute of
> template??

A match pattern cannot contain a xsl:variable reference.

There are two ways to do what you want:

1. Pure "push" style:

   <xsl:template match = node()>
     <xsl:if test="count(. | $element) = count($element)">
        <!-- All processing here -->
     </xsl:if>
   </xsl:template>

 2. Pull style:

   <xsl:apply-templates select="$element"
mode="mySpecialParameterisedMode"/>


$element must be a node-set containing all nodes that must be matched.

In 1. we test if the current node is one of the elements in the $element
node-set and if so, process it.

In 2. we have a template that will only be used in a very special mode. In
this same mode we apply templates to all nodes contained in the $element
node-set.


=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL




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


Current Thread