Re: [xsl] get the sum of a sequence of numbers

Subject: Re: [xsl] get the sum of a sequence of numbers
From: Karen McAdams <kemcadams@xxxxxxxxx>
Date: Wed, 3 May 2006 15:09:25 -0700 (PDT)
         > That does not seem to work in this situation.

Gives the wrong answer? Gives an error message? Catches fire? It's a lot
easier to diagnose problems when you know what the symptoms are.
I concatenates the values in the node and displays them as i reported in the first email.

>         <xsl:variable name="mbt" select="sum(for $n in 
> number($mb) return number($n))"/>

number($mb) is going to produce a single number as its result. So this is
the same as select="sum(number($mb))" which is the same as
select="number($mb)". I don't know what $mb is, but if it's a sequence of
strings that can be converted to numbers then you want

>         <xsl:variable name="mbt" select="sum(for $n in $mb return

that is, you want to convert the strings to numbers individually.

However, $mb isn't a sequence of strings, because you declared it as:

      <xsl:variable name="mb">
           <xsl:apply-templates mode="mb"/>

which means $mb is actually a single document node; so the "for" expression
isn't going to do anything useful. I can't tell how to correct this without
knowing what's coming back from the apply-templates.
What's coming back is a document node that contains the word count for each 
child element that contains a language attribute.

What i need cumulative count of the total words of the child elements that 
contain a language attribute. 

The other solution that was recommended was to copy these child elements into a 
document node and count the words in this new document node.

Im just not sure what the best technique to use to utilize the 
benefits of xslt 2.0 to accomplish this count-

Karen McAdams

Current Thread