Re: [xsl] variable in xsl:template match

Subject: Re: [xsl] variable in xsl:template match
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 26 Apr 2007 10:41:18 -0400
Variables are not allowed to be used in the match attribute of a template.

Ref. XSLT 1.0 section 5.3:

  It is an error for the value of the match attribute to contain
  a VariableReference.

You will have to match on a more general expression and then do a variable test within the template rule. Using a layered stylesheet with <xsl:import> you can match on the general expression in the importing stylesheet, and if the variable tests false do an <xsl:apply-imports/> to use the imported stylesheet.

Alternatively you could engage modes and re-apply the generally-matched node in a mode in order to engage other template rules.

I hope this helps.

. . . . . . . . . Ken

At 2007-04-26 10:35 -0400, Steve wrote:
/root/node()[name() = $target]/child

On 4/26/07, Garvin Riensche <g.riensche@xxxxxxx> wrote:
Hello,

Im am wondering if it is possible to pass an xpath expression (or part
of it) from the commandline to the match attribute of a template.

What I am thinking about is something like to following. If I call the
parser with

saxon target=position input.xml styleshee.xsl

And I have a template with something similar to

<xsl:template match="/root/$target/child">

I want the Xpath expression to be evaluated as "/root/position/child".

Any help will be appreciated.

Regards,
Garvin


--
World-wide corporate, govt. & user group XML, XSL and UBL training
RSS feeds:     publicly-available developer resources and training
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Cancer Awareness Aug'05  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread