您需要逐一执行此操作。试试类似的东西:
我正试图将以下成本相加,这些成本由一个名为ID 的唯一字段分组
xml如下:
<table>
<tr>
<td>1</td>
<td>"£20,000.00"</td>
</tr>
<tr>
<td>2</td>
<td>"£1,000.00"</td>
</tr>
<tr>
<td>1</td>
<td>"-£2,000.00"</td>
</tr>
<tr>
<td>2</td>
<td>"£2,000.00"</td>
</tr>
<tr>
<td>1</td>
<td>"£1,000.00"</td>
</tr>
由于非数字字符,我生成了以下内容,该内容不断返回NAN。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8"/>
<xsl:key name="UniqueJobNumber" match="table/tr" use="td[01]"/>
<xsl:template match="table">
<xsl:for-each select="tr[(count(. | key('UniqueJobNumber', td[01])[1]) = 1)]">
<xsl:variable name= "PaymentRequestValue" select="sum(key('UniqueJobNumber',td[01])/td[02])"/>
<xsl:value-of select="td[01]"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="$PaymentRequestValue"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
有人知道从字段中删除£和"字符"以使总和有效的方法吗?我曾尝试在用于计算值的变量中使用翻译函数,但似乎不起作用。
干杯,
马特
有人知道从字段使总和有效?
编辑:我用一个更通用的模板替换了以前的模板。这个不删除不需要的字符,而只保留对数字类型值有效的字符:
<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="/">
<total>
<xsl:call-template name="total">
<xsl:with-param name="nodes" select="table/tr/td[2]"/>
</xsl:call-template>
</total>
</xsl:template>
<xsl:template name="total">
<xsl:param name="nodes"/>
<xsl:param name="sum" select="0"/>
<xsl:choose>
<xsl:when test="count($nodes)">
<xsl:variable name="num" select="translate($nodes[1], translate($nodes[1], '-.0123456789', ''), '')" />
<xsl:call-template name="total">
<xsl:with-param name="nodes" select="$nodes[position() > 1]"/>
<xsl:with-param name="sum" select="$sum + $num"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$sum"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>