[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] subtotal on subgroups question
Here is my xml: <?xml version="1.0" encoding="UTF-8" ?> - <document xmlns:sql="http://apache.org/cocoon/SQL/2.0"> - <records> - <row> <center>Rikshospital - Copenhagen</center> <geography>Europe</geography> <inv_name>Prof. P. Olsen</inv_name> <wektotl>0</wektotl> <wekaort>0</wekaort> <wekmitr>0</wekmitr> <country>Denmark</country> <cumwekt>33</cumwekt> <cumweka>23</cumweka> <cumwekm>10</cumwekm> </row> - <row> <center>Rikshospital - Oslo</center> <geography>Europe</geography> <inv_name>Prof. J. Svennevig</inv_name> <wektotl>0</wektotl> <wekaort>0</wekaort> <wekmitr>0</wekmitr> <country>Norway</country> <cumwekt>57</cumwekt> <cumweka>43</cumweka> <cumwekm>14</cumwekm> </row> </records> </document> I am grouping the output data in geography and then country. I got it to work. But I am having difficulties getting the subtotals by geography. Say, I need to get the totals of Europe and Asian or North America. I use sum() function to get the grand total but I could not get the subtotals. Here is my xsl: <xsl:key name="group-by-geo" match="row" use="geography" /> <xsl:key name="group-by-country" match="row" use="concat(geography,' ',country)" /> <xsl:template match="document/records"> <fo:table> <fo:table-column column-width="250pt"/> <fo:table-column column-width="150pt"/> <fo:table-column column-width="50pt"/> <fo:table-column column-width="50pt"/> <fo:table-column column-width="50pt"/> <fo:table-column column-width="50pt"/> <fo:table-column column-width="50pt"/> <fo:table-column column-width="50pt"/> <fo:table-body font-size="8pt" font-family="sans-serif"> <xsl:apply-templates match="row[generate-id(.)=generate-id(key('group-by-geo', geography)[1])]" mode="row_by_group" /> <fo:table-row> <fo:table-cell> <fo:block> <fo:leader leader-pattern="space" leader-length="20cm" /> </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell> <fo:block> <fo:leader leader-pattern="space" leader-length="20cm" /> </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell> <fo:block> TOTALS </fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell font-size="10pt" font-weight="bold"> <fo:block>WORLDWIDE TOTAL</fo:block> </fo:table-cell> <fo:table-cell> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="sum(row/cumwekt)"/></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="sum(row/cumweka)"/></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="sum(row/cumwekm)"/></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="sum(row/wektotl)"/></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="sum(row/wekaort)"/></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="sum(row/wekmitr)"/></fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </xsl:template> <xsl:template match="row" mode="row_by_group"> <xsl:variable name="geo_group" select="key('group-by-geo', geography)" /> <fo:table-row> <fo:table-cell font-weight="bold"> <fo:block><xsl:value-of select="geography" /></fo:block> </fo:table-cell> </fo:table-row> <xsl:apply-templates select="$geo_group[generate-id(.) = generate-id(key('group-by-country', concat(geography,' ',country))[1])]" mode="row_by_country"> <xsl:sort select="country"/> </xsl:apply-templates> </xsl:template> <xsl:template match="row" mode="row_by_country"> <fo:table-row> <fo:table-cell font-weight="bold"> <fo:block text-indent="0.2in"><xsl:value-of select="country" /></fo:block> </fo:table-cell> </fo:table-row> <xsl:apply-templates select="key('group-by-country', concat(geography,' ',country))" mode="render_content"> <xsl:sort select="center"/> </xsl:apply-templates> </xsl:template> <xsl:template match="row" mode="render_content"> <fo:table-row> <fo:table-cell> <fo:block text-indent="0.4in"><xsl:value-of select="center" /></fo:block> </fo:table-cell> <fo:table-cell> <fo:block><xsl:value-of select="inv_name" /></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="cumwekt" /></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="cumweka" /></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="cumwekm" /></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="wektotl" /></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="wekaort" /></fo:block> </fo:table-cell> <fo:table-cell text-align="center"> <fo:block><xsl:value-of select="wekmitr" /></fo:block> </fo:table-cell> </fo:table-row> </xsl:template> Your help is greatly appreciated. Thanks, Narisa Ibeling XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|