This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Grouping (yet again)
- From: "Steven Noels" <stevenn at outerthought dot org>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Tue, 19 Feb 2002 16:22:27 +0100
- Subject: [xsl] Grouping (yet again)
- Reply-to: xsl-list at lists dot mulberrytech dot com
OK, I give up :-(
Having spent most of the day trying to add some structure to a file, I'm lost on Muenchian stuff :-(
partial inputfile
<list>
<datum day="02" dir="axis" dow="5" group="Downloads" month="11" value="74" week="43" year="2001"/>
<datum day="02" dir="batik" dow="5" group="Downloads" month="11" value="87" week="43" year="2001"/>
<datum day="02" dir="cocoon" dow="5" group="Downloads" month="11" value="36" week="43" year="2001"/>
<datum day="02" dir="cocoon2" dow="5" group="Downloads" month="11" value="39" week="43" year="2001"/>
<datum day="02" dir="crimson" dow="5" group="Downloads" month="11" value="116" week="43" year="2001"/>
<datum day="02" dir="fop" dow="5" group="Downloads" month="11" value="241" week="43" year="2001"/>
<datum day="02" dir="soap" dow="5" group="Downloads" month="11" value="296" week="43" year="2001"/>
<datum day="02" dir="xalan-c" dow="5" group="Downloads" month="11" value="25" week="43" year="2001"/>
<datum day="02" dir="xalan-j" dow="5" group="Downloads" month="11" value="245" week="43" year="2001"/>
<datum day="02" dir="xang" dow="5" group="Downloads" month="11" value="7" week="43" year="2001"/>
<datum day="02" dir="xerces-c" dow="5" group="Downloads" month="11" value="368" week="43" year="2001"/>
<datum day="02" dir="xerces-j" dow="5" group="Downloads" month="11" value="1125" week="43" year="2001"/>
<datum day="02" dir="xerces-p" dow="5" group="Downloads" month="11" value="56" week="43" year="2001"/>
<datum day="03" dir="axis" dow="6" group="Downloads" month="11" value="16" week="43" year="2001"/>
<datum day="03" dir="batik" dow="6" group="Downloads" month="11" value="4" week="43" year="2001"/>
<datum day="03" dir="cocoon" dow="6" group="Downloads" month="11" value="3" week="43" year="2001"/>
<datum day="03" dir="cocoon2" dow="6" group="Downloads" month="11" value="7" week="43" year="2001"/>
<datum day="03" dir="crimson" dow="6" group="Downloads" month="11" value="29" week="43" year="2001"/>
<datum day="03" dir="fop" dow="6" group="Downloads" month="11" value="72" week="43" year="2001"/>
<datum day="03" dir="soap" dow="6" group="Downloads" month="11" value="115" week="43" year="2001"/>
<datum day="03" dir="xalan-c" dow="6" group="Downloads" month="11" value="3" week="43" year="2001"/>
<datum day="03" dir="xalan-j" dow="6" group="Downloads" month="11" value="38" week="43" year="2001"/>
<datum day="03" dir="xerces-c" dow="6" group="Downloads" month="11" value="81" week="43" year="2001"/>
<datum day="03" dir="xerces-j" dow="6" group="Downloads" month="11" value="350" week="43" year="2001"/>
<datum day="03" dir="xerces-p" dow="6" group="Downloads" month="11" value="8" week="43" year="2001"/>
[...]
</list>
desired outputformat
<foo>
<data group="Downloads">
<datum week="200143" total="(sum of value atts for this week)">
<datum dir="projectname" value="downloads"/>
<datum dir="" value=""/>
<datum dir="" value=""/>
... (repeated for each dir)
</datum>
... (repeated for each week)
</data>
... (repeated for each group)
</foo>
my stylesheet so far
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="datum-group" match="datum" use="@group"/>
<xsl:key name="datum-groupyearweek" match="datum" use="concat(@group,'-',@year,'-',@week)"/>
<xsl:key name="datum-groupyearweekdir" match="datum" use="concat(@group,'-',@year,'-',@week,'-',@dir)"/>
<xsl:template match="list">
<graph>
<xsl:for-each select="datum[generate-id() = generate-id(key('datum-group', @group)[1])]">
<data group="{@group}">
<xsl:for-each select="key('datum-group', @group)
[generate-id() =
generate-id(key('datum-groupyearweek', concat(@group,'-',@year,'-',@week))[1]
)]">
<datum week="{concat(@year,@week)}">
<xsl:for-each select="key('datum-groupyearweek', concat(@group,'-',@year,'-',@week))
[generate-id() =
generate-id(key('datum-groupyearweekdir', concat(@group,'-',@year,'-',@week,'-',@dir))[1]
)]">
<datum dir="{@dir}" value="{@value}"/>
</xsl:for-each>
</datum>
</xsl:for-each>
</data>
</xsl:for-each>
</graph>
</xsl:template>
</xsl:stylesheet>
and output so far
<?xml version="1.0" encoding="UTF-8"?>
<graph>
<data group="Downloads">
<datum week="200143">
<datum value="74" dir="axis"/>
<datum value="87" dir="batik"/>
<datum value="36" dir="cocoon"/>
<datum value="39" dir="cocoon2"/>
<datum value="116" dir="crimson"/>
<datum value="241" dir="fop"/>
<datum value="296" dir="soap"/>
<datum value="25" dir="xalan-c"/>
<datum value="245" dir="xalan-j"/>
<datum value="7" dir="xang"/>
<datum value="368" dir="xerces-c"/>
<datum value="1125" dir="xerces-j"/>
<datum value="56" dir="xerces-p"/>
</datum>
<datum week="200144">
<datum value="25" dir="axis"/>
<datum value="22" dir="batik"/>
<datum value="2" dir="cocoon"/>
<datum value="13" dir="cocoon2"/>
<datum value="39" dir="crimson"/>
<datum value="74" dir="fop"/>
<datum value="149" dir="soap"/>
<datum value="5" dir="xalan-c"/>
<datum value="46" dir="xalan-j"/>
<datum value="4" dir="xang"/>
<datum value="96" dir="xerces-c"/>
<datum value="481" dir="xerces-j"/>
<datum value="10" dir="xerces-p"/>
</datum>
...
all-in-all, it looks pretty well, but something is wrong with the grouping...: the numbers are completely incorrect :-(
Is there any glaring error somewhere in my stylesheet?
Thanks for any help,
</Steven>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list