XML和XSL格式链接

时间:2015-03-17 23:02:26

标签: html xml xslt xslt-1.0

您好我无法链接我的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>

1 个答案:

答案 0 :(得分:1)

  

我认为我的模板存在问题,但我不确定它是如何固定的

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

<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>