Bonjour,
Je ne savais comment décrire mon problème alors le titre peut ne pas vous sembler correct, si tel est le cas je modifierais.
J'ai un fichier XML qui se présente de la façon suivante :
J'ai volontairement réduit le fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <librairie> <documents> <document type="livre" nbexemplaires="1" > <titre>Theorie de la musique</titre> <auteur>A. Danhauser</auteur> <langue>francais</langue> <date_edition>1996</date_edition> </document> <document type="livre" nbexemplaires="2"> <titre>Design Patterns - Elements of Reusable Object-Oriented Software</titre> <auteur>Erich Gamma</auteur> <auteur>Richard Helm</auteur> <auteur>Ralph Johnson</auteur> <auteur>John Vlissides</auteur> <langue>anglais</langue> <date_edition>1995</date_edition> </document> </documents> </librairie>
Maintenant à l'aide de feuille de style je voudrais générer un fichier TXT, mais jusque là pas de problème, voici le code que j'utilise :
Cela me génère un fichier texte qui se présente de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" /> <xsl:template match="/"> <xsl:apply-templates select="librairie"/> </xsl:template> <xsl:template match="librairie"> Librairie : ************* <xsl:apply-templates select="documents/document"/> </xsl:template> <xsl:template match="document"> <xsl:number format="1/ "/>Titre : <xsl:value-of select="titre"/> auteur : <xsl:value-of select="auteur"/> <xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet>
Mon problème est que j'aimerais que lorsqu'il y a plusieurs auteurs cela apparaisse comme ceci :Librairie
******
Nombre de documents : XX
1/ Titre : blabla
Auteur : blabla
2/ Titre : blabla
Auteur : blabla
Mais j'ai tenté avec un for-each et le résultat ne me donne pas satisfaction, voici mon code :X/ Titre : blabla
Auteur : bleble
Auteur : blabla
Etc...
Mais en fait cela ne marche pas, j'obtient ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" /> <xsl:template match="/"> <xsl:apply-templates select="librairie"/> </xsl:template> <xsl:template match="librairie"> Librairie : ************* <xsl:apply-templates select="documents/document"/> </xsl:template> <xsl:template match="document"> __________________________________________________________________________ <xsl:number format="1/ "/>Titre : <xsl:value-of select="titre"/> <xsl:for-each select="auteur"> auteur : <xsl:value-of select="auteur"/> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Le mot "Auteur :" apparait bien autant de fois que la balise <auteur> est présente, mais le value-of ne marche plus...Librairie
******
Nombre de documents : XX
1/ Titre : blabla
Auteur :
Auteur :
Auteur :
2/ Titre : blabla
Auteur :
Si quelqu'un peut se pencher sur mon problème.
Merci d'avance.
JP
Partager