xsl-list
[Top] [All Lists]

RE: Re[2]: how calculate sum(x*y)

2002-10-07 02:42:05
Hi,

how calculate sum(x*y) ??

IF i try use sum() it say that need only node-list as argument....

I have xml
<root>
  <data>
   <x>2</x>
   <y>3</y>
  </data>
  <data>
   <x>5</x>
   <y>6</y>
  </data>
  .....
<root>

JEnc> Write a recursive template, that goes through all the 
data elements, summing the multiplication result to previous 
result sum, i.e.

JEnc> template name=sum
JEnc>   param name=node-set
JEnc>   param name=sum

JEnc>   if count($node-set') = 0
JEnc>   then
JEnc>     value-of select=$sum
JEnc>   else
JEnc>     call-template name=sum
JEnc>       with-param name=node-set 
select=$node-set[not(position() = 1)]
JEnc>       with-param name=sum select=$sum + $node-set[1]/x 
* $node-set[1]/y

JEnc> Dimitri probably has some suitable function for the 
job, see [http://fxsl.sourceforge.net/].


I try now use function "nodeset" from xalan namespace to 
build new nodeset
with result of calculation x*y and then apply function sum for this
tree.
can you compare this two variants, what variant more likely to use ?

Well, exslt:node-set is pretty portable these days (latest Xalan implements 
it), but I don't see any particular reason why you couldn't just use the XSLT 
1.0 way of doing it. If you need the intermediate multiplication result set 
somewhere else, then the RTF->node-set solution will probably be better, but if 
you just need the multiplication sum, go with the recursive template.

Cheers,

Jarno - Cenobita: Destino Final (Global mix)

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>