我有以下XML,
<Answers>
<Entry key="total" type="System.String">
<value>50,000</value>
</Entry>
</Answers>
<Answers>
<Entry key="total" type="System.String">
<value>2,000</value>
</Entry>
</Answers>
<PerPersonTotal>1000</PerPersonTotal>
在XSLT 1.0中,我必须总结所有值并计算百分比。
请注意,金额值为逗号。
<xsl:value-of select="(PerPersonTotal div sum(number(Answers/Entry[@key='total']/value))) * 100
我正在低于错误
函数'sum()'的参数1无法转换为节点集。
如果我删除数字函数,我会得到NaN作为结果。
答案 0 :(得分:0)
请注意,金额值为逗号。
这就是问题所在:包含逗号的字符串不是数字。要在XSLT 1.0中解决此问题,您需要执行以下操作:
<xsl:variable name="values">
<xsl:for-each select="Answers/Entry[@key='total']">
<value>
<xsl:value-of select="translate(value, ',', '')"/>
</value>
</xsl:for-each>
</xsl:variable>
<result>
<xsl:value-of select="PerPersonTotal div sum(exsl:node-set($values)/value)"/>
</result>
声明xmlns:exsl="http://exslt.org/common"
后- 请参阅:http://exslt.org/exsl/index.html
注意:强>
format-number()
功能,不要乘以100。