1

imaginons que j'ai un fichier XML de ce genre :
<truc>
  <item ID="1">
    ouga
  </item>
  <item ID="1">
    pouet
  </item>
  <item ID="1">
    kwaink
  </item>
  <item ID="2">
    plop
  </item>
  <item ID="2">
    paf
  </item>


j'aimerai bien pouvoir grouper les items par ID, par exemple les lister avec un <hr/> entre les deux groupes :
ouga
pouet
kwaink


plop paf


et je n'arrive pas à trouver de methode pour traiter tous les item avec une ID = 1, puis ceux avec une ID = 2, etc
(l'ID max est connue)


(heu je sais que ca pourrait etre plus simple en modifiant le fichier XML, mais c'est pas posible, je le recupere tel quel)
avatar

2

le plus simple serait que tu changes ton format que ton xml : il faudrait un hierachie de plus qui indiquerait a quel ID apartiennent tes items.

Sinon, il faut utiliser une variable qui est le dernier ID lu. Et si ca change, tu mets un hr.

PS:je suis encore assez débutant avec le xml, il se peut que je dise des bétises.

3

malheuresement ce n'est pas moi qui créé ce fichier xml, je dois faire avec sad
pour la variable, j'y ai bien pensé mais en xsl c'est juste des constantes définies une fois pour toutes
avatar

4

t'es sûr pour les variables ? pourtant j'ai vu un jour un exemple qui présentait un compteur...

5

j'ai lu que c'etait vachement dur de faire un compteur en xsl
ca ne doit pas etre fait avec des variable, ptet par recurrence avec des param je sais pas
mais je confirme que les varables sont write-once
avatar

6

ah oui, elles sont "immutables".
ce que tu as tenté en utilisant les xpath ? y'a les proceding-sibing dont tu peux comparer l'ID par rapport a noeud courant.
p-e un test du genre :
proceding-sibling[last()]/@ID != self/@ID

7

hum
[google]proceding-sibling[/google]

mouais ca ne m'aide pas plus
c'est quoi ? magic
avatar

8

google est ton ami ! grin

fallait chercher [google]proceding-sibling xslt[/google]

The expression "(proceding-sibling::*)[1]" gives the first sibling:
Previous to the current node in document order

en gros, il te donne tous les frères précédents du noeud courant.

9

heu.... en fait je me demande si c'est pas preceding plutot, comme notre gentil ami google nous le propose cheeky

10

alors ca a marché ?

tiens, voila un joli dessin

arborescence.JPG

11

heu, en fait j'ai pas vraiment reussi à comprendre comment ca marchait et j'ai un peu laissé tombé, surtout pour ce que c'etait important
(changer l'affichage de l'historique des conversation sur msn cheeky)
mais ton dessin me donne envie de m'y remettre trilove
avatar