[no subject]

For instance, I have the following XML data:

  <item type="fruit" name="apple" rotten="6" total="10"/>
  <item type="fruit" name="orange" rotten="2" total="10"/>
  <item type="fruit" name="pear" rotten="1" total="4"/>
  <item type="vegetable" name="carrot" rotten="0" total="5"/>
  <item type="vegetable" name="potato" rotten="1" total="2"/>

To which I apply a stylesheet to get a nice table output. I know how to get 
to overall sums, but I don't know how to get the group/inner sums (denoted 
by '?'):

type	name	rotten	total	percent
	apple	6	10	60
	orange	2	10	20
	pear	1	4	25
	total	?	?	?
	carrot	0	5	0
	potato	1	2	50
	total	?	?	?
total		10	31	32.3

Here are some assumptions that can be made about the data:
* The items are guaranteed to be sorted by the "type" attribute.
* I don't know the possible values of "type" beforehand.
* Its format cannot be changed.

* I am using XSLT 1.0, but upgrading to 2.0 might be possible (I'm not 
* I am using python 2.4 with libxml2 and libxslt.

Here's the stylesheet I have now (that generated the above table):

<xsl:stylesheet version="1.0" 
	<xsl:template match="/">

    <xsl:for-each select="//item">
      <xsl:if test="not(preceding-sibling::*[1]/@type=@type)">
        <tr><td><xsl:value-of select="@type"/></td></tr>

        <td><xsl:value-of select="@name"/></td>
        <td><xsl:value-of select="@rotten"/></td>
        <td><xsl:value-of select="@total"/></td>
        <td><xsl:value-of select="format-number(@rotten div @total * 

      <xsl:if test="not(following-sibling::*[1]/@type=@type)">

      <td><xsl:value-of select="sum(//item/@rotten)"/></td>
      <td><xsl:value-of select="sum(//item/@total)"/></td>
      <td><xsl:value-of select="format-number(sum(//item/@rotten) div 
sum(//item/@total) * 100,'##.#')"/></td>

Thank you,

Current Thread