|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: RE: Sum & Sort & Maxvalue
> -----Original Message-----
> From: Florian Mueller
>
> Thank you very much for your answer. Theres only a little Problem
> left: I dont understand anything. :) Maybe you could send me a
> File where you put in the complete solution.. I have no idea what
> i should do..
>
Hi Flo,
No problem. Just c&p the files below. The method being used is yet another
variant of Muenchian grouping, should you have encountered that term
already..
Your source xml, slightly modified to contain a root
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<day date="01.03.2004">
<users>1</users>
<gv name="Offerte Neu">
<hits>2</hits>
<activity name="Ermittlung eines Produktes">
<hits>2</hits>
</activity>
</gv>
<gv name="SimulatorWeb">
<hits>1</hits>
<activity name="SimulatorDummy">
<hits>1</hits>
</activity>
<activity name="Ermittlung eines Produktes">
<hits>3</hits>
</activity>
</gv>
<gv name="CIS">
<hits>1</hits>
<activity name="Vertrags Anzeige">
<hits>1</hits>
</activity>
<activity name="Vertrags Suche">
<hits>1</hits>
</activity>
</gv>
<gv name="Muster">
<hits>11</hits>
<activity name="Muster">
<hits>11</hits>
</activity>
</gv>
<gv name="Mahninfo">
<hits>1</hits>
<activity name="Mahninfo">
<hits>1</hits>
</activity>
</gv>
</day>
<day date="02.03.2004">
<users>2</users>
<gv name="Offerte Neu">
<hits>3</hits>
<activity name="Erfassung Produktedaten">
<hits>1</hits>
</activity>
<activity name="Ermittlung eines Produktes">
<hits>3</hits>
</activity>
</gv>
<gv name="Mahninfo">
<hits>3</hits>
<activity name="Mahninfo">
<hits>3</hits>
</activity>
</gv>
</day>
</root>
The XSL solution I propose:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common"
extension-element-prefixes="ext" />
<!-- key to approach activities by day and activity-name -->
<xsl:key name="acts-day-name" match="activity"
use="concat(ancestor::day/@date,@name)" />
<xsl:template match="root">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="day">
<!-- variable containing all distinct activity names
for the day being processed -->
<xsl:variable name="vacthelp"
select="gv/activity[generate-id(.)=
generate-id(
key('acts-day-name', concat(
current()/@date, @name)
)[1])]" />
<!-- variable containing the sum of hits for the current day
for the activities in the $vacthelp variable -->
<xsl:variable name="vacts">
<xsl:for-each select="$vacthelp">
<xsl:for-each select="$vacthelp">
<activity name="{@name}">
<hits>
<xsl:value-of
select="sum(ancestor::day/gv/activity[@name=current()/@name]/hits)"/>
</hits>
</activity>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="concat('
',@date,'
')" />
<xsl:apply-templates select="ext:node-set($vacts)/*">
<xsl:sort select="hits" data-type="number" order=descending" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="activity">
<xsl:value-of select="concat(.,' : ', hits,'
')" />
</xsl:template>
</xsl:stylesheet>
Cheers,
Andreas
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








