使用xsl打印xml标记属性

时间:2013-09-05 14:38:17

标签: xml xslt

我的XML看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<menu>
    <pizzas attribute="CAT">
        <pizza>
            <name>Tomato &amp; Cheese</name>
            <small>5.50</small>
            <large>9.75</large>
        </pizza>
    </pizzas>
</menu>

我想打印出pizzas元素中的属性,我用过:

<xsl:value-of select="/menu/pizzas/@attribute"/>

但它不打印任何东西

2 个答案:

答案 0 :(得分:2)

我正在以彼得的答案为基础,以解决其中一个事实上不正确的评论。你问你是否 使用这些说明而Peter说“是”,但实际上这是不正确的。

使用Peter的输入文件:

<?xml version="1.0" encoding="UTF-8"?>
<menu>
  <pizzas attribute="CAT">
    <pizza>
        <name>Tomato &amp; 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 &amp; 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无效 - 缺少pizzasmenu的结束标记。小心复制和粘贴! 如果你有这个XML:

<?xml version="1.0" encoding="UTF-8"?>
<menu>
  <pizzas attribute="CAT">
    <pizza>
        <name>Tomato &amp; 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>

最好的记录, 彼得