XSLT:仅当值大于nul时计数

  • 本文关键字:nul 大于 XSLT xslt-1.0
  • 更新时间 :
  • 英文 :


全部,

这个问题与XSLT1.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个关键字值

仅选择内容(以数字表示)大于零的value节点:

<xsl:variable name="values" select="servicelevels/servicelevel/value[number(.) &gt; 0]"/>

平均值:

<xsl:value-of select="sum($values) div count($values)"/>

相关内容

  • 没有找到相关文章

最新更新