在上下文节点上使用sum()基于属性值

时间:2013-12-21 20:16:52

标签: xml xslt xpath xmlnode

我有一个XML文件,部分节点树如下所示...... enter image description here

我有一个par节点的模板,在其中我必须总结一系列holeNumbers之间的par元素,以下是我的代码的一部分,但它根本不工作,我不知道如何引用并根据属性值对par元素求和(孔值10-18的总和应该在下表的列中总和)...

<xsl:when test="@holeNumber = 18">
   <td class="sub"><xsl:value-of select="sum(.[@holeNumber > 9 and @holeNumber 
                                                             &lt; 18])" /></td>
   <td class="final"><xsl:value-of select="sum(//par)" /></td>
</xsl:when>

我的表目前看起来如下......

hole |1 |2 |3 |4 |5 |6 |7 |8 |9 | out |10 |11 |12 |13 |14 |15 |16 |17 |18 | in
     |4 |4 |5 |3 |4 |4 |5 |3 |4 |     |4  |5  |4  |3  |4  |5  |4  |3  |4  |

1 个答案:

答案 0 :(得分:1)

假设<par>是此测试的上下文节点,似乎您正在运行此<par>元素上的sum()函数(我猜您看到的结果只是当前选定的<par>元素的值?)。

我认为只需为sum()函数选择正确的节点,即所有<par>个节点:

<td class="sub"><xsl:value-of select="sum(//par[@holeNumber > 9 and @holeNumber 
                                                         &lt; 18])" /></td>

尽管如此,这或多或少是猜测,因为如果您只是发布了XML源(而不是图像)的相关片段以及不正确的输出,那么它将提供更多信息。会让你的问题更容易掌握高尔夫文盲。