0

如何计算以下 xml 中按 empid 和 date 分组后的小时节点值的前 3 次出现的总和,并将总数存储在变量中。

<Records>
    <Line>
      <EmpId>1</EmpId>
      <Date>10/01/2012</Date>
      <Hour>4</Hour>
    </Line>
    <Line>
      <EmpId>1</EmpId>
      <Date>10/01/2012</Date>
      <Hour>4</Hour>
    </Line>
    <Line>
      <EmpId>1</EmpId>
      <Date>10/02/2012</Date>
      <Hour>8</Hour>
    </Line>
     <Line>
      <EmpId>1</EmpId>
      <Date>10/03/2012</Date>
      <Hour>8</Hour>
    </Line>
     <Line>
      <EmpId>1</EmpId>
      <Date>10/04/2012</Date>
      <Hour>8</Hour>
    </Line>
  </Records>

所以变量的值应该是 24。

4

1 回答 1

1

如果我正确阅读了您的要求,我认为这应该可以完成工作:

<xsl:key name="countHours" match="Line" use="concat(EmpId,'-',Date)" />

<xsl:template match="/">
  <xsl:value-of select="sum(
    Records/Line[
      count(
        preceding-sibling::*[
          generate-id()=generate-id(key('countHours',concat(EmpId,'-',Date))[1])
        ]
      ) &lt; 3
    ]/Hour
  )" />
</xsl:template>
于 2013-01-07T17:06:44.913 回答