在使用group by时是否有任何函数可以访问xml中的第一个节点

时间:2016-01-22 04:28:38

标签: xslt xslt-2.0

我有一个xml,其中相同的员工ID可以出现多次但在我的输出文件中我只需要该人一次显示。除此之外,我在xml中有一个名为" YTD gross&#34的字段;我需要从xml中该人员记录的第一个出现位置中选择的值。我知道如果我需要访问xml中该人记录的最后一次出现的值,我需要使用最后一个函数。同样,是否有任何功能只会从记录中该人的第一次出现中选择值? 最后一个函数的使用示例如下,我需要一些函数来选择第一个函数。

<xsl:value-of select='os:formatAmount1(current-group()[last()]/YTD_Gross)'/>

2 个答案:

答案 0 :(得分:1)

last()只返回当前上下文的最后一项的位置,为整数。

https://www.w3.org/TR/xpath-functions/#func-last

这意味着通过使用1代替last(),您可以实现您想要的效果:从上下文中选择第一项。

从技术上讲,当谓词([...]部分)求值为数字时会发生什么,它会与每个上下文项的上下文位置进行比较,并且只会选择数字匹配的那些。这就是为什么1会为您提供第一项,以及last()为什么会让您获得最后一项的原因。

https://www.w3.org/TR/xpath/#predicates(第三段)

答案 1 :(得分:1)

  

是否有任何函数仅从第一个中选择值   那个人的出现

xsl:for-each-group中,上下文项是相关组的初始项 - 所以要从当前组中的第一个(按文档顺序)项中获取一些值,您可以写一下:

<xsl:value-of select="SomeValue"/>

相当于:

<xsl:value-of select="current-group()[1]/SomeValue"/>