Thread View: fr.comp.text.xml
2 messages
2 total messages
Started by Benoit ROSAZ
Mon, 28 Aug 2000 00:00
stockage de valeur et comparaison en XSL
Author: Benoit ROSAZ
Date: Mon, 28 Aug 2000 00:00
Date: Mon, 28 Aug 2000 00:00
19 lines
1391 bytes
1391 bytes
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"
est ce que c'est correct ?
comment est que je peut stocker "titre/Le_Type" dans "Le_Type_Old"
sinon comment faire ?
<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>
Re: stockage de valeur et comparaison en XSL
Author: 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.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads