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 :

[XSL] Comment modifier la valeur d'une variable?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut [XSL] Comment modifier la valeur d'une variable?
    Bonjour,
    J'ai une variable (globale) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl&#58;variable name="old_value">
      toto
    </xsl&#58;variable>
    et je voudrais la modifier!!!
    Simple me direz vous, il suffit que je reprenne l'exemple ci-dessus!
    Seulement quand je le modifie dans un template il perd sa valeur, comme s'il elle avait été réinitialisé!
    @+
    En Informatique, tout est possible... mais... ce n'est pas toujours évident!

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 42
    Points
    42
    Par défaut Essaye ça
    Essaye la syntaxe réduite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl&#58;variable name="old_value" select="toto"/>
    et regarde la différence.
    Co-rédacteur du site : www.atelierweb.ma (IE only)

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 190
    Points : 97
    Points
    97
    Par défaut
    Salut,
    En fait il est impossible d'en modifier la valeur!
    AUCUN EFFET DE BORD EN XSL
    Bouh!
    C'est pas grave j'ai trouvé un autre moyen!
    @+
    En Informatique, tout est possible... mais... ce n'est pas toujours évident!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Je viens de penser à un truc...
    XSL est le premier langage avec des variables qu'on ne peut pas changer ! Dur pour une variable quand même... Elle perd un peut de son intérêt et de son essence... Bravo à ceux qui font des langages aussi terribles !

  5. #5
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par tiOOt
    Je viens de penser à un truc...
    XSL est le premier langage avec des variables qu'on ne peut pas changer ! Dur pour une variable quand même... Elle perd un peut de son intérêt et de son essence... Bravo à ceux qui font des langages aussi terribles !
    T'as raison tu devrais appelez les concepteurs et leur expliquer comment faire.
    Pour utiliser des 'variables modifiables' en xslt,une seule solutions des sous programmes recursifs avec passages de parametres de plus avec les processeurs xslt tu peux initialise avec la valeur que tu souhaite.
    voir http://www.developpez.net/forums/viewtopic.php?t=90007
    pour la syntaxe des processeurs

  6. #6
    Membre du Club Avatar de philemon_siclone
    Inscrit en
    Septembre 2003
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    XSL est le premier langage avec des variables qu'on ne peut pas changer !
    Il me semble que tu oublies que c'est la cas de presque tout les langages à base de règles (en anglais "pattern matching oriented") comme l'est xsl. Entre autre : prolog, lisp, caml, FP, Joy, etc...

    Tous les langages purement fonctionnels interdisent les effets de bord. Cela a de multiples avantages (preuve de programme par exemple). Dans le cas de XSL, le fait de ne pas avoir d'effet de bord a essentielement pour but de permettre un rendu progressif du document. En effet, sans effet de bord, on est independant de l'ordre d'execution des instructions, et il devient (theoriquement) possible 1) de commencer à generer une sortie alors que le parsing n'est pas terminé 2) d'identifier les impacts générés par une modification d'une partie du document source et donc de ne pas avoir à regenerer l'ensemble de la sortie en cas de petite modification du doc source.

    Je ne porte pas de jugement de valeur sur "programmation imperative vs programmation fonctionnelle" (ce serait ridicule; je suppose qu'ils répondent à des besoins differents); mais dire que "XSL est le seul langage ..." je trouve ça un peu fort de café.

    Tcho,

    Phil

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Citation Envoyé par philemon_siclone
    dire que "XSL est le seul langage ..." je trouve ça un peu fort de café.
    En effet M. Siclone, c'est abusé mais je trouvais ça assez cocasse
    Par contre je connais pas l'expression 'un peu fort de café...'

    Sinon, merci à Erwy, en fait j'utilise une boucle 'for' faite maison pour mes xsl que j'avais trouvée en passant par google.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    [xslt]pour changer une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:variable name="solde">
    		<xsl:value-of select="0"/>
    	</xsl:variable>
    	 <xsl:template match="*">
    	 <xsl:variable name="solde" select="$solde + 1" />
    	 <html>
    	 <h1>
    		<xsl:text>Solde:</xsl:text>
    		<xsl:value-of select="$solde" />
    	</h1>
    	</html>
    	 </xsl:template>
    ici j'incrémente la variable solde et je l'affiche après ...

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 545
    Points : 21 601
    Points
    21 601
    Par défaut
    Ce n'est pas vraiment ce qu'on veut dire par "changer une variable" . Il faut aussi que ça serve à quelque chose.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/03/2014, 22h54
  2. Comment modifier la valeur d'une variable?
    Par sebac dans le forum Langage
    Réponses: 4
    Dernier message: 18/06/2009, 01h39
  3. Comment modifier la valeur d'une variable Mysql.
    Par pcsystemd dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 19/09/2007, 09h22
  4. Réponses: 1
    Dernier message: 21/11/2005, 13h07
  5. Réponses: 2
    Dernier message: 16/08/2005, 10h43

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