2009-05-09 3 views
1

私はアイテムリストを持っており、アイテムごとにそれをURLにしたいと思います。XSLT:Foreachは各アイテムを反復処理しますが、最初のアイテムの値を表示しますか?

一覧:

<root> 
    <tags> 
    <tag>open source</tag> 
    <tag>open</tag> 
    <tag>advertisement</tag> 
    <tag>ad</tag> 
    </tags> 
</root> 

XSLT:

<xsl:template match="*"> 
    <div class="tags"> 
     <xsl:for-each select="/post/tags/tag"> 
      <a href="#"> 
      <xsl:value-of select="//tag"/> 
      </a> 
     </xsl:for-each> 
    </div> 
</xsl:template> 

出力:

<div class="tags"> 
    <a href="#">open source</a> 
    <a href="#">open source</a> 
    <a href="#">open source</a> 
    <a href="#">open source</a> 
    </div> 

は私が間違って何をしているのですか?あなたが何をしている

答えて

4

価値のXML文書内のタグのすべてのノードを選択される式:

<xsl:value-of select="//tag"/> 
ことの効果しか選択された最初のノードが値に使用されるということです

あなたは代わりに使用することができます以下 ""

<xsl:value-of select="."/> 

場所を選択= for-eachから現在のノードを選択します。正しいことをやっての

+0

ありがとうございました! 私は最初にを試しましたが、何もしませんでした... – Four

+0

私に知らせてくれてありがとう - 間違った使い方を削除しました。 – Oded

5

よりXSLTの方法は、「タグ」テンプレートを追加して、あなたのオリジナルを修正している。

<xsl:template match="*"> 
    <div class="tags"> 
     <xsl:apply-templates select="tag" /> 
    </div> 
</xsl:template> 

<xsl:template match="tag"> 
     <a href="#"> 
     <xsl:value-of select="."/> 
     </a> 
</xsl:template> 
関連する問題