xsl-list
[Top] [All Lists]

Re: passing external parameter to template match

2003-07-30 02:10:48

"Adriaan Woerléé" <ade(_at_)ip9(_dot_)org> wrote in message
news:37522(_dot_)203(_dot_)18(_dot_)39(_dot_)2(_dot_)1059520262(_dot_)squirrel(_at_)pop(_dot_)jtan(_dot_)com(_dot_)(_dot_)(_dot_)
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



<Prev in Thread] Current Thread [Next in Thread>