INPUT XML
<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
<food>
<item name = "Belgian Waffles" price = "$5.95" calories = "650" />
<item name = "Strawberry Belgian Waffles" price = "$7.95" calories = "900" />
</food>
</breakfast_menu>
所以,基本上我想要打印价格属性大于6美元的商品。
输出XML
<food>
<item name = "Strawberry Belgian Waffles" price = "$7.95" calories = "900" />
</food>
我必须使用XSL来做,我也尝试过。
MY Attempt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:output method="html" indent="yes" />
<xsl:for-each select="breakfast_menu/food[@price > 6]">
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这不起作用。请建议解决方法。感谢。
答案 0 :(得分:2)
不幸的是,我不知道整个结构的结构。但如果它只包含那些标签,那么使用这个xslt就足够了:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" />
<xsl:template match="/">
<xsl:for-each select='breakfast_menu/food/item[number(substring-after(@price,"$")) > 6]'>
<food>
<xsl:copy-of select="."/>
</food>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
基本上你的foreach不正确 - 缺少&#34;项目&#34;
<xsl:for-each select="breakfast_menu/food[item/@price > 6]"/>
现在应该没问题