RE: [xsl] passing external parameter to template match

Subject: RE: [xsl] passing external parameter to template match
From: "Andrew Welch" <AWelch@xxxxxxxxxxxxxxx>
Date: Wed, 30 Jul 2003 09:21:35 +0100
> 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??

All template matches are fixed and cannot be constructed at runtime.  If
you want to have truly dynamic template matching check out Demtire's
FXSL (http://fxsl.sourceforge.net/).

The usual way of handling cases when the number of possible outcomes for
the variable are known, is to have:

<xsl:template name="foo">
  <xsl:param name="$element"/>
  <xsl:choose>
    <xsl:when test="$element=" ...">...</xsl:when>
    <xsl:when test="$element=" ...">...</xsl:when>

and so on for each possible value of $element.

Other ways include using the vendor:evaluate() extension function, or to
construct a stylesheet from a stylesheet where the match attributes of
the second stylesheet are constructed by the first.

cheers
andrew

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


Current Thread