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 :

Afficher valeur d'une balise avec condition


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 25
    Points
    25
    Par défaut Afficher valeur d'une balise avec condition
    Bonjour,
    J'ai un simple fichier xsl qui afficher la valeur d'une balise d'un fichier xml. la source xsl est la suivante :
    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="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:template match="/">
    <xsl:variable name="var1">
    Greatest Hits
    </xsl:variable>
      <html>
      <body>
        <h1>Music Collection:</h1>
        <table border="1">
          <tr bgcolor="#9acd32">
            <th>Title</th>
            <th>Artist</th>
          </tr>
          <tr>
            <td><xsl:value-of select="catalog/cd [title=$var1]/artist" /></td>
            <td>    </td>
          </tr>
        </table> 
      </body>
      </html>
    </xsl:template>
     
    </xsl:stylesheet>
    le fichier xml est le suivant :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <catalog>
    	<cd>
    		<title>Empire Burlesque</title>
    		<artist>Bob Dylan</artist>
    		<country>USA</country>
    		<company>Columbia</company>
    		<price>10.90</price>
    		<year>1985</year>
    	</cd>
    	<cd>
    		<title>Greatest Hits</title>
    		<artist>Dolly Parton</artist>
    		<country>USA</country>
    		<company>RCA</company>
    		<price>9.90</price>
    		<year>1982</year>
    	</cd>
     
    </catalog>
    je veux afficher la valeur de "artist". Avec cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <td><xsl:value-of select="catalog/cd [title='Greatest Hits']/artist" /></td>
    , je peux avoir le résultat.
    Si je change la valeur 'Greatest Hits' par le nom de la variable.. j'ai un résultat vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="catalog/cd [title='$var1']/artist" />
    Merci pour votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    Tu dois mettre ton contenu de variable dans un attribut "select" encadré avec des quotes.
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Merci pour votre réponse. Mais je l'ai déjà essayé et ça marche toujours pas.
    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:template match="/">
    <xsl:variable name="var1" select="Greatest Hits"/>
     
     
      <html>
      <body>
        <h1>Music Collection:</h1>
        <table border="1">
          <tr bgcolor="#9acd32">
            <th>Title</th>
            <th>Artist</th>
          </tr>
          <tr>
            <td><xsl:value-of select="catalog/cd [title='$var1']/artist"/></td>
            <td>    </td>
          </tr>
        </table> 
      </body>
      </html>
    </xsl:template>
    </xsl:stylesheet>

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Citation Envoyé par caballo Voir le message
    Tu dois mettre ton contenu de variable dans un attribut "select" encadré avec des quotes.
    Pas spécialement. On peut mettre du contenu littéral directement entre balises <xsl:variable> au lieu de faire un select. Les whitespaces sont normalisés, donc ça devrait marcher. Edit: ah tiens non, les whitespaces ne sont pas normalisés. Du coup il ne faut pas en mettre.

    Par contre, une référence de variable ne doit pas être entre quotes : '$var1' ça ne va pas, il faut que ce soit $var1 .

    Citation Envoyé par mejdi.mohamed Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="var1" select="Greatest Hits"/>
    Ça non plus ça ne va pas. Écrit comme ça, Greatest et Hits sont censés être des noms de balises à sélectionner, et la syntaxe est donc incorrecte.
    Il faut que ce soit <xsl:variable name="var1" select="'Greatest Hits'"/> pour que 'Greatest Hits' soit considéré comme une string.

    Mais bon, donc coup, moi je préfère <xsl:variable name="var1">Greatest Hits</xsl:variable>, c'est plus simple.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    non tu n'as pas compris :

    "entre quote" ce n'est pas entre "double quote" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="var1" select="'Greatest Hits'"/>
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Merci caballo! ça fonctionne maintenant.
    thelvin, J'ai déjà essayé de mettre la valeur entre balises <xsl:variable> et ça marche pas! par contre tu as raison concernant $var1, elle doit pas être entre ''.
    Merci !
    voilà le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="var1" select="'Greatest Hits'"/>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><xsl:value-of select="catalog/cd [title=$var1]/artist"/></td>




    Citation Envoyé par caballo Voir le message
    non tu n'as pas compris :

    "entre quote" ce n'est pas entre "double quote" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="var1" select="'Greatest Hits'"/>

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par mejdi.mohamed Voir le message
    thelvin, J'ai déjà essayé de mettre la valeur entre balises <xsl:variable> et ça marche pas!
    Si, mais il faut que ce soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="var1">Greatest Hits</xsl:variable>
    et non pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:variable name="var1">
    Greatest Hits
    </xsl:variable>
    Pas de whitespace.
    Contrairement à ce que j'avais dit plus haut, les whitespaces ne sont pas ignorés, il faut donc faire attention à ne pas en mettre. Mais ça reste bien plus clair qu'avec un select.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Oui, ça marche aussi!
    Merci thelvin

    Citation Envoyé par thelvin Voir le message
    Si, mais il faut que ce soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="var1">Greatest Hits</xsl:variable>
    et non pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:variable name="var1">
    Greatest Hits
    </xsl:variable>
    Pas de whitespace.
    Contrairement à ce que j'avais dit plus haut, les whitespaces ne sont pas ignorés, il faut donc faire attention à ne pas en mettre. Mais ça reste bien plus clair qu'avec un select.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/09/2012, 20h29
  2. Réponses: 1
    Dernier message: 14/08/2009, 12h19
  3. Modifier la valeur d'une balise avec getElementById
    Par cooldid dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 14/01/2008, 12h08
  4. Réponses: 3
    Dernier message: 20/07/2007, 11h33
  5. Selectionner une balise avec un attribut ayant deux valeur
    Par lemok dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/05/2007, 17h25

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