我的XML看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<pizzas attribute="CAT">
<pizza>
<name>Tomato & Cheese</name>
<small>5.50</small>
<large>9.75</large>
</pizza>
</pizzas>
</menu>
我想打印出pizzas元素中的属性,我用过:
<xsl:value-of select="/menu/pizzas/@attribute"/>
但它不打印任何东西
答案 0 :(得分:2)
我正在以彼得的答案为基础,以解决其中一个事实上不正确的评论。你问你是否 使用这些说明而Peter说“是”,但实际上这是不正确的。
使用Peter的输入文件:
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<pizzas attribute="CAT">
<pizza>
<name>Tomato & Cheese</name>
<small>5.50</small>
<large>9.75</large>
</pizza>
</pizzas>
</menu>
您得到以下结果,与Peter的相同:
<?xml version="1.0" encoding="utf-8"?><output>CAT</output>
使用此XSLT样式表时:
<output xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xsl:version="1.0">
<xsl:value-of select="/menu/pizzas/@attribute"/>
</output>
这种样式表写作风格称为“简化”样式表。下面是使用Saxon在DOS提示符下运行的上述记录:
t:\ftemp>type pizza.xml
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<pizzas attribute="CAT">
<pizza>
<name>Tomato & Cheese</name>
<small>5.50</small>
<large>9.75</large>
</pizza>
</pizzas>
</menu>
t:\ftemp>call xslt pizza.xml pizza.xsl
<?xml version="1.0" encoding="utf-8"?><output>CAT</output>
t:\ftemp>type pizza.xsl
<output xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xsl:version="1.0">
<xsl:value-of select="/menu/pizzas/@attribute"/>
</output>
t:\ftemp>rem Done!
因此,事实上,您不需要<xsl:stylesheet>
和<xsl:template>
来满足您的简单要求。
答案 1 :(得分:0)
您的XML无效 - 缺少pizzas
和menu
的结束标记。小心复制和粘贴!
如果你有这个XML:
<?xml version="1.0" encoding="UTF-8"?>
<menu>
<pizzas attribute="CAT">
<pizza>
<name>Tomato & Cheese</name>
<small>5.50</small>
<large>9.75</large>
</pizza>
</pizzas>
</menu>
并应用此XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<output>
<xsl:value-of select="/menu/pizzas/@attribute"/>
</output>
</xsl:template>
</xsl:stylesheet>
你得到这个输出:
<?xml version="1.0" encoding="UTF-8"?>
<output>CAT</output>
最好的记录, 彼得