IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

Variable "globale" (dans plusieurs templa


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 34
    Points : 29
    Points
    29
    Par défaut [RESOLU] Variable "globale" (dans plusieurs templa
    Salut !
    Dans mon XSL, je voudrais stocker une chaîne de caractère dans une variable.
    Cette variable sera utilisée dans différents template, elle est "globale".
    J'ai essayer en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	<xsl:template name="VarGlobale">
    		<xsl:variable name="var">blablabla</xsl:variable>
    	</xsl:template>
    ensuite dans un autre template j'appele le template VarGlobale en pensant qu'il est alors possible d'utiliser la variable $var comme ci dessous par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="$var='blablabla'">
    mais ça ne marche pas voici le message d'erreur :
    Impossible de résoudre une référence à une variable ou un paramètre « var». La variable ou le paramètre ne sont peut être pas définis ou sont absents de la portée.
    Je pense qu'il n'accède pas à la variable car elle n'est pas définie dans le même template, mais comment faire alors pour faire une variable utilisable dans tous les template de mon XSL ?

    merci d'avance.

  2. #2
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    XSL est un langage fonctionnel sans effet de bord, donc sans variable globale. De plus le mot variable est trompeur car c en réalité une constante définit dans le contexte d'un noeud...

    Tout ce que tu peux faire est de passer les "valeur" en param des templates.
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  3. #3
    Membre régulier
    Inscrit en
    Avril 2003
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 52
    Points : 78
    Points
    78
    Par défaut
    Voir Variables et Paramètres de haut niveau dans une traduction française de la recommendation XSLT.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 34
    Points : 29
    Points
    29
    Par défaut
    Merci beaucoup pour la ref W3C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:variable name="para-font-size">12pt</xsl:variable>
    <xsl:template match="para">
     <fo:block font-size="{$para-font-size}">
       <xsl:apply-templates/>
     </fo:block>
    </xsl:template>
    Ca marche en effet avec si je ne déclare pas la variable dans un template.

    Sinon c'est vrai que ce sont des variables fixes dont on ne peut pas changer la valeur ou alors dont la valeur dépend de ce qui est passé en argument un peu comme une fonction.
    C'est un drôle de langage XSL mais c'est quand même très puissant !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Variable global utilisable dans plusieurs Forms
    Par nams2590 dans le forum Visual C++
    Réponses: 13
    Dernier message: 11/12/2007, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo