Article View: fr.comp.text.xml
Article #10683Re: stockage de valeur et comparaison en XSL
From: Thierry Bezecourt
Date: Mon, 28 Aug 2000 00:00
Date: Mon, 28 Aug 2000 00:00
62 lines
2759 bytes
2759 bytes
In article <P4sq5.3144$HF.10532891@nnrp3.proxad.net>,
"Benoit ROSAZ" <PasDeSpam@chezmoi.com> wrote:
> En gros ce que je veut faire c'est
> si le corps est different alors je l'affiche !
> si il est identique (pour ne pas avoir de redondance) je ne fait rien
>
> en fait a chaque boucle (each), il stocke "titre/Le_Type"
> dans "Le_Type_Old" et si dans la boucle d'apres
> "titre/Le_Type" = "Le_Type_Old" alors je n'afiche pas
> "titre/Le_Type"
Attention, les variables, dans XSL, ont ceci de particulier qu'elles ne
sont pas variables. Voir
http://www.dpawson.freeserve.co.uk/xsl/N8090.html#N25653 pour une
explication de ce fait (en gros, XSL s'inspire des langages
fonctionnels).
> <xsl:for-each select="element">
> <xsl:sort select="titre/Le_Type"/>
> <xsl:if test="not(titre/Le_Type=Le_Type_Old)">
> <xsl:apply-templates select="titre/Le_Type"/>
> </xsl:if>
> <xsl:variable name="Le_Type_Old" select="titre/Le_Type"/>
> </xsl:for-each>
Quand on ne peut pas changer la valeur d'une variable dans une
fonction, on utilise la r�cursion. Par exemple :
<!-- J'appelle le template "element" sur le premier element -->
<xsl:apply-templates select="element[1]">
<xsl:sort select="titre/Le_Type" />
</xsl:apply-templates>
avec le template suivant pour "element" :
<xsl:template match="element">
<xsl:param name="Le_Type_Old" />
<xsl:if test="not(titre/Le_Type=$Le_Type_Old)">
<xsl:apply-templates select="titre/Le_Type" />
</xsl:if>
<!-- R�cursion : je rappelle le template pour l'�l�ment
suivant, en passant le type courant en param�tre -->
<xsl:apply-templates
select="following-sibling::element[position()=1]">
<xsl:with-param name="Le_Type_Old">
<xsl:value-of select="titre/Le_Type" />
</xsl:with-param>
</xsl:apply-templates>
</xsl:template>
Comme quoi XSLT est une sorte de revanche de Lisp.
--
Thierry B�zecourt
http://www.thbz.cx
Sent via Deja.com http://www.deja.com/
Before you buy.
Technical Details
Message-ID:
<8odluf$vod$1@nnrp1.deja.com>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<P4sq5.3144$HF.10532891@nnrp3.proxad.net>Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII X-Google-Thread: 114f60,783ac71a9ec48ee6 X-Google-Attributes: gid114f60,public From: Thierry Bezecourt <thbz@thbz.cx> Subject: Re: stockage de valeur et comparaison en XSL Date: 2000/08/28 Message-ID: <8odluf$vod$1@nnrp1.deja.com> X-Deja-AN: 663443734 References: <P4sq5.3144$HF.10532891@nnrp3.proxad.net> X-Http-Proxy: 1.0 srv66.globeid.com:8080 (Squid/2.3.STABLE1), 1.0 x57.deja.com:80 (Squid/1.1.22) for client unknown, 213.41.26.66 Organization: Deja.com - Before you buy. X-Article-Creation-Date: Mon Aug 28 12:29:17 2000 GMT X-MyDeja-Info: XMYDJUIDthrubis Newsgroups: fr.comp.text.xml X-Http-User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)