Salut !
Ceci est un exemple inventé qui relate mon problème...
Donc imaginons, j'ai une bibliothèque de livres. Chaque livre est décrit dans un fichier XML. J'ai un autre fichier XML qui référence tous les livres de la bibliothèque :
ListingBiblio.xml
Exemple : fichier Livres/051.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <BIBLIO> <LIVRE ref="051"/> <LIVRE ref="062"/> <LIVRE ref="840"/> ... </BIBLIO>
Maintenant ce que je voudrais c'est afficher le nombre total d'images (compte le nombre de balises images dans tous les fichiers livre.xml) dans la bibliothèque. Pour cela je fais une xsl qui va s'appliqué au fichier ListingBiblio.xml, et c'est là que j'ai du mal...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <LIVRE ref="051" intitulé="blabla"> <CHAP titre="blabla"> kjkgsdjhg<IMG src="..."/>sdc lkushdckshck<IMG src="..."/>kdhsckjshc </CHAP> <CHAP titre="blibli"> ... </CHAP> </LIVRE>
NombreTotalImages.xsl (extrait)
Le template NbreImagesDuLivre serait ici assez simple du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <xsl:for-each select="LIVRE"> <xsl:variable name="LivreCourant"> <xsl:value-of select="@ref"/> </xsl:variable> Livre <xsl:value-of select="@ref"/> : <xsl:call-template name="NbreImagesDuLivre"> <xsl:with-param name="RefLivreCourant" select="$LivreCourant"/> </xsl:call-template> images <br/> </xsl:for-each>
Je n'ai pas testé cet exemple car il est fictif et dans mon pb réel le template fonctionne très bien (il s'agit d'un calcul plus complexe, une grosse "fonction" qui va compter certains trucs dans chaque fichier "livre.xml")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <xsl:template name="NbreImagesDuLivre"> <xsl:param name="RefLivreCourant"/> <xsl:variable name="FichierLivre"> <xsl:value-of select="$RefLivreCourant"/>.xml </xsl:variable> <xsl:value-of select="count(document(../Livres/$FichierLivre)//*/IMG)"/> </xsl:template>
Bref mon problème se situe au niveau de la somme total. Dans le cas présent j'obtient en sortie :
livre 051.xml : 5 images
livre 062.xml : 7 images
livre 840.xml : 3 images
Et moi j'aimerais afficher :
Bibliothèque : 15 images
(5+7+3)
Et là je n'y arrive plus, je sens bien qu'il faut utiliser de la recursivité mais je n'arrive pas à mettre en oeuvre...HELP !
Partager