2016-12-30 11 views
0

ドキュメント($ fileRefernce)を使用して別のxmlにあるループを繰り返したいとします。xslt 1.0でDocument()を使用して別のXmlを繰り返します。

コード変数し、elementCountは単に情報/ elemntノード現在の番号を記憶している

<xsl:for-each select="document($fileRefernce)/*//Info/element/item">      
      { 
      "@Name": "<xsl:value-of  select="document($fileRefernce)/*//Info/element/item/@Name" />" , 
     "@Quantity": "<xsl:value-of select="document($fileRefernce)/*//Info/element/item/@quantity" />" 
     }<xsl:if test="$elementCount!=position()">,</xsl:if>      
    </xsl:for-each> 

を参照してください。

これを使用すると、情報ループを繰り返し実行すると、2回目の繰り返しを繰り返しても常に最初のノードの値が返されます。

と私はこのような出力を得る:

{ 
"@Name" : "xyz", 
"@Quantity": "1" 
}, 

{ 
"@Name" : "xyz", 
"@Quantity": "1" 
}, 

は誰がどのように私はこの問題を解決することができます教えてもらえます。

あなたが最初のノードを毎回選択されているので、それはあなたのたびに、最初のノードを与えている事前

答えて

2

のおかげで...

あなたがここに絶対パスを持っている、そしてそれはありません現在のコンテキストノードをまったく使用しています。式を単純化して、相対パスを使用してみてください。

<xsl:for-each select="document($fileRefernce)/*//Info/element/item">      
    { 
    "@Name": "<xsl:value-of select="@Name" />" , 
    "@Quantity": "<xsl:value-of select="@quantity" />" 
    }<xsl:if test="$elementCount!=position()">,</xsl:if>      
</xsl:for-each> 
+0

あなたは私をTimに保存しました。 私は他の方法を試みましたが、これは簡単だろうとは考えていませんでした! あなたの努力に感謝します – hiccup

+0

@hiccup:この回答が気に入ったら、それを受け入れることは丁寧です。 – zx485

+0

@ zx485:私はすでにそれをしましたが、私の評判が15未満であるので私の投票は公然と表示されません – hiccup

関連する問題