準 e コマース サイトを作成するために大学 (XSL コーディングに慣れていないため) の割り当てを行っており、意味をなすようにできるだけ多くの詳細を提供します。
サンプル XML データ:
<Items>
<Item>
<ItemID>50001</ItemID>
<ItemName>Samsung Galaxy S4</ItemName>
<ItemPrice>629</ItemPrice>
<ItemQty>14</ItemQty>
<ItemDesc>4G Mobile</ItemDesc>
<QtyHold>0</QtyHold>
<QtySold>1</QtySold>
</Item>
<Item>
<ItemID>50002</ItemID>
<ItemName>Samsung Galaxy S5</ItemName>
<ItemPrice>779</ItemPrice>
<ItemQty>21</ItemQty>
<ItemDesc>4G Mobile</ItemDesc>
<QtyHold>0</QtyHold>
<QtySold>1</QtySold>
</Item>
</Items>
プロセスは、人が一番上のテーブルで「カートに追加」をクリックすると、XML の ItemQty で ItemQty が 1 減少し、XML の QtyHold で 1 増加します。(QtyHold は、ショッピング カートに追加されたものを表します。したがって、QtyHold が >0 の場合、カートに追加されています)
私の問題は、2 番目のテーブル (以下のコード) を参照しています。ここでは、合計の数値が機能します - 1 つのアイテムを扱う場合のみです。したがって、アイテム番号「50001」が 2 回追加されても、合計は変わりません。
<xsl:template match="/">
<fieldset>
<legend>Shopping Cart</legend>
<BR />
<table border="1" id="CartTable" align="center">
<tr><th>Item Number</th>
<th>Price</th>
<th>Quantity</th>
<th>Remove</th></tr>
<xsl:for-each select="/Items/Item[QtyHold > 0]">
<tr><td><xsl:value-of select="ItemID"/></td>
<td>$<xsl:value-of select="ItemPrice"/></td>
<td><xsl:value-of select="QtyHold"/></td>
<td><button onclick="addtoCart({ItemID}, 'Remove')">Remove from Cart</button></td> </tr>
</xsl:for-each>
<tr><td ALIGN="center" COLSPAN="3">Total:</td><td>$<xsl:value-of select="sum(//Item[QtyHold >0]/ItemPrice)"/></td></tr>
</table>
<BR />
<button onclick="Purchase()" class="submit_btn float_l">Confirm Purchase</button>
<button onclick="CancelOrder()" class="submit_btn float_r">Cancel Order</button>
</fieldset>
</xsl:template>
</xsl:stylesheet>
QtyHold が 0 より大きいかどうか (ショッピング カートに入っていることを意味します) をチェックし、これらの値を合計するには、QtyHold と ItemPrice を乗算する必要があります。
<xsl:value-of select="sum(//Item[QtyHold >0]/ItemPrice)"/>
以下のようなコードの多くのバリエーションを試しました...しかし、何も機能しないようです。
select="sum(//Item[QtyHold >0]/ItemPrice)/(QtyHold*ItemPrice"/>