Haradzieniec
Haradzieniec

Reputation: 9340

xlst for-each - add class to 1st, 4th, 7th, 10th, ... items

For xslt-1.0, how to modify the code below so it adds third class to the very first, fourth, seveth etc inner-divs elements?

<div id="myDiv">
    <xsl:for-each select="key('category',  $var1)">
        <div class="inner-div">
            sometext
        </div>
    </xsl:for-each>
</div>

so it is:

<div id="myDiv">
        <div class="inner-div third">
            sometext
        </div>
        <div class="inner-div">
            sometext
        </div>
        <div class="inner-div">
            sometext
        </div>
        <div class="inner-div third">
            sometext
        </div>
        <div class="inner-div">
            sometext
        </div>
        <div class="inner-div">
            sometext
        </div>
        <div class="inner-div third">
            sometext
        </div>
</div>

Thank you.

Upvotes: 0

Views: 54

Answers (1)

Ian Roberts
Ian Roberts

Reputation: 122374

You need to do modulo arithmetic on the position():

<div id="myDiv">
    <xsl:for-each select="key('category',  $var1)">
        <div>
            <xsl:attribute name="class">
                <xsl:text>inner-div</xsl:text>
                <xsl:if test="(position() mod 3) = 1"> third</xsl:if>
            </xsl:attribute>
            sometext
        </div>
    </xsl:for-each>
</div>

Upvotes: 3

Related Questions