[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: sum (substring-before)
Given an input file like: <values> <value>10.00CR</value> <value>5.00CR</value> <value>5.00CR</value> <value>20.00</value> <value>20.00</value> </values> This will do the totalization (watch for line wraps): <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template name="negative"> <xsl:param name="value"/> <!-- get the following credit, if there is one --> <xsl:variable name="following" select="$value/following-sibling::value[contains(.,'CR')][1]"/> <xsl:variable name="next"> <xsl:if test="$following"> <!-- there is a following credit, means there might be more --> <xsl:call-template name="negative"> <xsl:with-param name="value" select="$following"/> </xsl:call-template> </xsl:if> <!-- there is no following credit no make the next on a 0 --> <xsl:if test="not($following)">0</xsl:if> </xsl:variable> <!-- build up the total of credits --> <xsl:value-of select="number(substring-before($value, 'CR')) + number($next)"/> </xsl:template> <xsl:template match="/values"> <!-- find first credit --> <xsl:variable name="credit" select="/values/value[contains(.,'CR')][1]"/> <total> <!-- if there is a first credit there might be more --> <xsl:variable name="negTotal"> <xsl:if test="$credit"> <!-- use negative template to sum up all credits --> <xsl:call-template name="negative"> <xsl:with-param name="value" select="$credit"/> </xsl:call-template> </xsl:if> <!-- if there isn't another credit them make this one 0 --> <xsl:if test="not($credit)">0</xsl:if> </xsl:variable> <!-- add up all the debits and subtract the credits --> <xsl:value-of select="sum($debits) - $negTotal"/> </total> </xsl:template> <!-- make a nodelist of all of the debits --> <xsl:variable name="debits" select="/values/value[not(contains(., 'CR'))]"/> </xsl:stylesheet> Dan -----Original Message----- From: Winnie Leung [mailto:wleung@xxxxxxxxxxxxxx] Sent: Friday, August 24, 2001 10:31 AM To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx Subject: sum (substring-before) dear all, is it possible to do a sum and a substring-before together? my data: 20.00 10.00CR 5.00CR (CR means negative) and i want to get a total of all (i.e. 20.00+(-10.00)+(-5.00) = 5) thanks in advance, wing XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|