This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: What is wrong with this?
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: "Khalid" <k_ali at telusplanet dot net>
- Cc: XSL-List at lists dot mulberrytech dot com
- Date: Tue, 22 Jan 2002 22:28:39 +0000
- Subject: Re: [xsl] What is wrong with this?
- Organization: Jeni Tennison Consulting Ltd
- References: <3c4de147.5014.0@telusplanet.net>
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi Khalid,
> can some one please let me know what is wrong with the code below.
>
> <xsl:template match = "distribution-transport-load">
> <xsl:call-template name = "get-supply-total">
> <xsl:with-param name = "supplyroot" select = "."/>
> </xsl:call-template>
> </xsl:template>
Here, you pass the get-supply-total template a $supplyroot parameter
with a value of a node set containing a single node - the context node.
> <xsl:template name = "get-supply-total">
> <xsl:param name = "supplyroot"/>
> <xsl:choose>
> <xsl:when test = "$supplyroot">
> <xsl:variable name = "first" select= "$supplyroot[1]"/>
> <xsl:variable name = "remaining-total">
> <!-- for some reasons it can not gets in this block of code,there fore does
> not increment the total
> -->
> <xsl:call-template name = "get-supply-total">
> <xsl:with-param name = "supplyroot" select = "$supplyroot[position()!=1]"/>
> </xsl:call-template>
> </xsl:variable>
> <xsl:value-of select = "$first/load-quantity + $remaining-total"/>
> </xsl:when>
> <xsl:otherwise>0</xsl:otherwise>
> </xsl:choose>
> </xsl:template>
Whenever this template is called from the distribution-transport-load
template, the $supplyroot parameter is a node set containing a single
node. In the above recursive call, you pass a new value for the
$supplyroot parameter - the rest of the nodes in the $supplyroot node
set (after the first one). Since the $supplyroot parameter only ever
contains a single node, you pass an empty node set as the value of the
$supplyroot parameter, which means that this recursive call always
returns the value 0 (from the xsl:otherwise).
Your template would work just fine if the $supplyroot parameter were
passed a node set that contained more than one node. Unfortunately, I
can't work out what you should be setting it to without seeing your
XML document or the rest of your stylesheet...
But actually, there's nothing in your template that I can see that
would stop you from using the sum() function instead, something like:
sum($supplies/load-quantity)
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list