Article View: fr.comp.text.xml
Article #10086Re: xsl:variable
From: Alain Ketterlin
Date: Mon, 18 Dec 2000 17:25
Date: Mon, 18 Dec 2000 17:25
63 lines
2912 bytes
2912 bytes
finalspy@my-deja.com writes:
> Si j'ai bien tout compris, la portee des variable comme des param est
> limitee,
Oui, a l'element qui contient <xsl:variable>
> par exemple si l'on definie une xsl:variable a l'exterieur de
> tout template et que j'en change la valeur
Stop. On ne change jamais la valeur d'une variable.
> dans un xsl:if
Tu declare donc une nouvelle variable qui masque la premiere.
> des que je sors du xsl if la variable reprends sa valeur definie au
> plus haut niveau ...
En fait, c'est la premiere variable qui redevient visible.
> Comment faire varier une valeur de variable dans ce cas ...
> Selon le resultat de mon xsl:if je voudrais assigner une certaine
> valeur a ma variable en dehors du if ...
>
> Y as t'il un moyen de realiser cela ?
Si tu utilises une variable, je suppose que ce que tu veux faire avec
est suffisamment complique pour que cela puisse faire l'objet d'un
template. Donc tu declare un nouveau template nomme, avec un parametre
<xsl:template name="xxx"
<xsl:param name="p"/>
...
</xsl:template>
Ensuite, tu apelles ce template en lui passant ce qu'il faut.
<xsl:choose>
<xsl:when test="... une condition ...">
<xsl:call-template name="xxx"">
<xsl:with-param name="p" select="...."/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="xxx"">
<xsl:with-param name="p" select="...."/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
En fait, <xsl:if> n'est pas fait pour ce que tu veux faire, mais
plutot pour tester si des (sous-)elements sont presents (auquel cas il
faut les traiter) ou non. J'ai donc utilise xsl:choose.
(C'est de la programmation fonctionnelle, ca : pas d'affectation.
Excellente discipline, amha.)
-- Alain.
P/S: dans le debut de ce message j'ai parle de "variable", en fait
j'aurais du dire "liaison" (binding). Cf.
http://www.w3.org/TR/xslt#variables
Technical Details
Message-ID:
<wyn1dtej54.fsf@polya.u-strasbg.fr>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!216.227.56.88.MISMATCH!telocity-west!TELOCITY!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!oleane.net!oleane!ciril.fr!news.u-strasbg.fr!not-for-mailReferences:
<91le8g$rma$1@nnrp1.deja.com>Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII-7-bit X-Google-Thread: 114f60,935e3a6481c614b9 X-Google-Attributes: gid114f60,public X-Google-ArrivalTime: 2000-12-18 09:26:22 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!216.227.56.88.MISMATCH!telocity-west!TELOCITY!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!oleane.net!oleane!ciril.fr!news.u-strasbg.fr!not-for-mail From: Alain Ketterlin <alain@dpt-info.u-strasbg.fr> Newsgroups: fr.comp.text.xml Subject: Re: xsl:variable Date: 18 Dec 2000 18:25:43 +0100 Organization: CRC - Universite Louis Pasteur Strasbourg France Lines: 63 Message-ID: <wyn1dtej54.fsf@polya.u-strasbg.fr> References: <91le8g$rma$1@nnrp1.deja.com> NNTP-Posting-Host: polya.u-strasbg.fr X-Trace: news.u-strasbg.fr 977164614 22842 130.79.6.19 (18 Dec 2000 18:36:54 GMT) X-Complaints-To: usenet@u-strasbg.fr NNTP-Posting-Date: 18 Dec 2000 18:36:54 GMT X-Newsreader: Gnus v5.6.45/XEmacs 21.1 - "Capitol Reef"