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 に答える