From: Cyril Jandia (cjandia@logfi.fr)
Date: 25/06/2002 - 08:02
> De : salvatim@clio.unice.fr [mailto:salvatim@clio.unice.fr]
> À : xml-tech@xmlfr.org
> Objet : [xml-tech] Re: concat
>
> Eric.Reiter@ic.lu a écrit :
>
> > Bonjour
> >
> > Voici un extrait de mon fichier XML :
> [...]Je souhaiterais faire un concat de toutes les balises <remarque> pour un
> > contenu donne de la balise <tk> (exemple : concatener toutes les remarques
> > pout <tk>36210</tk>)
> >
> > Quelqu un pourrait il m aider?
>
> Bonjour,
>
> Avec une règle xsl utilisant qq chose du style :
>
> <xsl:for-each select="entree/tk[string()=36210]"
> <xsl:value-of select="entree/tk"/>
> </xsl:for-each>
>
> Ca peut se parametrer, s'inscrire dans une règle nommé...
>
> Je pense que ca peut marcher
Oui... mais à la condition d'être un peu plus "propre" (... syntaxiquement ;=)
Par exemple :
<?xml version="1.0" ?>
<xsl:transform
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:param name="which-tk" select="'36210'" />
<xsl:template match="entrees">
<html>
<body>
<h1>Remarks for <code>tk</code> : <em><xsl:value-of select="$which-tk"
/></em></h1>
<pre><xsl:for-each select="entree/remarque[string(../tk)=$which-tk]">
<xsl:value-of select="." /><xsl:text>
</xsl:text>
</xsl:for-each></pre>
</body>
</html>
</xsl:template>
</xsl:transform>
Note 1 : le choix de la présentation (ici, utilisant "<pre>..." et
"<xsl:text>...") est bien sûr purement arbitraire; puisque ce n'est qu'un
exemple : on peut l'orienter tt autrement (d'ailleurs, la sortie n'est peut-être
même pas HTML, après tout(?) ;=)
Note 2 :
<xsl:value-of...> utilisé conjointement à <xsl:for-each...> est bien la
solution.
Car, en effet, <xsl:value-of select="entree/remarque[string(../tk)=$which-tk]"
/> utilisé seul ne suffirait pas : il n'y aurait que le premier noeud de la
sélection XPath "entree/remarque[...]" qui serait converti en chaîne; cf. la
définition de [value-of] et son traitement des ensembles de noeuds via la
[fonction string()].
[value-of]
http://xmlfr.org/w3c/TR/xslt#value-of
[fonction string()]
http://xmlfr.org/w3c/TR/xpath#function-string
--CJ
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|