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>

使用したピザ要素の属性を出力したい:

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

しかし、それは何も印刷しません

4

2 に答える 2

2

事実上正しくないコメントの1つに対処するために、ピーターの答えに基づいています。あなたが指示を使用する必要があるかどうか尋ねところ、ピーターは「はい」と答えましたが、実際にはそれは正しくありません。

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 が無効です - と の終了タグがありませ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>
于 2013-09-05T14:49:14.180 に答える