2016-05-30 12 views
0

私はこの構造のXMLを持っており、すべての項目に対してforeachを行っています。しかし、私はこの構造でマークアップしたい。 クラス "col-md-4"を持つ最初のdiv、クラス "col-md-6"を持つ次の2つのdiv、および例のようにそのロジックを繰り返します。 foreachの中で変数を使うことはできないので、私は本当にそれをやる方法がわかりません。 誰かが私に手を差し伸べることができますか?XSL foreach変数

<items> 
<item>A</item> 
<item>B</item> 
<item>C</item> 
<item>D</item> 
<item>E</item> 
<item>F</item> 
<item>G</item> 
<item>H</item> 
<item>I</item> 
<item>J</item> 
</items> 

例:

<div class="col-md-4"> 
    A 
    </div> 
    <div class="col-md-6"> 
    B 
    </div> 
    <div class="col-md-6"> 
    C 
    </div> 
    <div class="col-md-4"> 
    D 
    </div> 
    <div class="col-md-6"> 
    E 
    </div> 
    <div class="col-md-6"> 
    F 
    </div> 
    <div class="col-md-4"> 
    G 
    </div> 

答えて

1

あなたは、いくつかの基本的な数学とforeachの中で、現在の要素の位置を使用することができます。

<xsl:for-each select="item"> 
    <div> 
    <xsl:attribute name="class"> 
     <xsl:choose> 
     <!-- every third item starting from the first one is col-md-4, others - col-md-6 --> 
     <xsl:when test="(position() - 1) mod 3 = 0">col-md-4</xsl:when> 
     <xsl:otherwise>col-md-6</xsl:otherwise> 
     </xsl:choose> 
    </xsl:attribute> 
    <xsl:value-of select="text()"/> 
</div> 

+0

あなたは天才です!!!!ありがとう! – user2112420