使用xsl打印xml标记属性
我有一个如下所示的XML:使用xsl打印xml标记属性,xml,xslt,Xml,Xslt,我有一个如下所示的XML: <?xml version="1.0" encoding="UTF-8"?> <menu> <pizzas attribute="CAT"> <pizza> <name>Tomato & Cheese</name> <small>5.50</small> <
<?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>
番茄酱;奶酪
5.50
9.75
我想打印pizzas元素中的属性,我使用了:
<xsl:value-of select="/menu/pizzas/@attribute"/>
但是它不打印任何内容您的XML无效-缺少
比萨饼
和菜单
的结束标记。小心复制和粘贴!
如果您有此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>
番茄酱;奶酪
5.50
9.75
您可以应用以下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>
猫
最佳富豪酒店,
彼得我以彼得的答案为基础,来回答其中一条事实上不正确的评论。你问你是否必须使用说明书,彼得说“是”,但事实上这是不对的 使用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>
番茄酱;奶酪
5.50
9.75
您将得到以下结果,与Peter的结果相同:
<?xml version="1.0" encoding="utf-8"?><output>CAT</output>
CAT
使用此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!
t:\ftemp>type pizza.xml
番茄酱;奶酪
5.50
9.75
t:\ftemp>调用xslt pizza.xml pizza.xsl
猫
t:\ftemp>type pizza.xsl
t:\ftemp>rem完成!
因此,事实上,您不需要
和
来满足您的简单需求。这里没有明显的错误(除了您缺少结尾
,我认为这是一个复制/粘贴问题),请注意,Peter在我发表评论后添加了结束标记-我个人不同意未经OP批准编辑代码或数据,因为这可能会掩盖一个实际的问题,让人们陷入白费力气。对不起,我必须把xsl:stylesheet
和xsl:template
放在xsl:value的,但这在现实生活中很少适用,因为你不能使用像
或
@Ken:谢谢你的解释。我没有意识到这一点+1.