2011-12-19 96 views
0

我有一個家庭作業,要求創建訂單。訂單表格應該包含用戶可購買的項目列表,該列表來自XML文檔並且使用XSL文件進行樣式設置。XML - 創建訂單表

我弄懂了這部分,並使用JavaScript將XSL加載到HTML DOM中。現在我一直在試圖弄清楚我將如何處理數據。我需要乘以(由用戶輸入的)數量和價格(從XML輸入)。

我完全被困住了,並且非常感謝任何提示從哪裏去。

我的XSLT:

<table width="0" border="1" cellspacing="3" cellpadding="5"> 
    <tr> 
    <td>Qty</td> 
    <td>Item Description</td> 
    <td>Price</td> 
    </tr> 
<xsl:for-each select="//item"> 
    <tr> 
    <td><input name="top" type="text" onchange="calculate()" value="0" size="4" /></td> 
    <td>Item <xsl:value-of select="id"/></td> 
    <td><xsl:value-of select="price"/></td> 
    </tr> 
    </xsl:for-each> 
</table> 

一些XML:

<productcatalog> 

     <item> 
      <id>001</id> 
      <name>Item #1</name> 
      <price>10</price> 
     </item> 
     <item> 
      <id>002</id>    
      <name>Item #2</name> 
      <price>20</price> 
     </item> 
     <item> 
      <id>003</id> 
      <name>Item #3</name> 
      <price>30</price> 
     </item> 
     <item> 
      <id>004</id> 
      <name>Item #4</name> 
      <price>40</price> 
     </item> 



</productcatalog> 

回答

1

由於數量是從用戶不能使用XSL實現這一點。你的XSL樣式表應該輸出一個腳本來完成計算。

如果你可以使用JavaScript庫(例如jQuery),這個任務就簡單得多了,但你當然可以不用它。

你的計算功能應該:

  1. 店的數量和轉換爲數字。具有數量的輸入元素將觸發事件。
  2. 通過向上走父節點來查找觸發事件的行。
  3. 通過向下走向找到該行的價格。轉換爲數字。
  4. 按數量乘以價格並作爲字符串插入到適當的TD中。 (您使用textContent或innerText屬性)

存儲價格可能是一個問題。新的方式(使用HTML5開啓)是使用前綴爲data-的屬性。您可以將data-price添加到html輸出中,作爲獲取價格的方便之處。你甚至可以把它放在輸入節點本身上,所以你不需要導航節點來查找價格。

+0

謝謝你的提示,阿維拉先生!如果你不介意,你能解釋一下在父節點上下走路嗎?我想我已經開始明白這一點了:) – 2011-12-19 03:54:09