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

Are there any function to access the first nodes in the xml while using group by

我有一个 xml,其中同一个员工 ID 可以出现多次,但在我的输出文件中,我只需要此人显示 once.In 除了我在 [=16] 中有一个字段=] 称为 "YTD gross ",为此我需要从 xml 中该人记录的第一次出现中选取值。我知道,如果我需要访问 xml 中那个人记录的最后一次出现的值,我需要使用最后一个函数。同样,是否有任何功能只会从记录中那个人的第一次出现中挑选价值? 下面是最后一个函数的用法示例,我需要一些函数来选择第一次出现的事件..

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

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

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

这意味着通过使用 1 而不是 last(),您可以实现您想要的:select 来自上下文的第一项。

从技术上讲,当谓词([...] 部分)计算为数字时会发生什么,它会与每个上下文项的上下文位置进行比较,只有数字匹配的那些才会得到 select编辑。这就是为什么 1 会给你第一个项目,last() 给你最后一个项目的原因。

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

is there anyfunction that will pick the value only form the first occurmence of that person

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

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

相当于:

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