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 :

Comment afficher des éléments de même nom en 1 seule fois


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 58
    Points
    58
    Par défaut Comment afficher des éléments de même nom en 1 seule fois
    Bonjour tout le monde,

    j'aimerais grâce au XSLT afficher en une seule fois tout les éléments concernant une balise et juste après concernant une autre balise mais je ne sais pas comment faire.

    Exemple :

    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
    <quizz>
    <question>
            <image>Quiz_1_image/1.jpg</image>
            <intitule>""</intitule>
            <intitule2>""</intitule2>
            <reponse>Je passe</reponse>
            <reponse2>Je cède le passage</reponse2>
    </question>
    <question>
            <image>Quiz_1_image/2jpg</image>
            <intitule>Ce panneau annonce un débouché de cyclistes :</intitule>
            <intitule2>Venant de droite</intitule2>
            <reponse>Oui</reponse>
            <reponse2>Non</reponse2>
    </question>
    </quizz>
    et j'aimerais que sa m'affiche quelque chose comme ca :

    Quiz_1_image/1.jpg, Quiz_1_image/2jpg
    "", Ce panneau annonce un débouché de cyclistes :
    "", Venant de droite
    Je passe, Oui
    Je cède le passage, Non
    Merci par avance de votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 58
    Points
    58
    Par défaut
    Je suis complètement bloquer, je ne vois vraiment pas comment faire mon traitement.

    J'ai vraiment besoin de votre aide.

    Merci par avance.

  3. #3
    Membre confirmé Avatar de Perceval
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2003
    Messages : 355
    Points : 464
    Points
    464
    Par défaut
    Je pense que ton fichier XML est mal conçu....
    Le 2ème question... devrait être plutot renomé en réponse.

    De cette manière, ca te permettra d'avoir la mise en page que tu souhaites
    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
    <quizz>
    <question>
            <image>Quiz_1_image/1.jpg</image>
            <intitule>""</intitule>
            <intitule2>""</intitule2>
            <reponse>Je passe</reponse>
            <reponse2>Je cède le passage</reponse2>
    </question>
    <reponse>
            <image>Quiz_1_image/2jpg</image>
            <intitule>Ce panneau annonce un débouché de cyclistes :</intitule>
            <intitule2>Venant de droite</intitule2>
            <reponse>Oui</reponse>
            <reponse2>Non</reponse2>
    </reponse>
    </quizz>
    Ce qui te donne dans le XSL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:for-each select="quizz">
     <xsl:value-of select="question/image" />, <xsl:value-of select="reponse/image" />
     ...
    </xsl:for-each>
    Le fait de nommer différement la partie question et réponse te permettra d'y voir plus clair.
    Save a tree... Eat a beaver

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 58
    Points
    58
    Par défaut
    Je te remercie pour ta réponse. Mais je n'ai le problème c que je n'ai mis qu'une partie de ma feuille XML. En faite celle-ci contient 10 questions différente et moi j'aimerais pouvoir garder ma structure.

    Est-il possible d'utiliser des variables pour stocker mes différentes informations comme je le souhaite.

    Merci par avance de votre aide.

  5. #5
    Membre confirmé Avatar de Perceval
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2003
    Messages : 355
    Points : 464
    Points
    464
    Par défaut
    Oui, c'est ce que j'ai vu.... c'est pour ca que j'ai changé ce que j'ai écrit J'avais mal lu ton post.

    Essayes avec le nouveau bout de code que je t'ai filé...
    Save a tree... Eat a beaver

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 58
    Points
    58
    Par défaut
    Oki mais entre temps j'ai modifier mon dernier post :

    Je te remercie pour ta réponse. Mais je n'ai le problème c que je n'ai mis qu'une partie de ma feuille XML. En faite celle-ci contient 10 questions différente et moi j'aimerais pouvoir garder ma structure.

    Est-il possible d'utiliser des variables pour stocker mes différentes informations comme je le souhaite.

    Merci par avance de votre aide.

  7. #7
    Membre confirmé Avatar de Perceval
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2003
    Messages : 355
    Points : 464
    Points
    464
    Par défaut
    Et en essayant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:for-each select="quizz">
     <xsl:value-of select="question[position()=1]/image" />, <xsl:value-of select="question[position()=2]/image" />
     ...
    </xsl:for-each>
    Je ne suis pas bien sûr de l'utilisation de "position()"
    Save a tree... Eat a beaver

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 58
    Points
    58
    Par défaut
    J'ai un souci ca ne m'affiche pas mes éléments passez par xsl:value-of et je ne sais pas du tout d'où ca vient.

    Je vous donne le code de ma feuille 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="../coderoute/essai.xsl"?>
    <quizz>
    <question>
               <image>Quiz_1_image/1.jpg</image>
               <intitule>""</intitule>
               <intitule2>""</intitule2>
               <reponse>Je passe</reponse>
               <reponse2>Je cède le passage au piéton</reponse2>
               <intitule_3></intitule_3>
               <reponse3></reponse3>
               <reponse4></reponse4>
               <reponse_juste>2</reponse_juste>
    </question>
    <question>
               <image>Quiz_1_image/2.jpg</image>
               <intitule>Ce panneau annonce un débouché de cyclistes :</intitule>
               <intitule2>Venant de droite</intitule2>
               <reponse1>Oui</reponse1>
               <reponse2>Non</reponse2>
               <intitule3>Venant de gauche</intitule3>
               <reponse3>Oui</reponse3>
               <reponse4>Non</reponse4>
               <reponse_juste>1, 3</reponse_juste>
    </question>
    <question>
               <image>Quiz_1_image/3.jpg</image>
               <intitule>Pour utiliser mon téléphone portable :</intitule>
               <intitule2>Je m'arrête sur la voie de droite</intitule2>
               <reponse1>Oui</reponse1>
               <reponse2>Non</reponse2>
               <intitule3>Je m'arrête sur l'air des Corbières</intitule3>
               <reponse3>Oui</reponse3>
               <reponse4>Oui</reponse4>
               <reponse_juste>2, 3</reponse_juste>
    </question>
    </quizz>
    Et voici le code XSL correspondant :

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output
      method="html"
      encoding="ISO-8859-1"
      doctype-public="-//W3C//DTD HTML 4.01//EN"
      doctype-system="http://www.w3.org/TR/html4/strict.dtd"
      indent="yes" />
     
    <xsl:template match="quizz">
                  <html><body>
                  <p><font size="4" color="red">Code à mettre à la place de </font></p>
                  <xsl:text>$question = array("image"=>array("</xsl:text>
                  <xsl:apply-templates select="quizz" />
                  </body></html>
     
                  <xsl:for-each select="quizz">
                                <xsl:value-of select="question[position()=1]/image"/>, <xsl:value-of select="question[position()=2]/image" />
                  </xsl:for-each>
    </xsl:template>
     
    </xsl:stylesheet>
    Merci par avance de votre aide.

  9. #9
    Membre confirmé Avatar de Perceval
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Mars 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2003
    Messages : 355
    Points : 464
    Points
    464
    Par défaut
    Tu as mis le tag résolu..... si tu as réussi, peux tu mettre la solution que tu as trouvé dans le cas où quelqu'un se retrouve dans la même impasse que toi.

    Merci
    Save a tree... Eat a beaver

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 106
    Points : 58
    Points
    58
    Par défaut
    Voici la solution que j'ai mis en oeuvre mais je pense qu'il y a plus simple :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output
      method="html"
      encoding="ISO-8859-1"
      doctype-public="-//W3C//DTD HTML 4.01//EN"
      doctype-system="http://www.w3.org/TR/html4/strict.dtd"
      indent="yes" />
     
    <xsl:template match="quizz">
                  <html><body>
                  <p><font size="4" color="red">Code à mettre à la place de </font></p>
                  <xsl:text>$question = array("image"=>array("</xsl:text>
                  <xsl:apply-templates select="question" />
                	<xsl:apply-templates select="question/intitule" />
                  </body></html>
     
    </xsl:template>
     
    <xsl:template match="question">
    	<xsl:choose>
    		<xsl:when test="position() = 10">
    			<xsl:value-of select="image"/>
    			<xsl:text>"),</xsl:text>
    			<br/><xsl:text>"intitule"=>array("</xsl:text>
     
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:value-of select="image"/>
    			<xsl:text>","</xsl:text>
    		</xsl:otherwise>
    	</xsl:choose>
     
    </xsl:template>
     
    <xsl:template match="question/intitule">
    	<xsl:choose>
    		<xsl:when test="position() = 10">
    			<xsl:value-of select="."/>
    			<xsl:text>"),</xsl:text>
    			<br/><xsl:text>"intitule2"=>array("</xsl:text>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:value-of select="."/>
    			<xsl:text>","</xsl:text>
    		</xsl:otherwise>
    	</xsl:choose>
     
    </xsl:template>
     
    </xsl:stylesheet>

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/05/2010, 17h45
  2. [XSD] Comment gérer plusieurs éléments du même nom ?
    Par AnnSo1109 dans le forum Valider
    Réponses: 3
    Dernier message: 28/10/2009, 16h01
  3. [MySQL] Comment afficher des éléments dans une liste déroulante tout en dissimulant un ?
    Par lou87 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/04/2009, 16h45

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