0

我有一个看起来像这样的 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"/>

但它不打印任何东西

4

2 回答 2

2

我正在建立彼得的回答,以解决实际上不正确的评论之一。您问是否必须使用说明,彼得说“是”,但实际上这是不正确的。

使用 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>对于你所拥有的简单要求。

于 2013-09-05T15:46:31.950 回答
0

您的 XML 无效 - 缺少pizzas和的结束标记menu。小心复制和粘贴!如果你有这个 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>
于 2013-09-05T14:49:14.180 回答