0

準 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>

Webサイト

プロセスは、人が一番上のテーブルで「カートに追加」をクリックすると、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"/>
4

1 に答える 1