Hello,

Je sais d'ores-et-déjà qu'une variable ne peut être incrémentée en XSL mais j'ai quand même besoin de quelque chose d'approchant. Ou alors ce que je veux n'est tout simplement pas possible, dîtes moi.

Voici mon cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<Table>
<Row>
<Cell/>
<Cell index="34"/>
<Cell/>
</Row>
<Row>
<Cell/>
<Cell/>
</Row>
</Table>
Pour chaque balise, Row je cherche à connaitre le dernier index. L'index est claculé comme suit :
-Si cell est vide, index est incrémenté de 1
-Si Cell a un index, l'index devient cette valeur

Par exemple dans le premier Row, l'index serait de 35 (1, puis 34, puis 34+1). Dans le deuxième Row, l'index serait de 2 (1+1).

Je dois récupérer l'index pour CHAQUE Row. Je ne peux donc pas appliquer un template global de type match="Row" (Si ?). En effet, l'idée c'est de comparer cet index avec une valeur définie et d'ajouter un certain nombre d'éléments basé sur la différence. Par exemple si le nombre final attendu est 45, j'ajouterai 10 élements au premier ROW (45-35) mais 43 au deuxième (45-2).

De même position() ne m'est d'aucun secours car il ne renvoie pas la valeur exacte. Avoir deux noeuds Cell ne signifie pas que l'index est 2. Par exemple:
<Cell index="100"/>
position() me renvoie 1. Or j'ai besoin de connaître 100. Evidemment il ne s'agit pas de faire Cell/@index car comme dit plus haut, c'est plus un calcul incrementiel.

Est-ce clair ?

j'ai tenté un template récursif mais comment puis-je à la fois parcourir toutes mes cellules avec un for-each et lancer une récursivité qui par défaut va vouloir re parcourir les cellules ?

Là je suis franchement bloqué :S

Tout éclairage sera le bienvenu

Merci d'avance,

Loic