Subject: RE: [xsl] Is there another way to do this? From: Jarno.Elovirta@xxxxxxxxx Date: Wed, 3 Mar 2004 12:38:19 +0200 |
Hi, > I use this call when I have matched="saledetails": > > <xsl:call-template name="grandtotal"> > <xsl:with-param name="nodenumber" select="1"/> > <xsl:with-param name="grandtotal" select="0"/> > </xsl:call-template> > > To this template: > > <xsl:template name="grandtotal"> > <xsl:param name="nodenumber"/> > <xsl:param name="grandtotal"/> > <xsl:choose> > <xsl:when test="not(item[$nodenumber])"> > <xsl:value-of select="format-number($grandtotal, '#0.00')"/> > </xsl:when> > <xsl:otherwise> > <xsl:call-template name="grandtotal"> > <xsl:with-param name="nodenumber" select="$nodenumber+1"/> > <xsl:with-param name="grandtotal" > select="$grandtotal+(item[$nodenumber]/units * > item[$nodenumber]/unit.price)"/> > </xsl:call-template> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > This works but I'm just wondering is there a simpler method > for doing this? Not really. You could use e.g. FXSL so you wouldn't have to write the recursive template; implementation-wise, I'd probably use e.g. <xsl:apply-templates select="item[1]" mode="sum"/> in saledetails element with <xsl:template match="item" mode="sum"> <xsl:param name="grandtotal" select="0" /> <xsl:choose> <xsl:when test="not(following-sibling::item)"> <xsl:value-of select="format-number($grandtotal+(units * unit.price), '#0.00')"/> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="following-sibling::item[1]" mode="sum"> <xsl:with-param name="grandtotal" select="$grandtotal+(units * unit.price)"/> </xsl:apply-templates> </xsl:otherwise> </xsl:choose> </xsl:template> but that's just a matter of taste and doesn't make the template any more simple, really. Cheers, Jarno XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: Re: [xsl] Determining the depth, cknell | Thread | [xsl] Iterative variation of attrib, i92agcad |
[xsl] Is there another way to do th, Tim Lumley | Date | Re: [xsl] Is there another way to d, David Carlisle |
Month |