Tri de nodes - XML/XSL - Programmation
Marsh Posté le 10-04-2006 à 15:32:35
Faut trier tous les nodes, puis les sélectionner par 20... Donc un premier apply-templates qui trie, puis qui envoi vers une template qui elle sélectionne par paquets de 20
Marsh Posté le 10-04-2006 à 15:55:16
Exactement !
Mais je sais pas du tout comment faire
Juste derrière ce bout de code j'ai :
<xsl:template match="Node">
avec la mise en page que j'ai choisie pour les nodes
Donc comment faire pour trier les nodes sans pour autant traiter le "<xsl:template match="Node">" ?
Marsh Posté le 10-04-2006 à 16:19:25
<xsl:apply-templates select="pouet"> |
Marsh Posté le 10-04-2006 à 18:57:40
moldar a écrit : <node1> |
Veux-tu dire que tes éléments s'appellent effectivement node1, node2, ... ?
Si c'est le cas, tu devrais plutôt considérer quelque chose du style <node id="1" />, <node id="2" />, ... C'est beaucoup plus logique dans la mesure où tes noeuds son sémantiquement équivalents (et il me semble qu'il est d'ailleurs impossible d'écrire un DTD dans le cas de la première solution). Et, bien que je n'aie jamais essayé, j'imagine que tu peux faire un <xsl:sort select="node/@id" />.
Marsh Posté le 10-04-2006 à 15:28:10
Bonjour !!
J'ai un fichier xml contenant :
<node1>
<numéro>xxxx</numéro>
</node1>
<node2>
<numéro>xxxx</numéro>
</node2>
....
<noden>
<numéro>xxxx</numéro>
</noden>
J'ai un fichier XSL qui affiche ces nodes par paquets de 20 (avec un paramètre $page qui me permet de calculer les nodes à afficher en fonction de la page en cours).
Je voudrais maintenant classer ces nodes par numéro croissant.
Actuellement je fais comme ça :
<xsl:apply-templates select="Node[position()>=$page][position()<=20]">
<xsl:sort select="numéro"/>
</xsl:apply-templates>
==> les nodes sont bien classées, mais 20 par 20 et non dans leur globalité (par exemple, les nodes de 1 à 20 sont classés, idem pour 21 à 40 mais pas de 1 à 40).
Vous auriez des idées ?