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] récuperation d'une variable


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut [XSLT] récuperation d'une variable
    Bonjour à tous,

    J'essaie par un XSL de récupérer une variable pour afficher certains mots dans la couleur correspondante (pas compris? je comprends. Une exemple vaudrait mieux)

    exemple, extrait de mon XML:
    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
    24
    25
    <?xml version="1.0" encoding="utf-8"?>
     
    <?xml-stylesheet type="text/xsl" href="foret.xsl"?>
    <root xmlns:xi="http://www.w3.org/2001/XInclude">
      <foret hemisphere="nord">
        <fleur>
          <bleu hexa="#00F">
            	<nom>myosotis</nom>
            	<nom>pensee</nom>
          </bleu>
          <vert hexa="#0F0">
            	<nom>belladone</nom>
            	<nom>bryone</nom>
          </vert>
          <rouge hexa="#F00">
          	<nom>coquelicot</nom>
           	<nom>pavot</nom>
          </rouge>
          <jaune hexa="#FF0">
            	<nom>pissenlit</nom>
            	<nom>moutarde des champs</nom>
          </jaune>
        </fleur>
      </foret>
    </root>
    Je m'en suis sortie en faisant ça:
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:template match="/">
    		<html>
    		<title>Les Fôrets</title>
    			<body>
    			<xsl:apply-templates/>
    			</body>
    		</html>
    	</xsl:template>
     
    	<xsl:template match="root/foret">
    	Les fleurs sont de différentes couleurs:
     
    				<ul>
    				<xsl:for-each select="//fleur/*">
    				<xsl:sort select="name(.)"/>
    				<xsl:if test="./@hexa='#00F'">
    					<li><span style="color:#00F;"><xsl:value-of select="name(.)"/></span></li>
    				</xsl:if>
    				<xsl:if test="./@hexa='#0F0'">
    					<li><span style="color:#0F0;"><xsl:value-of select="name(.)"/></span></li>
    				</xsl:if>
    				<xsl:if test="./@hexa='#F00'">
    					<li><span style="color:#F00;"><xsl:value-of select="name(.)"/></span></li>
    				</xsl:if>
    				<xsl:if test="./@hexa='#FF0'">
    					<li><span style="color:#FF0;"><xsl:value-of select="name(.)"/></span></li>
    				</xsl:if>
    				</xsl:for-each>
    				</ul>
     
    	</xsl:template>
     
    </xsl:stylesheet>
    Très peu commode, vous en conviendrez
    Alors j'ai essayé ça:
    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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:template match="/">
    		<html>
    		<title>Les Fôrets</title>
    			<body>
    			<xsl:apply-templates/>
    			</body>
    		</html>
    	</xsl:template>
     
    	<!--déclarations de variables-->
    	<xsl:variable name="col_hexad" select="//fleur/*/@hexa"/>
    	</xsl:variable>
    <xsl:template match="root/foret">
    <ul>
    <xsl:for-each select="//fleur/*">						<xsl:sort select="name(.)"/>
    									<li><span style="color:'$col_hexad';"><xsl:value-of select="name(.)"/></span></li>
    </xsl:for-each>
    </ul>
    </xsl:template>
    </xsl:stylesheet>
    Evidemment, je dois me planter quelque part.
    Merci pour vos lumières,

    V.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Trop compliqué à lire pour moi.
    Refais ton indentation, et enlève le code qui n'a rien à voir tant qu'à faire. (Ou attends quelqu'un de plus patient que moi.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Tu as raison, c'est pas facile à comprendre (ni à expliquer).
    J'vais essayer de simplifier ;-)

    Dans mon XML, j'ai des balises pour des fleurs (des vertes, des rouges, des bleues et jaunes...). Je voudrais que, via le XSL, les noms de ces fleurs s'affichent dans la couleur correspondante dans le fichier de sortie.
    Pour ce faire, j'ai pour chaque élèment <fleur> un attribut "@hexa" avec la valeur hexadécimal de la couleur.

    ça marche avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:if test="./@hexa='#F00'">
    <li><span style="color:#F00;"><xsl:value-of select="name(.)"/></span></li>
    </xsl:if>
     
    etc... pour chaque nom de fleur
    Mais j'aurais voulu le faire avec une variable qui reprendrait automatiquement la valeur de mon attribut "@hexa":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <!--déclarations de variables-->
    <xsl:variable name="col_hexad" select="//fleur/*/@hexa"/>
    </xsl:variable>
    (...reste du XML...)
    <xsl:sort select="name(.)"/>
    <li><span style="color:'$col_hexad';">
    <xsl:value-of select="name(.)"/></span>
    </li>
    J'espère que c'est plus claire.
    Merci bcp!

    V.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Hello,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:for-each select="//fleur/*">
    	<xsl:sort select="name(.)"/>
    		<li><span style="color:{./@hexa};"><xsl:value-of select="name(.)"/></span></li>
    Si tu veux le faire via une une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:for-each select="//fleur/*">
    	<xsl:sort select="name(.)"/>
    		<xsl:variable name="color" select="./@hexa"/>
    		<li><span style="color:{$color};"><xsl:value-of select="name(.)"/></span></li>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Un tout grand merci, Morbo.

    Déso de répondre si tard (vacances, malade, crash PC...)
    En tous cas encore merci!!!!

    V.

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

Discussions similaires

  1. [Fonction]récuperer dans une variable le résultat d'une requete
    Par nejisama8 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 28/04/2007, 12h34
  2. [XSLT] Incrémentation d'une variable
    Par Oberown dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/10/2006, 18h03
  3. récuperation d'une variable javascript en asp
    Par michelle1000 dans le forum ASP
    Réponses: 18
    Dernier message: 27/09/2006, 13h32
  4. [XSLT] Création d'une variable global tableau
    Par mbodjisa dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/09/2006, 09h50
  5. Réponses: 11
    Dernier message: 11/03/2005, 17h41

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