RE: [xsl] populate nodelist variable with a variable in select statement

Subject: RE: [xsl] populate nodelist variable with a variable in select statement
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 1 Dec 2008 23:50:57 -0000
Variables hold values, not fragments of path expressions. There's no
facility in standard XSLT to construct an XPath expression from a string at
run-time, which is what you are trying to do. However, many processors have
an extension to do this, generally called xx:evaluate() or similar.

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: Lara Brian [mailto:lara_bc@xxxxxxxxx]
> Sent: 01 December 2008 23:45
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] populate nodelist variable with a variable in
> select statement
>
> Hi,
> I am trying to populate a variable with a nodelist that takes
> a variable in its select statement.
>
> For example,
> <xsl:variable name="myNodeSet"
> select="site/assets/asset[(type/@code = 'aaa') and
> starts-with(@vpath,'my/path/')  and (lang='us_en') and
> $SEARCH_STRING]"/>
>
> and SEARCH_STRING is defined as
> <xsl:param
> name="SEARCH_STRING"> and ( (related/@code = '111') or
> (related/@code = '222') or (related/@code = '333') )</xsl:param>
>
> My xml is of the form,
> <site>
> <assets>
> <asset vpath="my/path/and/more">
> <lang>eng</lang>
> <featured-item>No</featured-item>
> <type code="aaa"/>
> <related code="111"/>
> <related code="777"/>
> </asset>
> <asset>
>   ...
> </asset>
> </assets>
> <site>
>
> Is
> this even possible? I can do this using <xsl choose> and
> checking each condition and setting the variable accordingly,
> but in future if i have more conditions for the variable, i
> need to add more conditions in all my xsls. It would be nice
> if i can set this variable in one place and then use it use
> it as a replace string.
>
> Thanks for any help or pointers in this regard.

Current Thread