Bonjour,
Je viens vers vous avec un problème de xsl.
Je vous mets la dtd, quelques données xml et mon code xsl.
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 <!ELEMENT catalogue (plats,recettes,ingredients,compositions,listeAvis)> <!ELEMENT plats (plat+)> <!ELEMENT plat (nomPlat, typePlat)> <!ELEMENT nomPlat (#PCDATA)> <!ELEMENT typePlat (#PCDATA)> <!ATTLIST plat pk_idPlat ID #REQUIRED> <!ELEMENT recettes (recette+)> <!ELEMENT recette (nomRecette,sourceRecette,derouleRecette,tempsPrepa,difficulteRecette)> <!ELEMENT nomRecette (#PCDATA)> <!ELEMENT sourceRecette (#PCDATA)> <!ELEMENT derouleRecette (#PCDATA)> <!ELEMENT tempsPrepa (#PCDATA)> <!ELEMENT difficulteRecette (#PCDATA)> <!ATTLIST recette pk_idRecette ID #REQUIRED fk_idPlat IDREF #IMPLIED>
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
29
30
31
32
33
34
35 <catalogue> <plats> <plat pk_idPlat="P01"> <nomPlat>Crêpes</nomPlat> <typePlat>Dessert</typePlat> </plat> </plats> <recettes> <recette pk_idRecette="R01" fk_idPlat="P01"> <nomRecette>Crêpes faciles et délicieuses</nomRecette> <sourceRecette>http://www.papillesetpupilles.fr/2011/01/crepes-faciles.html/</sourceRecette> <derouleRecette>Tamisez la farine dans un saladier. Ajoutez le sel, le sucre en poudre et le sucre vanillé puis les ufs et mélangez bien. Versez ensuite le lait petit à petit en mélangeant constamment pour éviter les grumeaux. Terminez en ajoutant le Cognac. Pour la cuisson : A laide dun papier essuie tout, huilez légèrement votre poêle à crêpes. Faites la chauffer puis versez une petite louche de pâte sachant que plus vous mettez de pâte (dans des conditions raisonnables, on ne fait pas un pancake), donc plus vous mettez de pâte et plus elle sera moelleuse et moins vous en mettez et plus elle sera croustillante; 2 cuissons possible : Soit vous laissez cuire environ 2 minutes puis vous la retournez et laissez cuire 1 minute supplémentaire.{et si vous vous en sentez les capacités, vous la faites sauter }.Soit, au bout dune à deux minutes de cuisson, saupoudrez-la dune cuillère à soupe de sucre en poudre, pliez-la en 4 (comme sur la photo) et laissez chauffer quelques secondes le temps que le sucre soit fondu. Servez immédiatement. La crêpe nest ainsi cuite que dun seul côté et mi-cuite pourrait-on dire de lautre. Nous ne les mangeons quasiment que comme cela à la maison.</derouleRecette> <tempsPrepa>15 minutes</tempsPrepa> <difficulteRecette>Facile</difficulteRecette> </recette></recettes>Ce que j'aimerai c'est afficher le nom des recettes de crêpes. Le lien entre les deux entité se fait grâce au pk_idPlat et fk_idPlat.
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 <body> <header> <img> <xsl:attribute name="src"> <xsl:value-of select="image/image.png"/> </xsl:attribute> </img> </header> <h1>Dessert</h1> <div class="crepe"> <h2>Recettes de crêpes</h2> <!-- affichage du nomRecette si nomPlat = Crêpes--> <xsl:for-each select="recettes/recette"> <xsl:variable name="plat" select="@fk_idPlat"/> <xsl:for-each select="plats/plat[@pk_idPlat=$plat]"> <xsl:value-of select="nomRecette"/> </xsl:for-each> </xsl:for-each> </div> </body>
Donc ce qu'on veut c'est si la recette à un fk_idPlat=P01 alors on affiche le nomRecette (on en a 5 avec un fk_idPlat=P01 donc logiquement il nous fait une liste de cinq nomRecette différents)
Merci pour votre aide, et n'hésitez pas à demander davantage d'informations.
Partager