xsl-list
[Top] [All Lists]

Re: sum() applied to a product

2004-06-30 03:20:15
You could use a recursive template that does your stuff
try this one..

 <?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
 <xsl:template match="a">
  <xsl:call-template name="add-b">
   <xsl:with-param name="initial" select="0"/>
   <xsl:with-param name="counter" select="1"/>
   <xsl:with-param name="b-nodes" select="count(b)"/>
  </xsl:call-template>
 </xsl:template>
 <xsl:template name ="add-b">
  <xsl:param name="initial"/>
  <xsl:param name="counter"/>
  <xsl:param name="b-nodes"/>
  <xsl:param name="value"
select="(b[position()=$counter]/c)*(b[position()=$counter]/d)"/>
  <xsl:param name="sum" select="$initial+$value"/>
  <xsl:choose>
   <xsl:when test="$counter &lt; $b-nodes">
    <xsl:call-template name="add-b">
     <xsl:with-param name="initial" select="$sum"/>
     <xsl:with-param name="counter" select="$counter+1"/>
     <xsl:with-param name="b-nodes" select="$b-nodes"/>
    </xsl:call-template>
   </xsl:when>
   <xsl:otherwise>
    <xsl:value-of select="$sum"/>
   </xsl:otherwise>
  </xsl:choose>
 </xsl:template>
</xsl:stylesheet>


Hope this helps
Vasu Ch..
----- Original Message ----- 
From: "Brian Chrisman" <brian(_dot_)chrisman(_at_)hp(_dot_)com>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Wednesday, June 30, 2004 12:36 AM
Subject: [xsl] sum() applied to a product


Uggg... I had some sloppy cut-paste issue in my last post... this is what
it should have been, with a real subject line.  Sorry...

-----------------------
Okay.. I told someone I could do this in a simple xpath expression

<?xml version="1.0"?>
<a>
  <b>
    <c>2</c>
    <d>4</d>
  </b>
  <b>
    <c>3</c>
    <d>6</d>
  </b>
</a>

Where the xpath was to return (2*4) + (3*6) = 26
I made several attempts with xpath's sum() function (using 1.0) and
couldn't get it.
I couldn't even come up with an expression that I thought might work..
even though I tried several which I was certain would fail (which did).

Any ideas?



--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--




<Prev in Thread] Current Thread [Next in Thread>