首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串转换为数字求和,避免获取NaN

将字符串转换为数字求和,避免获取NaN
EN

Stack Overflow用户
提问于 2014-03-29 07:21:44
回答 1查看 1.6K关注 0票数 0

我想使用XSLt V1.0对一些值进行求和,但它们被视为字符串。下面是xml的示例,我的示例xslt也是如此。是否应该更改基础SQL视图中的数据类型?我尝试过各种数字数据类型,但我需要保留十进制或货币格式,因为这应该是美元总额。是否有一种方法可以在XSLT中使用一个变量,允许我将这个字符串转换为一个数字?我尝试过使用number()进行转换,但仍然得到了NaN。对于xslt不太了解,如果您能为我提供任何帮助或相关资源,我将非常感激。

代码语言:javascript
复制
     <?xml version="1.0" encoding="utf-8"?>
    <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</fieldvalue>
            <depreciationlife>25</depreciationlife>
            <costs>46</costs>
          </lcc>
          <lcc>
            <groupname>Costs: Acquisition planning</groupname>
            <userfieldgroupid>9</userfieldgroupid>
            <userfieldname>Concept assessment hours</userfieldname>
            <userfieldid>43</userfieldid>
            <fieldvalue>.25</fieldvalue>
            <depreciationlife>25</depreciationlife>
            <costs>11.5</costs>
          </lcc>
        </lccs>
      </object>
    </xml>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.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(number(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(number(costs))"/>
    </td>
    </tr>   
     <tr>
    <td>Subtotal</td>
    <td><xsl:value-of select="sum(//costs)"/></td>
    </tr>       
    </xsl:when>             
    </xsl:choose>       
    </xsl:for-each>             
    </table>
     </body>
</html>
</xsl:template> 
 </xsl:stylesheet>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-29 07:54:52

我需要保留十进制或货币格式,因为这应该是美元总额。

一般来说,最好是输入数据,这些数据需要数字处理,只包含数字、小数点和减号。在输出时,始终可以将结果重新格式化为十进制/货币。如果您不确定所使用的货币,请将其包含在单独的元素中或作为属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22728245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档