Subject: [xsl] Re: sum of price * qty, without node-set() From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Thu, 29 Jan 2004 07:26:11 +0100 |
Using FXSL one would simply write: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:foldl-func="foldl-func" exclude-result-prefixes="foldl-func" > <xsl:import href="foldl.xsl"/> <!-- This transformation must be applied to: numList.xml --> <xsl:variable name="vFoldrFun" select="document('')/*/foldl-func:*[1]"/> <xsl:output encoding="UTF-8" omit-xml-declaration="yes"/> <xsl:template match="/"> <xsl:call-template name="foldl"> <xsl:with-param name="pFunc" select="$vFoldrFun"/> <xsl:with-param name="pList" select="/*/RECEIPT"/> <xsl:with-param name="pA0" select="0"/> </xsl:call-template> </xsl:template> <foldl-func:foldl-func/> <xsl:template match="foldl-func:*"> <xsl:param name="arg1" select="0"/> <xsl:param name="arg2" select="0"/> <xsl:value-of select="$arg1 + $arg2/qtyRcpt * $arg2/line/pr"/> </xsl:template> </xsl:stylesheet> When this transformation is applied on your source.xml: <BATCH> <RECEIPT> <qtyRcpt>1</qtyRcpt> <line> <pr>102.00</pr> </line> </RECEIPT> <RECEIPT> <qtyRcpt>3</qtyRcpt> <line> <pr>20.00</pr> </line> </RECEIPT> </BATCH> the wanted result is produced: 162 Cheers, Dimitre Novatchev. FXSL developer, http://fxsl.sourceforge.net/ -- the home of FXSL Resume: http://fxsl.sf.net/DNovatchev/Resume/Res.html "Charles Gebhard" <cgebhard@xxxxxxxxxxxxxxxx> wrote in message news:40187C7E.5080706@xxxxxxxxxxxxxxxxxxx > greetings all, > i'm a newbie and am trying to get a sum of a calculation; i'm hoping to > get the value "162.00". > > <BATCH> > <RECEIPT> > <qtyRcpt>1</qtyRcpt> > <line> > <pr>102.00</pr> > </line> > </RECEIPT> > <RECEIPT> > <qtyRcpt>3</qtyRcpt> > <line> > <pr>20.00</pr> > </line> > </RECEIPT> > </BATCH> > > i've seen this FAQ: > http://www.dpawson.co.uk/xsl/sect2/N5121.html#d5351e202 > > but without the sample xml, i can't really understand it. > > i've also seen posts that use the "node-set()" function. but i'm not > able to successfully get the exslt stuff to work. > > <xsl:template match="BATCH"> > <xsl:variable name="tmpTotal"> > <xsl:for-each select="RECEIPT"> > <item> > <xsl:value-of select="( qtyRcpt * line/pr )"/> > </item> > </xsl:for-each> > </xsl:variable> > > <xsl:variable name="myTotal" select="exslt:node-set($tmpTotal)"/> > <xsl:value-of select="sum($myTotal/item)" /> > </xsl:template> > > > so, i'd really like to be able to do this in native XSLT 1.0 (without > node-set). could someone please point me in the right direction? seems > like it would be really simple. i've been pounding my head for hours. > thanks. > > -charles > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] sum of price * qty, witho, G. Ken Holman | Thread | Re: [xsl] sum of price * qty, witho, Jirka Kosek |
RE: [xsl] Empty object, Josh Canfield | Date | Re: [xsl] sum of price * qty, witho, Jirka Kosek |
Month |