[xsl] Avoiding dummy xsl:if with apply-templates

Subject: [xsl] Avoiding dummy xsl:if with apply-templates
From: Frans Englich <frans.englich@xxxxxxxxx>
Date: Sun, 13 Feb 2005 03:53:06 +0000
Hello all,

I find myself struggling with a construct I often need: conditionally, "else", 
do something radically different depending on input.

For example:

           <xsl:variable name="el" select="elements" />
            <xsl:if test="count($el)">
                    <xsl:apply-templates select="$el" />

Here, the if statement and variable declaration exists solely to avoid an 
empty ul element; the special condition which occurs when the select misses.

Producing xhtml tables is a similar case. I find these common situations in 
XSLT programming.

These examples can be solved with usual conditional tests, as above, but I 
want to push the conditionalis upon the engine and write with templates; the 
clean, XSLT-like way. AFAICT, this made-up syntax would solve the problem:

<xsl:apply-templates select="elements">

Hence, when the select clause fails, the apply-templates body is not entered, 
and the conditionalis is not needed to be manually written and comes 
naturally, even.

What is the proper way of doing what I want? 



Current Thread