Moteur XSL de OC4J (Oracle)
Pour simplifier, j'ai un bloc XML de la forme :
<rows>
<row><total>1</total><val>1</val></row>
<row><total>11</total><val>10</val></row>
<row><total>16</total><val>5</val></row>
</rows>
|
Le but du jeu, c'est de passer en rouge dans un tableau la première ligne dont "total" dépasse 10.
Bêtement, j'ai fait ce test (à l'intérieur d'un for-each qui porte sur rows/row)
<xsl:if test="total >= 10 and ../row[position() - 1]/total < 10">
|
Marche pas.
Je me lance donc dans le debug.
<xsl:value-of select="../row[1]/total"/> - <xsl:value-of select="../row[2]/total"/> - <xsl:value-of select="../row[3]/total"/>
J'ai ça en sortie :
1 - 11 - 16
<xsl:value-of select="position()"/> - <xsl:value-of select="../row[position()]/total"/>
J'ai ça en sortie :
1 - 1
2 - 1
3 - 1
<xsl:variable name="position">
<xsl:value-of select="position()"/>
</xsl:variable>
<xsl:value-of select="$position"/> - <xsl:value-of select="../row[$position]/total"/>
J'ai ça en sortie :
1 - 1
2 - 1
3 - 1
|
Alors, que "position()" se mette à prendre le "position()" de mon "rows" quand je l'utilise dans un appel de ligne de collection, je veux bien à la limite... Mais là, même en variable, il se comporte de la sorte.
Du coup, je suis comme un con, je récupère comment le noeud précédent pour comparer la valeur ?