Xslt comment style conditionnel pair/impair de lignes

J'ai un tableau html écrite à l'aide de la transformation xslt qui ressemble à ce

<table>
    <xsl:for-each select="someNode">
        <xsl:if test="testThis">
            <tr>
                <!-- <xsl:call-template name="conditionalRowStyle"/> -->
                <td>something</td>
            </tr>
         </xsl:if>
         <tr>
             <!-- <xsl:call-template name="conditionalRowStyle"/> -->
             <td>this is always displayed</td>
         </tr>
         <xsl:if test="testThis2">
            <tr>
                <!-- <xsl:call-template name="conditionalRowStyle"/> -->
                <td>something 2</td>
            </tr>
         </xsl:if>
         ....
    </xsl:for-each>
    <tr>
        <!-- <xsl:call-template name="conditionalRowStyle"/> -->
        <td>this is always displayed</td>
    </tr>
</table>

J'ai besoin d'un moyen pour appliquer les différentes classes oddRow/evenRow tr elems.

<tr class="evenRow"> or <tr class="oddRow">

J'ai essayé d'utiliser un modèle comme celui-ci après chaque <tr> elem

<xsl:template name="conditionalRowStyle">
    <xsl:attribute name="class">
        <xsl:choose>
            <xsl:when test="(count(../preceding-sibling::tr) mod 2) = 0">oddrow</xsl:when>
            <xsl:otherwise>evenrow</xsl:otherwise>
        </xsl:choose>
    </xsl:attribute>
</xsl:template>

mais ce n'est pas de travail.
une idée?

Excellente question (+1). Voir ma réponse pour une passe de XSLT 1.0 solution 🙂

OriginalL'auteur mickthompson | 2010-07-15