Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries >Thread Prev - I need to calculate sum of product of elements >Thread Next - Re: I need to calculate sum of product of elements Re: I need to calculate sum of product of elementsTo: NULL Date: 12/13/2007 5:27:00 PM khalil_mi@h... wrote: > I need to calculate the sum of the product of the first number element > (/csv/line/number[1]) and the last one (/csv/line/number[3]) > > i.e I need to write the xsl code that calculates > (1*3)+(4*6)+(7*9)+(10*12) > > <csv> > <line> > <number>1</number> > <number>2</number> > <number>3</number> > </line> > <line> > <number>4</number> > <number>5</number> > <number>6</number> > </line> > <line> > <number>7</number> > <number>8</number> > <number>9</number> > </line> > <line> > <number>10</number> > <number>11</number> > <number>12</number> > </line> > </csv> With XSLT/XPath 2.0 that is easy: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:value-of select="sum(for $line in csv/line return $line/number[1] * $line/number[3])"/> </xsl:template> </xsl:stylesheet> You can use Saxon from <http://saxon.sourceforge.net/> to execute XSLT 2.0 stylesheets. With XSLT 1.0 you need a named, recursive template e.g. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:call-template name="make-sum"> <xsl:with-param name="items" select="csv/line"/> </xsl:call-template> </xsl:template> <xsl:template name="make-sum"> <xsl:param name="items"/> <xsl:param name="total" select="0"/> <xsl:choose> <xsl:when test="$items"> <xsl:call-template name="make-sum"> <xsl:with-param name="items" select="$items[position() > 1]"/> <xsl:with-param name="total" select="$total + $items[1]/number[1] * $items[1]/number[3]"/> </xsl:call-template> </xsl:when> <xsl:otherwise><xsl:value-of select="$total"/></xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> -- Martin Honnen --- MVP XML http://JavaScript.FAQTs.com/ | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
