xsl-list
[Top] [All Lists]

RE: 'xsl:variable' as dynamic select for 'xsl:for-each'...

2003-11-17 06:41:46

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