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 :

[XSLT] Portée de variables dans un switch


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut [XSLT] Portée de variables dans un switch
    Bonjour à tous,

    Je souhaites générer la class des liens de mon menu via xslt.

    Mais ne criez pas, j'ai bien compris que la portée des variables est locale au noeud où elles ont été déclarées.

    Mon problème qui n'en est pas vraiment un, plus un souci d'organisation, optimisation, pour éviter les répétitions de mon code.

    Mon code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <ul id="liste_categorie">
    	<xsl:variable name="categorie" select="col2/liste_article/@categorie" />
     
    	<xsl:for-each select="col1/liste_categorie/categorie">
     
    		<xsl:choose>
    			<xsl:when test="$categorie = @id">
    				<xsl:variable name="class_menu" select="string('actif')" />
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:variable name="class_menu" select="string('normal')" />
    				<xsl:value-of select="$class_menu" />
    			</xsl:otherwise>
    		</xsl:choose>
    		<li>
    			<a href="?cid={@id}&amp;categorie={@rewrite}" class="{$class_menu}">
    				<xsl:value-of select="self::categorie" />
    			</a>
    			<!-- <span>(<xsl:value-of select="@nb" />)</span> -->
    		</li>
     
    	</xsl:for-each>
    </ul>
    Là, en l'état j'ai bien entendu une erreur comme quoi $class_menu est null.

    Y'a t-il un moyen de faire sans répéter dans chaque condition du switch ma balise a ?

  2. #2
    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
    pas sûr d'avoir tout compris

    mais c'est un des cas ou l'on utilise cette forme d'écriture

    <xsl:variable name="class_menu">
    <xsl:choose>
    <xsl:when test="$categorie = @id">actif</xsl:when> <xsl:otherwise>normal</xsl:otherwise>
    </xsl:choose>
    </xsl:variable>

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Ah, je ne savais pas que l'on pouvait mettre la condition dans la déclaration de la variable, je n'aurais vraiment pas pensé à le faire.

    Et en effet, ça fonctionne comme ce que je voulais, tu avais bien compris.

    Merci

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

Discussions similaires

  1. [xslt] Portée de variable
    Par mc_sid dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 12/03/2009, 18h07
  2. :: Portée de variables dans une boucle ::
    Par lemilig dans le forum Flash
    Réponses: 5
    Dernier message: 12/06/2007, 15h20
  3. Porté de variable dans un try except
    Par japey dans le forum Général Python
    Réponses: 4
    Dernier message: 23/05/2007, 12h55
  4. [XSLT] Problème de variable dans un test
    Par san julio dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 30/01/2007, 16h56
  5. Portée de variable dans différents projets
    Par beb30 dans le forum MFC
    Réponses: 5
    Dernier message: 03/07/2006, 14h31

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