un trombinoscope multi colonne en xsl
Bonjour
voici mon 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 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| <?xml version="1.0" encoding="ISO-8859-1"?>
<fichier>
<adresse>
<personne>
<code_adherent>1</code_adherent>
<nom>Lenom1</nom>
<prenom>Leprenom1</prenom>
<photo>Levisage1.jpg</photo>
<club>
<an_adh>2004</an_adh>
<section>kmer</section>
<section>handisport</section>
</club>
</personne>
<voie1 accord="oui"></voie1>
<codepostal> </codepostal>
<ville> </ville>
</adresse>
<adresse>
<personne>
<code_adherent>2</code_adherent>
<nom>Lenom1</nom>
<prenom>Leprenom1</prenom>
<club>
<an_adh>2004</an_adh>
<section>kmer</section>
</club>
</personne>
<voie1 accord="oui"> </voie1>
<codepostal> </codepostal>
<ville> </ville>
</adresse>
******
<adresse>
<personne>
<code_adherent> n</code_adherent>
<nom>Lenomn</nom>
<prenom>Leprenomn</prenom>
<photo>Levisagen.jpg</photo>
<club>
<an_adh>2004</an_adh>
<section>kmer</section>
</club>
</personne>
<voie1 accord="oui"> </voie1>
<codepostal> </codepostal>
<ville> </ville>
</adresse>
</fichier> |
je cherche à faire un trombinoscope sur deux colonnesde deux cellules, c'est a dire avec la présentation suivante :
<table><tr><td>nom1, prénom1 etc...</td<td>photo1</td><td>nom2 prenom2...</td><td>photo2</td></tr>
plusieurs lignes et fin de table.
ne connaissant pas les subtilités de xsl et des commandes fo pouvez vous me conseiller sur la solution la plus simple pour : trier les noms par ordre alphabétique (je sais faire), n'afficher que les personnes qui ont un élément photo (j'ai trouvé une solution) et garder la présentation en multicolonne, j'utilise saxon comme compilateur.
j'essaye de m'inspirer des solutions proposées dans ce forum et avec les défis, mais pour le moment je coince.
Merci d'avance pour le temps que vous pourrez me consacrer.
[ Balise CODE ajoutée par ridan ]
[ Pensez-y à l'avenir. Merci. ]
c'est résolu et cela fonctionne
voici le code complet de l'xsl pour éviter à erwy de se redire :
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| <?xml version= "1.0" encoding='ISO-8859-1'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" />
<xsl:template match="fichier">
<html>
<head>
<title> Liste alphabétique adhérents kmer</title>
<LINK TITLE="AFFICHAGE" TYPE="text/css" REL="stylesheet" HREF="adresse.css" />
</head>
<body>
<xsl:call-template name="body"/>
</body>
</html>
</xsl:template>
<xsl:template name="body">
<!-- lignes courantes -->
<h1>Trombinoscope Provisoire</h1>
<p>Pour que le trombi devienne définitif merci d'envoyer votre photo avec nom, prénom, adresse, email, telephone fixe, téléphone portable
à l'email suivante : *****@voila.fr ou de laisser une enveloppe ici en y mettant les memes mentions - merci - </p>
<p> seriez vous d'accord pour y mettre les téléphones portable et de domicile et d'email ? </p>
<table border="1">
<tr><td>Nom Prénom téléphone tél portable adresse email</td><td>Photo</td><td>Nom Prénom téléphone tél portable adresse email</td><td>Photo</td></tr>
<xsl:apply-templates select="adresse/personne[photo !='victor.jpg']">
<xsl:sort select="nom"/>
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="personne">
<xsl:if test="position() mod (2)=1">
<xsl:text disable-output-escaping="yes"><tr></xsl:text >
</xsl:if >
<td>
<xsl:value-of select="nom"/>
<xsl:value-of select="prenom"/>
<br/>tel :
<xsl:value-of select="../telephone"/>
<br/>cellulaire :
<xsl:value-of select="cell"/>
<br/>email :
<xsl:variable name="mailsrc" select="mail"/>
<A HREF="mailto:{$mailsrc}"><xsl:value-of select="mail"/> </A>
</td><td>
<xsl:variable name="src" select="photo"/>
<img src="images/{$src}"/>
</td>
<xsl:if test="position() mod (2)=0 or position()=last()">
<xsl:text disable-output-escaping="yes"></tr></xsl:text >
</xsl:if >
</xsl:template>
</xsl:stylesheet> |
un grand merci pour erwy pour son aide décisive, il me reste maintenant à comprendre le xsl:fo pour faire des impressions correctes sur des pages blanches.
ps existe-t-il un bon bouquin de référence sur le xsl pour bien comprendre le code ci-dessus ?
[ Balise CODE ajoutée par ridan ]
[ Pensez-y à l'avenir. Merci. ]