Chuis complètement con ou quoi ? [XSL] - XML/XSL - Programmation
Marsh Posté le 06-07-2006 à 10:21:50
Y se fout de moi ce truc ou quoi ?
Je viens d'ajouter un attribut "index" à mes row. Autoincrément, c'est un compteur basique.
|
Marsh Posté le 06-07-2006 à 10:38:29
PS: vous avez le droit de répondre "oui" à ma question, en me fumant avec une réponse aussi évidente que mon erreur. Je préfère m'auto-proclamer con en public que de rester bloquer comme ça depuis plus d'une heure en me disant que chuis trop con de pas trouver ce qui cloche En tout cas, ça me gave. Vais aller me pendre dans un coin tiens
Marsh Posté le 06-07-2006 à 11:00:29
Lui non plus, il n'a aucun succès avec ses fromages...
http://www.trucsweb.com/Forum/voir [...] osparent=0
Marsh Posté le 06-07-2006 à 11:23:26
Arjuna a écrit :
|
Code :
|
?
Marsh Posté le 06-07-2006 à 11:34:26
Groumpf !
Bon, j'ai trouvé une solution.
Alors déjà, première connerie :
Contrairement à ce que j'ai dit, je faisais pas un "for-each", mais un "apply-templates" sur les row.
Résultat, en effet, moins évident de retrouver la ligne précédente.
Ensuite, voici l'instruction qui va bien :
|
Marsh Posté le 06-07-2006 à 10:17:33
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 ?