🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #10086

Re: xsl:variable

#10086
From: Alain Ketterlin
Date: Mon, 18 Dec 2000 17:25
63 lines
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-mail
References: <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"