Xsl foreach变量

时间:2016-05-30 11:55:59

标签: xslt foreach

我有一个具有这种结构的XML,我正在为所有项目做一个foreach。但我想用这种结构做一个标记。 第一个div为class" col-md-4",接下来的两个div与类" col-md-6",并重复该逻辑,如示例所示。我真的不知道怎么做,因为我不能在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 个答案:

答案 0 :(得分: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>