所有
此问题与XSLT 1.0
有关有没有办法只计算特定值大于null的节点? 我使用sum函数得到总数:
<servicelevels>
<servicelevel>
<key>0..20</key>
<value>100.00</value>
</servicelevel>
<servicelevel>
<key>20..30</key>
<value>0.00</value>
</servicelevel>
<servicelevel>
<key>30..40</key>
<value>0.00</value>
</servicelevel>
<servicelevel>
<key>40..50</key>
<value>0.00</value>
</servicelevel>
<servicelevel>
<key>50..60</key>
<value>0.00</value>
</servicelevel>
<servicelevel>
<key>60..70</key>
<value>0.00</value>
</servicelevel>
<servicelevel>
<key>70+</key>
<value>98.33</value>
</servicelevel>
</servicelevels>
要查找值键的总和,我使用:
<xsl:value-of select="sum(servicelevels/servicelevel/value | servicelevels/servicelevel/value)"/>
什么产生198.33的总和来计算7个节点的平均值我使用 xsl:value-of select="count(....)"
计算它为28.333但是我只想找到包含实际值的节点的平均值例子只有2个节点,平均值为99.165。
是否有另一种(相对简单的)实现此目的的方法?
XML始终包含7个键值
答案 0 :(得分:1)
仅选择内容(作为数字)大于零的value
个节点:
<xsl:variable name="values" select="servicelevels/servicelevel/value[number(.) > 0]"/>
平均:
<xsl:value-of select="sum($values) div count($values)"/>