请帮我解决 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>
我在每个周期中都尝试过 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>