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] Variable par défaut ou non dans un 'IF'


Sujet :

XSL/XSLT/XPATH XML

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut [XSLT] Variable par défaut ou non dans un 'IF'
    Bonjour à tous,

    Mon problème est le suivant: Dans mon xml, j'ai certaines balises qui peuvent être vides
    exemple: <guiBGCOLOR></guiBGCOLOR>

    Ainsi, dans ma feuille XSL, ma variable fillColor doit prendre la valeur présente dans mon xml si elle est non vide ou une valeur définie par défaut dans autre feuille xsl importée. Comment faire cela ?

    Le principal problème c'est que je définis une variable à l'intérieur de l'instruction conditionnelle (xsl:if ou xsl:choose) et que lorsque je l'utilise dans la suite, forcément ça ne fonctionne pas (Invalid variable reference)...

    HELP !

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    montre nous un petit bout de code que tu as déjà essayé

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Exemple de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		<xsl:variable name="fillColorD">yellow</xsl:variable> <!-- Valeur par défaut -->
    		<xsl:choose>
    			<xsl:when test="guiBGCOLOR != Empty"><xsl:variable name="fillColor"><xsl:value-of select="guiBGCOLOR"/></xsl:variable></xsl:when>
    			<xsl:otherwise><xsl:variable name="fillColor"><xsl:value-of select="fillColorD"/></xsl:variable></xsl:otherwise>
    		</xsl:choose>
    Voilà, à partir de la se posent 2 problèmes:
    1 - La variable est déclarée dans le 'choose' donc je ne peux pas la réutiliser après
    2 - Le test pour savoir si la balise est vide est l'une des 3 solutions ci-dessous (j'ignore laquelle):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	- guiBGCOLOR = Empty
    	- string (guiBGCOLOR) = Empty
    	- string (guiBGCOLOR) = ""

  4. #4
    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
    J'ai rien sous la main pour tester, mais il me semble qu'il suffit de mettre ton "if" à l'interieur de ton bloc "xsl:variable" (ta variable ne contiendra de toute façon que ce que tu mets dans ton arbre de sortie).
    Un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          <xsl:variable name="fillColorD">
          <xsl:choose> 
             <xsl:when test="guiBGCOLOR != Empty"><xsl:value-of select="guiBGCOLOR"/></xsl:when> 
             <xsl:otherwise><xsl:value-of select="fillColorD"/></xsl:otherwise> 
          </xsl:choose>
    </xsl:variable>
    Désolé d'avance, si c'est pas ça...

    Phil

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 442
    Points : 475
    Points
    475
    Par défaut
    Fantastique ! Merci philemon ! Je m'en veux de pas y avoir pensé...

    Voilà la solution exacte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<xsl:variable name="fillColor">
    			<xsl:choose>
    				<xsl:when test='guiBGCOLOR = ""'><xsl:value-of select="$fillColorD"/></xsl:when>
    				<xsl:otherwise><xsl:value-of select="guiBGCOLOR"/></xsl:otherwise>
    			</xsl:choose>		
    		</xsl:variable>
    où 'guiBGCOLOR' est une balise vide ou non
    et 'fillColorD' est une valeur par défaut.

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

Discussions similaires

  1. [XSLT] CDATA par défaut lors d'une transformation xsl
    Par thierry_b dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/12/2008, 13h57
  2. Réponses: 2
    Dernier message: 21/09/2008, 17h21
  3. Comment ajouter par défaut une valeur dans un champ?
    Par zouloute dans le forum Access
    Réponses: 2
    Dernier message: 04/03/2008, 07h53
  4. [XSLT] Règle par défaut
    Par pierrelm dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 19/04/2007, 11h50
  5. mettre par défaut un champ dans liste déroulante
    Par zouzou1010 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/05/2006, 14h12

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