XML 和 XSL 格式链接

XML and XSL format linking

您好,我在链接我的 XML 和 XSLT 时遇到问题,我的 XML 很长,但这是一个摘录,问题是我的 XSLT 没有格式化它,我正在尝试获取我的 XML 用标题相互显示。请原谅我,但英语不是我的第一语言

XML:

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="Product_List.xsl"?>
<ProductCatalogue>
    <drinks>
        <product>
            <name Product_Code="D001">Lemonade</name>
            <price>6.50</price>
            <amount>20</amount>
            <supplier>Coca-Cola</supplier>
        </product>
    </drinks>
</ProductCatalogue>

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>
            <h3>Product List</h3>
            <xsl:apply-templates/>
        </body>
    </html>
</xsl:template>

<xsl:template match="drinks">
    <div style="color:#0000FF">
        <h3>
            <xsl:value-of select="name"/>
        </h3>
    </div>
    <div>
        <xsl:value-of select="name@Product_code"/>
    </div>
    <p>Price : <xsl:value-of select="price"/></p>
    <p>Supplier : <xsl:value-of select="supplier"/></p>
    <p>Amount : <xsl:value-of select="amount"/></p>
</xsl:template>
</xsl:stylesheet>

I believe its a problem with my templates but im not sure how its fixed

是的,您的模板确实有问题。使您的转换实际输出值的最简单方法是更改​​第二个模板匹配,最初是

<xsl:template match="drinks">

<xsl:template match="product">

在此模板中,您正在选择 nameprice 等元素,它们是 product 的子元素,而不是 drinks.

的子元素

另外,改变

<xsl:value-of select="name@Product_code"/>

<xsl:value-of select="name/@Product_Code"/>

XML及其相关的所有技术区分大小写 - Product_codeProduct_Code不同。

那么,输出将是

<html>
   <body>
      <h3>Product List</h3>


      <div style="color:#0000FF">
         <h3>Lemonade</h3>
      </div>
      <div>D001</div>
      <p>Price : 6.50</p>
      <p>Supplier : Coca-Cola</p>
      <p>Amount : 20</p>


   </body>
</html>