Affichage d'un élément via reference
Bonjour,
je suis totalement débutant en xsl (et totalement nul aussi accessoirement :lol:), mais bon j'ai pas le choix je suis obligé de m'y mettre.
Je n'arrive pas à faire une transformation.
Le plus simple c'est de vous montrer un exemple de ce que je souhaite faire.
Je souhaite au final obtenir un tableau, avec dans la colonne de droite les titres des livres et dans la colonne de gauche l'auteur de ce livre
Voici ma dtd
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <!ELEMENT livre (auteurs, titres) >
<!ELEMENT auteurs (auteur)* >
<!ELEMENT titres (titre)* >
<!ELEMENT titre (nom) >
<!ATTLIST titre
id ID #REQUIRED
refdeauteur IDREF #REQUIRED
>
<!ELEMENT nom (#PCDATA) >
<!ELEMENT auteur (nom) >
<!ATTLIST auteur
id ID #REQUIRED
> |
Voici un exemple de fichier xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<livre>
<auteurs>
<auteur id="auteur1" >
<nom>Dupond</nom>
</auteur>
<auteur id="auteur2" >
<nom>Charles</nom>
</auteur>
</auteurs>
<titres>
<titre id="titre1" refdeauteur="auteur1" >
<nom>Une histoire vraie</nom>
</titre>
<titre id="titre2" refdeauteur="auteur2">
<nom>Belles Histoires</nom>
</titre>
<titre id="titre3" refdeauteur="auteur1">
<nom>Sous le vent</nom>
</titre>
</titres>
</livre> |
Et voici ce que j'ai commencé à faire en xsl
Code:
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
| <xsl:template match="/">
<html >
<head></head>
<body><xsl:apply-templates select="livre"/></body>
</html>
</xsl:template>
<xsl:template match="livre">
<table border="4">
<tr>
<td>Titres</td>
<td>Auteurs</td>
</tr>
<xsl:apply-templates select='titres/titre'></xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="titre">
<tr>
<td><font face="arial" size="1"><xsl:value-of select='nom'></xsl:value-of></font></td>
<td><font face="arial" size="1"><xsl:value-of select='@refdeauteur'</xsl:value-of></font></td>
</tr>
</xsl:template>
</xsl:stylesheet> |
Sauf que à la place d'avoir dans la 2ème colonne la valeur de l'attribut refdeauteur, je souhaiterai avoir le nom de cet auteur. Sauf que je ne vois pas du tout comment faire...
Je ne sais pas si j'ai été très clair, si vous avez des questions n'hésitez pas.
Merci d'avance