|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Grouping (yet again)
If you're ok using Saxon 7.0 (which implements the new grouping
functionality of XSLT 2.0), then here's the XSLT 2.0 (draft)
solution:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<graph>
<!-- Group first by @group -->
<xsl:for-each-group select="list/datum" group-by="@group">
<data group="{@group}">
<!-- Within group, then group by YYYYWW number (defaults to ascending) -->
<xsl:for-each-group select="current-group()" group-by="concat(@year,@week)">
<xsl:sort data-type="number" select="number(concat(@year,@week))"/>
<datum week="{concat(@year,@week)}">
<!-- Within week, group by dir, ordering descending by sum of @value -->
<xsl:for-each-group select="current-group()" group-by="@dir">
<xsl:sort data-type="number" order="descending"
select="sum(current-group()/@value)"/>
<datum value="{sum(current-group()/@value)}" dir="{@dir}"/>
</xsl:for-each-group>
</datum>
</xsl:for-each-group>
</data>
</xsl:for-each-group>
</graph>
</xsl:template>
</xsl:stylesheet>
On your data, this produces for me:
<?xml version="1.0" encoding="utf-8"?>
<graph>
<data group="Downloads">
<datum week="200143">
<datum value="350" dir="xerces-j"/>
<datum value="115" dir="soap"/>
<datum value="87" dir="batik"/>
<datum value="81" dir="xerces-c"/>
<datum value="74" dir="axis"/>
<datum value="72" dir="fop"/>
<datum value="39" dir="cocoon2"/>
<datum value="38" dir="xalan-j"/>
<datum value="36" dir="cocoon"/>
<datum value="29" dir="crimson"/>
<datum value="8" dir="xerces-p"/>
<datum value="3" dir="xalan-c"/>
</datum>
<datum week="200144">
<datum value="115" dir="soap"/>
<datum value="87" dir="batik"/>
<datum value="74" dir="axis"/>
<datum value="72" dir="fop"/>
<datum value="46" dir="cocoon2"/>
<datum value="36" dir="cocoon"/>
<datum value="29" dir="crimson"/>
<datum value="3" dir="xalan-c"/>
</datum>
</data>
<data group="Uploads">
<datum week="200143">
<datum value="91" dir="batik"/>
<datum value="74" dir="axis"/>
<datum value="29" dir="crimson"/>
<datum value="7" dir="cocoon2"/>
<datum value="3" dir="cocoon"/>
</datum>
<datum week="200144">
<datum value="700" dir="xerces-j"/>
<datum value="230" dir="soap"/>
<datum value="162" dir="xerces-c"/>
<datum value="144" dir="fop"/>
<datum value="76" dir="xalan-j"/>
<datum value="29" dir="crimson"/>
<datum value="16" dir="xerces-p"/>
<datum value="6" dir="xalan-c"/>
</datum>
</data>
</graph>
_____________________________________________________________________
Steve Muench - Developer, Product Manager, XML Evangelist, Author
"Simplifying J2EE and EJB Development with BC4J"
http://otn.oracle.com/products/jdev/htdocs/j2ee_with_bc4j/j2ee_with_bc4j.html
"Building Oracle XML Applications" - www.oreilly.com/catalog/orxmlapp
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
|

Cart








