【发布时间】:2015-10-23 13:11:54
【问题描述】:
我正在为大学做作业(所以我是 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 中的 ItemQty 增加 1。 (QtyHold 表示已添加到购物车中的内容。因此,如果 QtyHold 大于 0,则将其添加到购物车中)
我的问题是指第二个表(下面的代码),其中 Total 数字起作用 - 仅在处理 1 个项目时。因此,如果第二次添加项目编号“50001”,总数不会改变。
<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"/>
【问题讨论】: