1

xslt を使用して xml を別の xml に変換しています。私が使う:

<xsl:template match="header">
<header>
        <order><xsl:value-of select="@order"/></order>
    <value><xsl:value-of select="../header"/></value>
</header>
</xsl:template>

ヘッダーにある情報を取得します。

元のヘッダー ファイル:

<header order="1">blah11111</header>
<header order="2">blah22222</header>

テンプレートを適用すると、これから得られるもの:

<header>
   <order>1</order>
   <value>blah11111</value>
</header>
<header>
   <order>2</order>
   <value>blah11111</value>
</header>

私が欲しいもの:

<header>
   <order>1</order>
   <value>blah11111</value>
</header>
<header>
   <order>2</order>
   <value>blah22222</value>
</header>

何かご意見は?

4

2 に答える 2

1

select2 番目のxsl:value-of要素は、親まで登ってから再び降りて、すべてのheader要素を取得します。xsl:value-of次に、これらの最初のものを除くすべてを無視します。

必要なものが最初の値ではなく、header現在処理しているヘッダーの値である場合、select属性は間違ったことを言っています。試す

<value><xsl:value-of select="."/></value>
于 2012-09-14T17:55:46.450 に答える
1

XSLT 1.0 では、xsl:value-of が複数のノードを選択すると、最初の値が出力され、他のノードはすべて無視されます。この動作は非常にエラーが発生しやすいため、XSLT 2.0 ではすべての値を出力するように変更されています。これは必ずしも必要なものではありませんが、少なくとも何が問題なのかが明確になります。

于 2012-09-14T21:30:12.930 に答える