[Home] [By Thread] [By Date] [Recent Entries]
Hi ya'll,
I have a source file as such: <alldata> <load> <start>04/01/06 06:00</start> <stop>04/01/06 07:30</stop> <loadnum>300382</loadnum> </load> <po num="9865900" cases="206" /> <po num="9872940" cases="5" /> <po num="9877320" cases="290" /> <po num="9880590" cases="450" /> <po num="9880600" cases="418" /> <po num="9886650" cases="282" /> <load> <start>04/01/06 06:00</start> <stop>04/01/06 07:30</stop> <loadnum>300166</loadnum> </load> <po num="9873530" cases="630" /> <po num="9880740" cases="1008" /> ... </alldata> I want to group the po elements with their previous sibling load and sum the @cases to get: <load> <loadnum>300382</loadnum> <start>04/01/06 06:00</start> <stop>04/01/06 07:30</stop> <po num="9865900" cases="206" /> <po num="9872940" cases="5" /> <po num="9877320" cases="290" /> <po num="9880590" cases="450" /> <po num="9880600" cases="418" /> <po num="9886650" cases="282" /> <total>1651</total> </load> <load> <loadnum>300166</loadnum> <start>04/01/06 06:00</start> <stop>04/01/06 07:30</stop> <po num="9873530" cases="630" /> <po num="9880740" cases="1008" /> <total>1638</total> </load> But when I use the following stylesheet, the @cases don't sum and I get the following error using Saxon8.7 FORG0001: Can not convert string "" to a double... If I replace "sum" with "count" then it works. <xsl:output method="xml"/> <xsl:template match="/cases"> <alldata> <xsl:for-each-group select="*" group-starting-with="load"> <load> <xsl:copy-of select="loadnum"/> <xsl:copy-of select="start"/> <xsl:copy-of select="stop"/> <xsl:copy-of select="current-group()[self::po]"/> <total><xsl:value-of select="sum(current-group()[self::po/@cases])"/></total> </load> </xsl:for-each-group> </alldata> </xsl:template> </xsl:stylesheet> Obviously I am using xslt2.0. Can someone explain what I am doing wrong? TIA
|

Cart



