XSL v1.0 で正と負の値を別々に合計しようとしています。
次のような XML があります。
<Billing_Statements>
<Statement_Details>
<Invoice_Details>
<Meter_Details>
<Consumption>XX</Consumption>
</Meter_Details>
<Meter_Details>
<Consumption>XX</Consumption>
</Meter_Details>
</Invoice_Details>
<Invoice_Details>
<Meter_Details>
<Consumption>XX</Consumption>
</Meter_Details>
<Meter_Details>
<Consumption>XX</Consumption>
</Meter_Details>
</Invoice_Details>
</Statement_Details>
</Billing_Statements>
XX は正または負の値です。
Statement_Details ごとにすべての Invoice_Detail ノードの正の値の合計を最初に出力し、次に負の値の合計を出力する必要があります。
現時点で私が試した:
<xsl:value-of select="sum(Invoice_Details/Meter_Details[Consumption < 0])" />
0
これの多くのバリエーションがあり、それらはすべて何があっても合計を返します。
Meter_Details ノードから他のすべての情報を収集すると、for-each セクションは次のように完全に機能します。
<xsl:for-each select="Invoice_Details/Meter_Details[Consumption < 0]">
そして、負または正の値を持つノードのみを選択します。これが sum() で機能しないのはなぜですか?
私は確かにここで XSL に苦労しています。