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] afficher plusieurs éléments (boucles)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut [XSLT] afficher plusieurs éléments (boucles)
    Bonjour!

    Voici ma DTD:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="iso-8859-1" ?> 
    <!ELEMENT test (ingrédients)> 
    <!ELEMENT ingrédients (ingrédient)+> 
    <!ELEMENT ingrédient (Sucre | Lait | Farine)> 
    <!ELEMENT Sucre EMPTY> 
    <!ELEMENT Lait EMPTY> 
    <!ELEMENT Farine EMPTY>

    Voici mon fichier 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
     
    <?xml version="1.0" encoding="iso-8859-1" ?> 
    <!DOCTYPE test SYSTEM "test.dtd"> 
    <?xml-stylesheet type="text/xsl" href="test.xsl" ?> 
    <test> 
    <ingrédients> 
    <ingrédient> 
    <Farine/> 
    </ingrédient> 
    <ingrédient> 
    <Sucre/> 
    </ingrédient> 
    </ingrédients> 
    </test>

    Voici mon fichier XSL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="iso-8859-1"?> 
    <!DOCTYPE test SYSTEM "test.dtd"> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <HTML> 
    <HEAD> </HEAD> 
    <BODY> Ingrédient(s) : <xsl:value-of select="name(//test/ingrédients/ingrédient/*)"/> 
    </BODY> 
    </HTML> 
    </xsl:template> 
    </xsl:stylesheet>


    Mon problème est que, dans le fichier final, seul le premier ingrédient (Farine) est affiché.

    Comment faire pour que les 2 soient affichés?

    Merci :-)

  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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Merci pour la réponse... Hélas, j'ai tout essayé et ça fonctionne pas.

    Je te mets mes codes plus complets:


    Ma super DTD de la mort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="iso-8859-1" ?>
    <!ELEMENT test (auteur, calories, ingrédients)>
    <!ELEMENT auteur (#PCDATA)>
    <!ELEMENT calories (#PCDATA)>
    <!ELEMENT ingrédients (ingrédient)+>
    <!ELEMENT ingrédient (Sucre | Lait | Farine)>
    <!ELEMENT Sucre EMPTY>
    <!ELEMENT Lait EMPTY>
    <!ELEMENT Farine EMPTY>
    Mon mirobolant fichier 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
     
    <?xml version="1.0" encoding="iso-8859-1" ?>
    <!DOCTYPE test SYSTEM "test.dtd">
    <?xml-stylesheet type="text/xsl" href="test.xsl" ?>
    <test>
        <auteur>Maman Dion</auteur>
        <calories>6799</calories>
        <ingrédients>
            <ingrédient>
                <Farine/>
            </ingrédient>
            <ingrédient>
                <Sucre/>
            </ingrédient>
        </ingrédients>
    </test>
    Mon incroyable XSLT:
    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="iso-8859-1"?>
    <!DOCTYPE test SYSTEM "test.dtd">
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="/">
            <HTML>
                <HEAD> </HEAD>
                <BODY>
                    <p> Auteur :<xsl:value-of select="test/auteur"/></p>
                    <p> Calories : <xsl:value-of select="test/calories"/>
                    </p>
                    <p> Ingrédient(s) :
                        <xsl:for-each select="//node()">
                    <xsl:value-of select="current()"/> 
                    </xsl:for-each>
                    </p>
                </BODY>
            </HTML>
        </xsl:template>
    </xsl:stylesheet>


    Au final maintenant, ça me donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Auteur :Maman Dion
     
    Calories : 6799
     
    Ingrédient(s) : type="text/xsl" href="test.xsl" Maman Dion 6799 Maman DionMaman Dion67996799
    J'ai tout essayé les autres combinaisons de codes XSLT et dans le meilleur des résultats, ça me renvoie que le 1er ingrédient...

    En temps normal, je me suiciderais, mais comme il fait super beau aujourd'hui, j'aimerais mieux trouver le code approprié!

    Tu as une idée?

    Merci!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    Bon, j'arrive au résultat voulu en utilisant ce code :
    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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE test SYSTEM "test.dtd">
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <HTML>
    <HEAD> </HEAD>
    <BODY>
    <p> Auteur :<xsl:value-of select="test/auteur"/></p>
    <p> Calories : <xsl:value-of select="test/calories"/></p>
    <p> Ingrédient(s) :
    <xsl:value-of select="name(test/ingrédients/ingrédient/*)"/>
    <br/>
    <xsl:value-of select="name(test/ingrédients/ingrédient[2]/*)"/></p>            </BODY>
            </HTML>
        </xsl:template>
    </xsl:stylesheet>


    C'est cabotin, mais j'ai rien trouvé d'autre!

  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
    :
    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="iso-8859-1"?>
    <!DOCTYPE test SYSTEM "test.dtd">
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="/">
            <HTML>
                <HEAD> </HEAD>
                <BODY>
                    <p> Auteur :<xsl:value-of select="test/auteur"/></p>
                    <p> Calories : <xsl:value-of select="test/calories"/>
                    </p>
                    <p> Ingrédient(s) :
                        <xsl:for-each select="test/ingrédients/ingrédient/*">
                    <xsl:value-of select="name()"/> 
                    </xsl:for-each>
                    </p>
                </BODY>
            </HTML>
        </xsl:template>
    </xsl:stylesheet>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    Ça marche!

    Merci!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2008, 00h05
  2. Réponses: 5
    Dernier message: 17/04/2008, 21h59
  3. [XSLT]Afficher plusieurs balises element dans une ligne avant de l'afficher
    Par ethan_decoster dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/10/2007, 15h19
  4. [XSLT] Afficher en XSLT un [élément]*
    Par rfcorriveau dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/02/2007, 17h53
  5. Réponses: 12
    Dernier message: 23/01/2007, 19h07

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