1

for ループ内のレコード数とそれらの値の合計 (特定の列) を数えようとしています。以下のコードを見つけて、私に提案してください。

<xsl:for-each-group select="current-group()" group-by="CostCentre/PCCode">
                 <!-- variables for each pc code -->
                 <xsl:variable name="chargeRate" select="SpaceTariffGroup/ChargeRate"/>
                 <xsl:variable name="dedicatedArea"
                    select="sum((current-group()[SpaceType/ChargeBackType = $chargeBackTypeDedicatedArea]/(Area*CalculationFactor)))"/>            

                 <xsl:variable name="floorFactor"
                    select="$dedicatedArea div ($totalDedicatedAreaPerFloor )"/>`enter code here`
                 <xsl:variable name="floorCommonArea"
                    select="$floorFactor * $totalFloorCommonAreaPerFloor"/>
                 <xsl:variable name="dedicatedAndFloorCommonArea"
                    select="($dedicatedArea + $floorCommonArea)"/>                     

                 <xsl:variable name="totalChargedArea"
                    select="$dedicatedAndFloorCommonArea"/>
                 <xsl:variable name="totalChargedAmount"
                    select="$chargeRate * $totalChargedArea"/>
 <xsl:value-of select="$totalChargedArea"/>
 <xsl:text>,</xsl:text>   
 <xsl:value-of select="$totalChargedAmount"/>
enter code here
</xsl:for-each-group>

このようなものを印刷します。100,5000 200,5000 300,5000 400,5000

このような出力が必要です。100,5000 200,5000 300,5000 400,5000 4,20000 (この最後の行は合計レコードであり、これらのレコードの値の合計です)どうすれば取得できるかわかりません

4

1 に答える 1

2

for-each-group の結果を変数に格納できます。

<xsl:variable name="charges">
<xsl:for-each-group select="current-group()" group-by="CostCentre/PCCode">
                 <!-- variables for each pc code -->
                 <xsl:variable name="chargeRate" select="SpaceTariffGroup/ChargeRate"/>
                 <xsl:variable name="dedicatedArea"
                    select="sum((current-group()[SpaceType/ChargeBackType = $chargeBackTypeDedicatedArea]/(Area*CalculationFactor)))"/>            

                 <xsl:variable name="floorFactor"
                    select="$dedicatedArea div ($totalDedicatedAreaPerFloor )"/>`enter code here`
                 <xsl:variable name="floorCommonArea"
                    select="$floorFactor * $totalFloorCommonAreaPerFloor"/>
                 <xsl:variable name="dedicatedAndFloorCommonArea"
                    select="($dedicatedArea + $floorCommonArea)"/>                     

                 <xsl:variable name="totalChargedArea"
                    select="$dedicatedAndFloorCommonArea"/>
                 <xsl:variable name="totalChargedAmount"
                    select="$chargeRate * $totalChargedArea"/>
 <charge>
    <area><xsl:value-of select="$totalChargedArea"/></area>
    <amount><xsl:value-of select="$totalChargedAmount"/></amount>
  </charge>
</xsl:for-each-group>
</xsl:variable>

次に、変数を次のように処理できます

<xsl:for-each select="$charges/charge">
  <xsl:value-of select="concat(area, ',', amount)"/>
</xsl:for-each>

で合計を出力します

<xsl:value-of select="sum($charges/charge/amount)"/>
于 2013-03-04T18:29:32.710 に答える