xsl-list
[Top] [All Lists]

Re: [xsl] variable in xsl:template match

2007-04-26 08:13:24
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

--~------------------------------------------------------------------
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>
--~--