2011-12-19 61 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