|
Subject: RE: [xsl] Totals for conditional sums ?maybe? From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sat, 3 Dec 2005 17:09:55 -0000 |
> What I am trying to do is total the ORDD_TLNA for the base
> years when
> //AwardFullData/AwardItemizedLine[count(./periodLinePeriodNumb
> er)<1] and then later total ORDD_TLNA for the option years
> when
> //AwardFullData/AwardItemizedLine[count(./periodLinePeriodNumb
> er)>0]">
>
> I have tried so many iterations I have forgotten them all but
> I think the closest I have gotten is this:
>
> <xsl:variable name="TEST"
> select="//AwardFullData/AwardItemizedLine[count(./periodLinePe
> riodNumber)<1]"/>
> <xsl:variable name="ADDME"
> select="//AwardFullData/AwardItemizedLine/transactionAmount"/>
> ...
For some reason you've made this much more complicated than it is. Just
select the nodes you want to total and apply the sum() function:
sum(//AwardFullData/AwardItemizedLine[count(./periodLinePeriodNumber)<1]/
transactionAmount"/>
I'm assuming here that transactionAmount does actually hold a numeric value.
You haven't shown your source document, but there's a possible hint later in
your question that suggests trasactionAmount might hold a currency sign. If
that's the case then in 2.0 you can do
sum(//AwardFullData/AwardItemizedLine[count(./periodLinePeriodNumber)<1]/
transactionAmount/
number(translate(.,'$',''))"/>
>
> <xsl:value-of select="sum($ADDME[$TEST])"/>
There are several reasons this is wrong. Firstly, any expression of the form
$ADDME[XXX] is going to select a subset of the nodes in $ADDME. These are
AwardItemizedLine nodes, whereas you want to sum transactionAmount nodes.
Secondly, $TEST is taken as true if
//AwardFullData/AwardItemizedLine/transactionAmount selects any nodes, and
as false if it doesn't; the value doesn't depend in any way on the
AwardAtomizedLine node in question.
>
>
> Not even sure if the above was correct I tried to strip the
> formatting of the data which includes $ and , (I have no
> control over the data source).
At this point I think we need to see what the data looks like.
A general comment: you're trying to do this by trial and error, which isn't
a very good way of learning the language. The stylesheets you're working
with aren't very well written, so learning from them isn't a good idea
either. Take some time to read a good XSLT book.
Michael Kay
http://www.saxonica.com/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Totals for conditional sums ?, Christopher Pierce | Thread | [xsl] group dates by month then day, Kevin Bird |
| RE: [xsl] group dates by month then, Michael Kay | Date | [xsl] use two consecutive transform, mus47@xxxxxxxx |
| Month |