无法从根节点获取值

时间:2016-02-19 18:32:38

标签: xml xslt xslt-2.0

我为xml写了xslt但是在尝试从根节点读取ItemNumber时我被卡住了。这是代码段

XML

 <?xml version="1.0"?>
 <Items>
<Item ItemNumber="1251469">
    <ProductName>Cherub Baby 240ml Single - Light Blue</ProductName>
    <ProviderName>Cherub Baby</ProviderName>
    <Quantity>25</Quantity>
    <Price>7.99</Price>
</Item>
<Item ItemNumber="1148087">
    <ProductName>Dolby Metal-Black-Matte</ProductName>
    <ProviderName>Vestal Watches</ProviderName>
    <Quantity>4</Quantity>
    <Price>67.99</Price>
</Item>
</Items>

XSLT

  <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <xsl:for-each select="Items/Item">
    <table border="2">
      <tr bgcolor="#9acd32">
        <td>Provider: <xsl:value-of select="ProductName"/></td>
      </tr>
     <tr>
        <td>Item Number</td>
        <td>Quantity</td>
        <td>Unit Price</td>
        <td>Total</td>
    </tr>
    <tr>
        <td><xsl:value-of select="ItemNumber"/></td> <-- //unable to get the value
        <td><xsl:value-of select="Quantity"/></td>
        <td><xsl:value-of select="Price"/></td>
        <td><xsl:value-of select="Quantity * Price"/></td>
    </tr>
    <tr>
    <td style="border:none"></td>
    <td style="border:none"></td>
    <td style="border:none">Sub Total</td>
    <td><xsl:value-of select="Quantity * Price"/></td>
    </tr>
    </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

Output

我需要这样的输出。我几乎已经完成了但在获取ItemNumber时遇到了问题。任何人都可以指导我。我该怎么读这个属性。帮助将得到赞赏。

由于

1 个答案:

答案 0 :(得分:2)

鉴于<Item ItemNumber="1148087">ItemNumber是一个属性节点,您选择XPath为@ItemNumber(或attribute::ItemNumber,如果您想要详细)。您的尝试选择子元素,而不是属性。