Bonjour à tous,

Ça fait à peine quelques heures que je viens de m'initier au XPath et XSLT, j'ai trouvé des infos intéressantes mais là je bloque...

J'ai le fichier XML suivant :

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
 
<Catalog>
  <Livres>
    <ISBN>2756400211</ISBN>
    <Title>La couronne des sept royaumes, Tome 5 : Les fruits de la vengeance</Title>
    <Author>David-B Coe</Author>
    <Publisher>Pygmalion</Publisher>
    <AvgRating />
    <Comments />
    <PicCoverUrl>http://ec1.images-amazon.com/images/P/2756400211.01._SCMZZZZZZZ_V51317311_.jpg</PicCoverUrl>
    <Category>Fantastique</Category>
    <Language>Français</Language>
  </Livres>
  <Livres>
    <ISBN>229033068X</ISBN>
    <Title>La Compagnie Noire, Tome 3 : La Rose blanche</Title>
    <Author>Glen Cook</Author>
    <Publisher>J'ai Lu</Publisher>
    <AvgRating>3,5</AvgRating>
    <Comments />
    <PicCoverUrl>http://images.amazon.com/images/P/229033068X.01._SCMZZZZZZZ_V57124811_.jpg</PicCoverUrl>
    <Category>Fantastique</Category>
    <Language>Français</Language>
  </Livres>
</Catalog>
J'ai trouvé dans le forum la façon de regrouper sur un élément, soit par la méthode Muench. Ça me donne 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
29
30
 
<xsl:key name="id" match="Category" use="."/>
 
<xsl:template match="/">
<html>
<body>
<!-- parcoure toutes les catégories de livres distinctes avec Category -->
 <xsl:for-each select="//Category[generate-id(.)=generate-id(key('id', .) [1])]">
  <!-- stockage de la catégorie unique dans une variable -->
  <xsl:variable name="cat" select="."/>
  <!-- teste si la variable cat récupérée n'est pas vide -->
   <xsl:if test="string-length($cat) != 0">
    <b><xsl:value-of select="$cat"/></b>
    <br/>
    <br/>
    <!-- parcoure toutes les données (noeuds) des livres -->
    <xsl:for-each select="//ISBN | //Title | //Author | //Publisher | //AvgRating | //Comments">
      <!-- si la catégorie est la même que celle précédemment, on met la valeur des noeuds -->
      <xsl:if test="../Category = $cat">
         <!--<xsl:apply-templates/>-->
        <xsl:value-of select="."/>
        <br/>
      </xsl:if>
    </xsl:for-each>
    <br/>
   </xsl:if>
 </xsl:for-each>
</body>
</html>
</xsl:template>
D'abord, je me demande si la façon d'extraire la valeur des noeuds que j'utilise est correcte :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<xsl:for-each select="//ISBN | //Title | //Author | //Publisher | //AvgRating | //Comments">
Ensuite, j'aimerais appliquer un formatage différent pour chacun des noeuds enfants de Livres. Par exemple, j'aimerais que le noeud Title soit en gras, que le noeuds PicCoverURL soit placé dans une balise image, etc. J'ai essayé plusieurs chose mais je n'arrive pas à le faire. Quelqu'un a une idée ?

Merci à l'avance.

iDaaX