xsl-list
[Top] [All Lists]

Re: [xsl] variable in xsl:template match

2007-04-26 07:53:22
Garvin Riensche 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.

You'll need XSLT 2.0 to have a global variable or parameter in you match attribute.


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".

If you don't care about namespaces (but you should):
<xsl:template match="/root/*[local-name() = $target]/child" >....

If you do care about namespaces, you can do:
<xsl:param name="target" as="xs:QName" select="xs:QName('ns:position') />

<xsl:template match="/root/*[local-name-from-QName($targer) = local-name() and namespace-uri-from-QName($target) = namespace-uri()]/child" >....


If you want to supply more than one level in the path, you should consider using FXSL (I believe it has some XPath parser). I also remember having seen some XPath parser for XSLT 2.0 on this list, but can't remember when.

Cheers,
-- Abel Braaksma



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--