Jump to content

SallyFG

Members
  • Posts

    1
  • Joined

  • Last visited

SallyFG's Achievements

Newbie

Newbie (1/7)

0

Reputation

  1. I am trying to sum the costs values in this sample xml using the xslt below. Sample xml: <?xml version="1.0"?><xml><object><objectid>183382</objectid><objectnumber>Test00001237</objectnumber><lccs><lcc><groupname>Costs: Acquisition planning</groupname><userfieldgroupid>9</userfieldgroupid><userfieldname>Concept development hours</userfieldname><userfieldid>42</userfieldid><fieldvalue>1.5</fieldvalue><depreciationlife>25</depreciationlife><costs>69</costs></lcc><lcc><groupname>Costs: Acquisition planning</groupname><userfieldgroupid>9</userfieldgroupid><userfieldname>Concept assessment hours</userfieldname><userfieldid>43</userfieldid><fieldvalue>0.5</fieldvalue><depreciationlife>25</depreciationlife><costs>23</costs></lcc></lccs></object></xml> Sample xslt: <?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:js="urn:custom-javascriptscript" exclude-result-prefixes="msxsl js"><xsl:output method="html" omit-xml-declaration="yes" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd" indent="yes"/><xsl:template match="/xml/object"><html><head></head><body> <table> <tr style="font-weight:bold" > <td>Item</td> <td>$</td> </tr> <xsl:for-each select="lccs/lcc"> <xsl:choose> <xsl:when test="normalize-space(userfieldid)='42'"> <tr> <td> <xsl:value-of select="normalize-space(fieldvalue)"/></td> <td> <xsl:value-of select="normalize-space(costs)"/></td> </tr> </xsl:when> <xsl:when test="normalize-space(userfieldid)='43'"> <tr> <td><xsl:value-of select="normalize-space(fieldvalue)"/></td> <td><xsl:value-of select="normalize-space(costs)"/></td> </tr> </xsl:when> </xsl:choose> </xsl:for-each> </table> <table> <tr> <td>Subtotal</td> <xsl:for-each select="lccs/lcc"> <xsl:choose> <xsl:when test="userfieldgroupid='9'"> <xsl:if test ="costs !=''"> <td><xsl:value-of select="sum(../../*/*/costs)" /></td> </xsl:if> </xsl:when> </xsl:choose> </xsl:for-each> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet> I am using an IE control in a database application to render a data view within the application. The underlying data source is SQL and the costs data type is decimal. I expect to see a subtotal of 92, ie the sum of all costs in the userfieldgroupid = 9. Instead I get:Result -Item $1.5 690.5 23Subtotal 69 23I suspect the issues is with the xpath and that my result is the individual costs summed with themselves. If I use <xsl:value-of select="sum(../../*/*/costs)" />I get:Result -Item $1.5 690.5 23Subtotal NaN NaN If I just use <xsl:value-of select='format-number(costs, "###,###.00")' /> directly on costs I get the numbers, but not summed! so back to where I started. Result- Item $ 1.5 69 0.5 23 Subtotal 69.00 23.00 I have searched and tried so many examples but can't work this out so I would be very grateful for any help you can give me.
×
×
  • Create New...