Subject: RE: [xsl] Keeping a running total? From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 10 Jul 2006 18:21:51 +0100 |
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@xxxxxxxxx] > Sent: 10 July 2006 18:12 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Keeping a running total?, Steve | Thread | Re: [xsl] Keeping a running total?, Steve |
[xsl] Keeping a running total?, Steve | Date | Re: [xsl] Keeping a running total?, Steve |
Month |