Subject: RE: 'xsl:variable' as dynamic select for 'xsl:for-each'...
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 17 Nov 2003 13:41:46 -0000
|
>
> My problem is that the select statement of the variable needs to be
> dynamic. Such as... (and I know this doesn't work.. )
>
> <xsl:choose>
> <xsl:when test="$clientid = ''">
> <xsl:variable name="selectclause" select = "//client"/>
> </xsl:when>
> <xsl:otherwise>
> <xsl:variable name="selectclause" select =
> "//client[$clientid]"/>
> </xsl:otherwise>
> </xsl:choose>
>
This is a bit tricky in XSLT 1.0. The usual recommendation for creating
a node-set conditinoally is:
<xsl:variable name="selectclause" select="(//client)[$clientid=''] |
(//client[$clientid!=''])"/>
or more generically
select = then-part[condition] | else-part[not(condition)]
In XSLT 2.0 of course you can do
select="if (condition) then expr-1 else expr-2"
Michael Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|