ここで問題が発生しました。再帰実行中の合計が xsl テンプレートに加算されません。以下は、私の xsl と xml のコードです。
XML:
</xsl:for-each-group>
Subtotal:
<td>
<xsl:for-each-group select="current-group()" group by="@ItemNumber">
<xsl:sort select="current-grouping-key()"/>
<xsl:call-template name="count_subtotal">
<xsl:with-param name="cur_grp_qty" select="sum(current-group()/Quantity)"/>
<xsl:with-param name="cur_grp_up" select="distinct-values(current-group()/UnitPrice)"/>
</xsl:call-template>
</xsl:for-each-group>
</xsl:for-each-group>
<xsl:template name="count_subtotal">
<xsl:param name="total" select="0"/>
<xsl:param name="cur_grp_qty"/>
<xsl:param name="cur_grp_up"/>
<xsl:choose>
<xsl:when test="$cur_grp_qty">
<xsl:variable name="first_total" select="$cur_grp_qty[1]*$cur_grp_up[1]"/>
<xsl:call-template name="count_subtotal">
<xsl:with-param name="cur_grp_qty" select="$cur_grp_qty[position() > 1]"/>
<xsl:with-param name="total" select="$first_total+$total"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="round($total)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
これが XML ファイルです。
<Items>
<Item ItemNumber="1">
<ProductName>c</ProductName>
<ProviderName>c</ProviderName>
<Quantity>2</Quantity>
<UnitPrice>39</UnitPrice>
</Item>
<Item ItemNumber="2">
<ProductName>b</ProductName>
<ProviderName>b</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>3</UnitPrice>
</Item>
<Item ItemNumber="3">
<ProductName>abt</ProductName>
<ProviderName>bd</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>12</UnitPrice>
</Item>
<Item ItemNumber="4">
<ProductName>a</ProductName>
<ProviderName>a</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>3</UnitPrice>
</Item>
<Item ItemNumber="5">
<ProductName>ab</ProductName>
<ProviderName>cd</ProviderName>
<Quantity>2</Quantity>
<UnitPrice>1</UnitPrice>
</Item>
<Item ItemNumber="6">
<ProductName>sdf</ProductName>
<ProviderName>bfd</ProviderName>
<Quantity>1</Quantity>
<UnitPrice>12</UnitPrice>
</Item>
そして、欲望のhtmlページは次のようなものです:
あなたの助けは大歓迎です