xsl-list
[Top] [All Lists]

RE: [xsl] Keeping a running total?

2006-07-10 10:22:13
You're out of luck with for-each, because conceptually at least it processes
all the factories in parallel. So you can't accumulate data as you go.
Instead for this kind of problem you need recursion: to a process a list of
factories, process the first factory, then process the rest of the factories
by a recursive call, passing any necessary data (such as your "running
total") as a parameter.

Michael Kay
http://www.saxonica.com/

-----Original Message-----
From: Steve [mailto:subsume(_at_)gmail(_dot_)com] 
Sent: 10 July 2006 18:12
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Keeping a running total?

Problem:  I need to make a table of the output required of 4 
factories next month.

                  Widgets    Gadgets
Factory A     2
Factory B     3
Factory C                       4
Factory D                       1

Widget quota = 5
Gadget quota = 5

---

My current xsl looks something like.

<xsl:for-each select="document('factories.xml')//factory">
       <xsl:variable name="widgets">
             Has quota been reached? Then return 0.
             Otherwise, give as many possible without going 
over the quota.
       </xsl:variable>
       <xsl:variable name="gadgets">
              Has the widget quota been filled?
              Then start making gadgets!
               Has this quota been reached? (etc).
       </xsl:variable>
      <tr>
              <td><xsl:value-of select="@name" /></td>
              <td><xsl:value-of select="$widgets" /></td>
              <td><xsl:value-of select="$gadgets" /></td>
      </tr>
</xsl:for-each>

**Lines which I can't describe in XSL have been translated to 
English 3.1b

----------

When the quota of Widgets has been reached, I need the 
factories to start making Gadgets. In the above example the 
quota is reached at factory B and factory C begins making Gadgets.

Howto?

-Steve

PS: For now I am using a for-each (factory) to iterate 
through the totals and generate numbers. It seems that 
templates are beneficial for things such as this, but I have 
not yet mastered their use and so if this can be more easily 
done with templates, I'd like to know how.

--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>
--~--