Re: [xsl] variable in xsl:template match

Subject: Re: [xsl] variable in xsl:template match
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Thu, 26 Apr 2007 17:10:59 +0200
Abel Braaksma wrote:
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.

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



Hmm, that was a little verbose. This also works well and is easier to read and understand, and now the parameter can be a simple string (but make sure the prefix is the same as the in-scope prefix of the element you are testing, which in turn means that you must choose your prefixes wisely):

<xsl:param name="target" as="xs:string" select=" 't:child1' " />
<xsl:template match="/root/*[resolve-QName($target, .) = resolve-QName(name(), .)]/child" >....


(I am not really accustomed with these functions, not sure what pitfalls you should be aware of before applying this in a stable environment)

Cheers,
-- Abel Braaksma

Current Thread