Subject: Re: [xsl] Avoiding dummy xsl:if with apply-templates From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Sun, 13 Feb 2005 15:24:00 +1100 |
On Sun, 13 Feb 2005 03:53:06 +0000, Frans Englich <frans.englich@xxxxxxxxx> wrote: > > 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)"> > <ul> > <xsl:apply-templates select="$el" /> > </ul> > </xsl:if> > > 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"> > <ul> > <xsl:apply/> > </ul> > </xsl:apply-templates> > > 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? Something like this: <xsl:apply-templates select="elements[1]" mode="list"> <xsl:with-param name="pElements" select="elements"/> </xsl:apply-templates> Then the template to wrap the results in a "ul" is the following: <xsl:template match="element" mode="list"> <xsl:param name="pElements"/> <ul> <xsl:apply-templates select="$pElements" mode="single"/> </ul> </xsl:template> Cheers, Dimitre Novatchev.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Avoiding dummy xsl:if wit, Michael Kay | Thread | Re: [xsl] Avoiding dummy xsl:if wit, Dimitre Novatchev |
Re: [xsl] Avoiding dummy xsl:if wit, G. Ken Holman | Date | Re: [xsl] Avoiding dummy xsl:if wit, Dimitre Novatchev |
Month |