Here is a template that will give you the output you requested....
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text" indent="yes"/>
<xsl:template match="/">
<xsl:call-template name="table">
<xsl:with-param name="nodes" select="/root/type/kind/age"/>
<xsl:with-param name="title" select="'ALL TYPES'"/>
</xsl:call-template>
<xsl:for-each select="/root/type">
<xsl:call-template name="table">
<xsl:with-param name="nodes" select="kind/age"/>
<xsl:with-param name="title" select="concat('TYPE ',@name)"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="table">
<xsl:param name="nodes"/>
<xsl:param name="title"/>
<xsl:text>

</xsl:text>
<xsl:value-of select="$title"/>
<xsl:text>
AGE DIV_TOTAL SEC HGT KIU
</xsl:text>
<xsl:call-template name="row">
<xsl:with-param name="minAge" select="0"/>
<xsl:with-param name="maxAge" select="3"/>
<xsl:with-param name="nodes" select="$nodes"/>
</xsl:call-template>
<xsl:text>
</xsl:text>
<xsl:call-template name="row">
<xsl:with-param name="minAge" select="4"/>
<xsl:with-param name="maxAge" select="5"/>
<xsl:with-param name="nodes" select="$nodes"/>
</xsl:call-template>
<xsl:text>
</xsl:text>
<xsl:call-template name="row">
<xsl:with-param name="minAge" select="6"/>
<xsl:with-param name="maxAge" select="10"/>
<xsl:with-param name="nodes" select="$nodes"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="row">
<xsl:param name="minAge"/>
<xsl:param name="maxAge"/>
<xsl:param name="nodes"/>
<xsl:variable name="byAge" select="$nodes[number(@name) >=
$minAge and number(@name) <= $maxAge]"/>
<xsl:value-of select="$minAge"/><xsl:text>-</xsl:text><xsl:value-of
select="$maxAge"/><xsl:text> </xsl:text>
<xsl:value-of select="sum($byAge/division)"/><xsl:text> </xsl:text>
<xsl:value-of select="sum($byAge/division[(_at_)name='SEC'])"/><xsl:text>
</xsl:text>
<xsl:value-of select="sum($byAge/division[(_at_)name='HGT'])"/><xsl:text>
</xsl:text>
<xsl:value-of select="sum($byAge/division[(_at_)name='KIU'])"/><xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
Josh
On Sat, 21 Aug 2004 00:53:56 +0000, William Jordan
<williamhjordan(_at_)hotmail(_dot_)com> wrote:
Sorry about this question. I know there have been many questions regarding
grouping, but I for one am still not getting it.
Here is my problem.
I am using XSLT1.0
My data is in this format.
<type name="UNIT1">
<kind name="DMI">
<age name="2">
<division name="SEC">9</division>
<division name="HGT">4</division>
<division name="KIU">12<division>
</age>
<age name="3">
<division name="SEC">4</division>
<division name="HGT">56</division>
<division name="KIU">125<division>
</age>
<age name="5">
<division name="SEC">61</division>
<division name="HGT">316</division>
<division name="KIU">83<division>
</age>
</kind>
<kind name="TYD">
<age name="3">
<division name="SEC">8</division>
<division name="HGT">71</division>
<division name="KIU">948</division>
</age>
<age name="10">
<division name="SEC">794</division>
<division name="HGT">51</division>
<division name="KIU">6</division>
</age>
</kind>
</type>
<type name="UNIT2">
<kind name="POR">
<age name="10">
<division name="SEC">7</division>
<division name="HGT">94</division>
<division name="KIU">5</division>
</age>
</kind>
</type>
My xsl file should first sum all divisions, grouped by the number of days
aged <age>. So, for the first table, the first row (0 - 3), records where
age is between 0 and 3 should be included. For the second row, records
where the age is between 4 and 5 should be included. All types are included
in this first table.
The second table should include only those records where type = UNIT1. The
rows will work the same (row 1 where age is between 0 and 3, etc...).
Same for the third table.
The output should be thus
ALL TYPES
AGE DIV_TOTAL SEC HGT KIU
0 ? 3 1237 21 131 1085
4 ? 5 460 61 316 83
6 ? 10 957 801 145 11
TYPE UNIT1
AGE DIV_TOTAL SEC HGT KIU
0 ? 3 210 13 60 137
4 ? 5 460 61 316 83
6 ? 10 957 794 51 6
TYPE UNIT2
AGE DIV_TOTAL SEC HGT KIU
0 ? 3 0 0 0 0
4 ? 5 0 0 0 0
6 ? 10 106 7 94 5
I know everyone must be getting tired of grouping questions. I have read up
on them and still don't get how to do them in XSLT.
Thanks in advance
Bill
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
--+------------------------------------------------------------------
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>
--+--