Le jeudi 03 février 2005 à 12:25 +0100, Oscar NIYONKURU a écrit :
> Merci pour toutes ces précisions Eric!
>
> Si on se base sur l'exemple que tu viens de donner, mais en stockant
> la valeur de l'appel de la fonction (ci-dessous j'ai essayé d'écrire
> une fonction renvoyant une valeur et appelée avec call-template que je
> place dans une variable):
>
> <!--Modèle nommé renvoyant une valeur-->
> <xsl:template name="nom">
> <xsl:param name="x" select="1"/>
> <xsl:param name="z" select="1"/>
> <xsl:variable name="resultat">
> .....Corps de la fonction..
> </xsl:variable>
> <xsl:copy-of select="$resultat"/>
> <xsl:template>
>
> <!--Appel du modèle renvoyant une valeur-->
> <xsl:variable name="res"> <xsl:call-template name="nom">
> <xsl:with-param name="x" select="$x*6"/>
> <xsl:with-param name="z" select="$z"/>
> </xsl:call-template>
> </xsl:variable>
>
> Question:en modifiant les paramètres x et z, d'après ce que vous venez
> de me dire, cela ne sera prise en compte que lors de la prochaine
> instanciation du modèle!!!
Ce que je voulais dire, c'est que la valeur $x * 6 est affectée au
paramètre $x local à l'exécution du template nommé "nom" et que cela ne
change pas la valeur du paramètre (ou de la variable) $x dans le
contexte de la variable $res.
Cela n'a rien de magique et, à part le fait que les variables ne
changent pas, c'est exactement le même mécanisme que dans un langage de
programmation comme Java ou Python.
Ton XSLT donnerait en Java quelque chose du type :
Object nom(int x, int z) {
Object resultat = ... ;
return resultat
}
Object res = nom(x * 6, z);
Et le fait d'appeler la fonction nom en lui passant en argument "x" la
valeur d'une variable x multipliée par 6 ne changerait pas la valeur de
la variable.
C'est la même chose en XSLT et les variables et paramètres $x de ta
transformation n'entrent pas en conflit parce qu'elles n'ont pas la même
portée.
Suis-je plus clair?
Eric
--
Read me on Advogato.
http://advogato.org/person/vdv/
------------------------------------------------------------------------
Eric van der Vlist http://xmlfr.org http://dyomedea.com
(ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------
--
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)
Received on Thu Feb 3 13:23:03 2005