XSLT 2.0如何为每个组循环添加a的值
问题描述:
我试图计算for循环中的记录数及其值(对于特定列)的总和。请找到下面的代码并给我建议。XSLT 2.0如何为每个组循环添加a的值
<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(这最后一排是总的记录,这些记录的值之和)不知道我怎样才能得到它
答
那么你可以将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)"/>
总和