XSLT の数学について教えてください。同じ unit_id を持つ price*VAT フィールドを合計する必要があります。
入力 XML:
<Root>
<RowSet>
<unit_id>1<unit_id>
<price>100<unit_id>
<VAT>2<VAT>
</RowSet>
<RowSet>
<unit_id>1<unit_id>
<price>200<unit_id>
<VAT>3<VAT>
</RowSet>
<RowSet>
<unit_id>2<unit_id>
<price>300<unit_id>
<VAT>4<VAT>
</RowSet>
</Root>
期待される出力は次のようになります。
<Root>
<Output>
<unit_id>1<unit_id>
<total>800<total> <?-(100*2+200*3)-?>
</Output>
<Output>
<unit_id>2<unit_id>
<total>1200<total> <?-(300*4)-?>
</Output>
</Root>
for-each サイクルで sum(price*VAT) を試しましたが、役に立ちませんでした。
私はこれを使用しようとしました:
<Root>
<xsl:variable name="ID">
<xsl:value-of select="unit_id"/>
</xsl:variable>
<xsl:for-each select="/Root/RowSet[unit_id = $ID]">
<Output>
<xsl:if test="position() = count (/Root/RowSet[unit_id = $ID])">
<total>
<xsl:value-of select="sum(/Root/RowSet[unit_id = $ID]/price * /Root/RowSet[unit_id = $ID]/VAT)"/>
</total>
</xsl:if>
</Output>
</Root>
そして、間違った出力は次のとおりです。
<Root>
<Output>
<unit_id>1<unit_id>
<total>200<total> <?-(100*2)-?>
</Output>
<Output>
<unit_id>2<unit_id>
<total>1200<total> <?-(300*4)-?>
</Output>
</Root>