xsl - débutant - concat strings
Bonjour à tous,
Je suis débutant en informatique et je suis un train de générer un document XHTML depuis un document XML.
Je désire faire une boucle qui prend le contenu de chaque balise XML <motCle>, qui crée un élément <dd> avec une concaténation. exemple: <dl>mot clé1, motclé2, motclé3</dl>
Hors, dans mon template description (xsl ligne 16) je n'arrive qu'a générer une unique chaîne de caractère et je ne sais pas comment mettre une virgule entre deux mot clés!
Si quelqu'un peut me donner un coup de main ce serait génial, étant vraiment débutant, un exemple explicite serait la bienvenue :roll:
D'avance, merci à tous pour votre lecture.
Très bonne journée et meilleures salutations.
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
|
<?xml version="1.0" encoding="UTF-8"?>
<galerie>
<categorie nom="ensembles">
<infos>
<legende>ceci est une légende</legende>
<datePriseVue>
<date>
<annee>2010</annee>
<mois>04</mois>
<jour>01</jour>
</date>
<temps>
<heure>22</heure>
<minutes>00</minutes>
<secondes>00</secondes>
</temps>
</datePriseVue>
<taille>
<largeur>1024</largeur>
<hauteur>668</hauteur>
</taille>
<description>
<motCle>fleur</motCle>
<motCle>plante</motCle>
</description>
<auteur>
<nom>dupré</nom>
<prenom>john</prenom>
<mail>mail@gmail.com</mail>
</auteur>
</infos>
</categorie>
</galerie> |
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xhtml xsl xs">
<xsl:output method="xhtml" encoding="UTF-8"
media-type="text/html"
omit-xml-declaration="yes"
doctype-public= "-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system= "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
indent="yes"/>
<xsl:template match="description">
<xsl:variable name="motCle"><xsl:value-of select="./motCle"></xsl:value-of></xsl:variable>
<xsl:if test="(position() != last())"><dd><xsl:value-of select="concat($motCle,', ')"></xsl:value-of></dd></xsl:if>
<dd><xsl:value-of select="$motCle"></xsl:value-of></dd>
</xsl:template>
<xsl:variable name="lien">images/galerie/</xsl:variable>
<xsl:variable name="vignettes">images/galerie/</xsl:variable>
<xsl:template match="infos">
<div class="photo">
<a><xsl:attribute name="href"><xsl:value-of select="concat ($lien,../@nom,'/0',position(),'.jpg')"></xsl:value-of></xsl:attribute>
<img><xsl:attribute name="src"><xsl:value-of select="concat ($vignettes,../@nom,'/vignettes/0',position(),'.jpg')" /></xsl:attribute></img>
</a>
<dl>
<dt>legende</dt>
<dd><xsl:value-of select="legende"></xsl:value-of></dd>
<dt>date et heure</dt>
<xsl:variable name="annee"><xsl:value-of select="datePriseVue/date/annee"></xsl:value-of></xsl:variable>
<xsl:variable name="mois"><xsl:value-of select="datePriseVue/date/mois"></xsl:value-of></xsl:variable>
<xsl:variable name="jour"><xsl:value-of select="datePriseVue/date/jour"></xsl:value-of></xsl:variable>
<dd><xsl:value-of select="concat ($jour,'.',$mois,'.',$annee)"></xsl:value-of></dd>
<dt>taille</dt>
<xsl:variable name="largeur"><xsl:value-of select="taille/largeur"></xsl:value-of></xsl:variable>
<xsl:variable name="hauteur"><xsl:value-of select="taille/hauteur"></xsl:value-of></xsl:variable>
<dd><xsl:value-of select="concat ($largeur,'x',$hauteur,'px')"></xsl:value-of></dd>
<dt>mot clés</dt>
<xsl:apply-templates select="description"></xsl:apply-templates>
<dt>auteur</dt>
<dd>
<dl>
<dt>nom</dt>
<dd><xsl:value-of select="auteur/nom"></xsl:value-of></dd>
<dt>prénom</dt>
<dd><xsl:value-of select="auteur/prenom"></xsl:value-of></dd>
<dt>contact</dt>
<dd>
<a><xsl:attribute name="href"><xsl:value-of select="auteur/mail"></xsl:value-of></xsl:attribute>mail contact</a>
</dd>
</dl>
</dd>
</dl>
</div>
</xsl:template>
<xsl:template match="categorie">
<div class="categories">
<h2><xsl:attribute name="id"><xsl:value-of select="@nom"></xsl:value-of></xsl:attribute><xsl:value-of select="@nom"></xsl:value-of></h2>
<div><xsl:attribute name="id"><xsl:value-of select="@nom"></xsl:value-of></xsl:attribute>
<div class="conteneur_photos">
<xsl:apply-templates select="infos"></xsl:apply-templates>
</div>
</div>
</div>
</xsl:template>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>test</title>
</head>
<body>
<div id="fenetre"> <!-- fenêtre d'affichage des photos-->
<xsl:apply-templates select="//categorie"></xsl:apply-templates>
</div> <!-- fin de la div fenêtre-->
</body>
</html>
</xsl:template>
</xsl:stylesheet> |