xml - How to add decimal numbers in xslt 1.0 in substrings -
i have following input xml.
<?xml version = "1.0" encoding = "utf-8"?> <values> <value>sometext;+123.23;+100.23</value> <value>sometext;+004.23;+444.12</value> </values>
i newbie in xsl 1.0. add 2 decimal numbers received in strings receiving nan error. how do that. following output above input xml decimal values summed instead receiving nan errors.
<?xml version="1.0"?> <results> <result>+223.46</result> <result>+448.35</result> </results>
i have xsl file follows,
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match = "/"> <results> <xsl:for-each select="values/value"> <result> <xsl:value-of select="number(substring(.,10,7)) + number(substring(.,18,7))" /> </result> </xsl:for-each> </results> </xsl:template>
a number not allowed contain +
sign.
try instead:
<xsl:value-of select="substring(., 11, 6) + substring(., 19, 6)" />
(assuming of course positions , lengths constant - , numbers positive).
my own preference do:
xslt 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> <xsl:template match="/values"> <results> <xsl:for-each select="value"> <xsl:variable name="a" select="substring-before(substring-after(., ';'), ';')" /> <xsl:variable name="b" select="substring-after(substring-after(., ';'), ';')" /> <result> <xsl:value-of select="translate($a, '+', '') + translate($b, '+', '')" /> </result> </xsl:for-each> </results> </xsl:template> </xsl:stylesheet>
which work positive , negative numbers alike, , not depend on length of 1 of 3 tokens in given string.
wiki
Comments
Post a Comment