XML - 创建订单表单

时间:2011-12-19 03:07:59

标签: javascript xml xslt

我有一份要求创建订单的家庭作业。订单表格应该包含可供用户购买的商品列表,这些商品来自XML文档,并使用XSL文件设置样式。

我完成了这一部分,并使用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 个答案:

答案 0 :(得分:1)

由于数量来自用户,因此您无法使用XSL实现此操作。您的XSL样式表应该输出一个执行计算的脚本。

如果你可以使用javascript库(例如jQuery),这个任务就相当简单了,但如果没有它,你肯定可以做到这一点。

您的计算功能应该:

  1. 存储数量并转换为数字。具有数量的输入元素将触发事件。
  2. 通过向上走父节点找到触发事件的行。
  3. 通过向后走来找到该行的价格。转换为数字。
  4. 将数量乘以数量并将其作为字符串插入到正确的TD中。 (您使用textContent或innerText属性)
  5. 存储价格可能是个问题。新方法(使用HTML5开始)是使用带有data-前缀的属性。您可以将data-price添加到html输出中作为获取价格的便利位置。您甚至可以将它放在输入节点本身上,这样您就不必导航节点来查找价格。