Bonjour,
j'ai un petit souci de transformation d'un fichier xml vers HTML.
Voici un extrait de mon fichier XML :
Code :
- <!DOCTYPE BIBLIOTHEQUE SYSTEM "bibliot.dtd">
- <BIBLIOTHEQUE SUJET="Littérature">
- <LIVRE LANG="Français" GENRE="policier">
- <AUTEUR>
- <NOM>Sjöwall</NOM>
- <PRENOM>Maj</PRENOM>
- </AUTEUR>
- <AUTEUR>
- <NOM>Wahlöö</NOM>
- <PRENOM>Per</PRENOM>
- </AUTEUR>
- <TRADUCTEUR PREFIXE="Traduit de l'anglais par">
- <NOM>Deutsch</NOM>
- <PRENOM>Michel</PRENOM>
- </TRADUCTEUR>
- <TITRE>L'homme au balcon</TITRE>
- <EDITEUR>
- <NOM>Rivages/Noir</NOM>
- </EDITEUR>
- <DATEPUB>2008</DATEPUB>
- </LIVRE>
|
Je dois transformer ce fichier en tableau via XSLT pour obtenir un tableau dans ce format :
http://www.hiboox.fr/go/images/inf [...] 2.jpg.html
Voilà donc mon fichier XSLT permettant d'effectuer cette transformation :
Code :
- <?xml version="1.0" encoding="UTF-8"?>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:output method="html" version="html4.01" encoding="UTF-8" indent="yes"/>
- <xsl:template match="/">
- <html>
- <head>
- <title>Bibliothèque</title>
- </head>
- <body>
- <h1>Bibliothèque</h1>
- <h2>Présentée en tableau, classée par auteur</h2>
- <xsl:apply-templates select="BIBLIOTHEQUE/LIVRE">
- <xsl:sort select="AUTEUR/NOM"/>
- </xsl:apply-templates>
- </body>
- </html>
- </xsl:template>
- <xsl:template match="LIVRE">
- <table bgcolor="#F0FFFF" cellspacing="6" cellpadding="6" width="1200" border="1"
- align="center">
- <tr>
- <th width="200">Auteur</th>
- <th width="200">Traducteur</th>
- <th width="200">Titre</th>
- <th width="200">Éditeur</th>
- <th width="200">Genre</th>
- <th width="200">Année</th>
- </tr>
- <tr>
- <td width="200">
- <xsl:value-of select="AUTEUR/NOM"/>, <xsl:value-of select="AUTEUR/PRENOM"/>
- </td>
- <td width="200">
- <xsl:value-of select="TRADUCTEUR/PRENOM"/> <xsl:value-of
- select="TRADUCTEUR/NOM"/>
- </td>
- <td width="200">
- <em>
- <xsl:value-of select="TITRE"/>
- </em>
- </td>
- <td width="200">
- <xsl:value-of select="EDITEUR/NOM"/><xsl:if test="EDITEUR/LIEU">, <xsl:value-of
- select="EDITEUR/LIEU"/></xsl:if>
- </td>
- <td width="200">
- <xsl:value-of select="@GENRE"/>
- </td>
- <td width="200">
- <xsl:value-of select="DATEPUB"/>
- </td>
- </tr>
- </table>
- </xsl:template>
- </xsl:stylesheet>
|
Mais le souci, c'est que les cellules de titre (<th> ) s'affichent à chaque nouvelle rangée, ce que je ne souhaite pas. J'aimerais que la rangée avec ces balises <th> ne s'affichent qu'une seule fois. Je ne vois vraiment pas d'où vient le souci...
Voilà ce que ça donne :
http://www.hiboox.fr/go/images/inf [...] c.jpg.html
C'est peut-être un détail qui cloche, mais je sèche. Je tiens à préciser que je débute en matière d'XML et XSLT
Merci beaucoup pour votre aide précieuse !
Message édité par bananou le 11-04-2010 à 20:14:31