我正在进行一项任务,我应该以不同的方式展示杂货。我似乎无法确定xsl文件是错误的还是xml文件,或两者兼而有之。
转让片段:
一切
库存中的物品应具有销售价格,无论其是否在售。将通过具有值“是”或“否”的销售属性来识别待售物品。 sale属性应放在ID标记中。如果销售标签为“是”,则使用销售价格,否则使用常规价格。
我的问题是,无论是@ sale =“是”还是“否”,只会显示常规价格
<body>
<table>
<xsl:for-each select="catalog/item">
<tr>
<xsl:attribute name="sale">
<xsl:value-of select="id"/>
</xsl:attribute>
<td><xsl:value-of select="company"/></td>
<td><xsl:value-of select="product"/></td>
<td><xsl:value-of select="category"/></td>
<td><xsl:value-of select="description"/></td>
<xsl:choose>
<xsl:when test="@sale = 'yes'">
<td><xsl:value-of select="sale"/></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value-of select="price"/></td>
</xsl:otherwise>
</xsl:choose>
<td><xsl:value-of select="unit"/></td>
<td>
<img>
<xsl:attribute name="src">
<xsl:value-of select="picture"/>
</xsl:attribute>
</img>
</td>
</tr>
</xsl:for-each>
</table>
</body>
和带有2个项目样本的XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="sale.xsl" xsl:import href="company.xsl" xsl:import href="category.xsl"?>
<!DOCTYPE catalog SYSTEM "stock.dtd">
<catalog>
<item>
<id sale="yes">801</id>
<company>Grocery Gateway</company>
<product>Organic Strawberries</product>
<category>Produce</category>
<description>Fresh and organic strawberries imported from U.S.A. This product is subject to availability</description>
<price>5.99</price>
<sale>4.99</sale>
<unit>454g</unit>
<picture>pics/M6548[1].jpg</picture>
</item>
<item>
<id sale="no">101</id>
<company>Nestle </company>
<product>Pure Life Spring Water</product>
<category>Beverages</category>
<description>Ingredients are spring water, and ozone. </description>
<price>5.99</price>
<sale>4.99</sale>
<unit>24x500mL</unit>
<picture>pics/M58629[1].jpg</picture>
</item></catalog>
答案 0 :(得分:0)
它没有正确显示销售价格的原因是因为您错误地引用了@sale
属性。
<xsl:when test="@sale = 'yes'">
上面尝试在当前for-each迭代中查找名为sale
的属性(在本例中为catalog/item
,但该属性在XML中的此节点上不存在)。您需要明确说明您正在id
节点上查找它,如下所示:
<xsl:when test="id/@sale = 'yes'">