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">
在此模板中,您正在选择 name
和 price
等元素,它们是 product
的子元素,而不是 drinks
.
的子元素
另外,改变
<xsl:value-of select="name@Product_code"/>
到
<xsl:value-of select="name/@Product_Code"/>
XML及其相关的所有技术区分大小写 - Product_code
与Product_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>
您好,我在链接我的 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">
在此模板中,您正在选择 name
和 price
等元素,它们是 product
的子元素,而不是 drinks
.
另外,改变
<xsl:value-of select="name@Product_code"/>
到
<xsl:value-of select="name/@Product_Code"/>
XML及其相关的所有技术区分大小写 - Product_code
与Product_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>