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 :

Est-il possible d'accéder à un élément grâce à sa position ?


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 Est-il possible d'accéder à un élément grâce à sa position ?
    Bonjour tout le monde,

    J'aimerais savoir si c possible d'accéder à un élément de mon arbre XML par sa position en utilisation la fonction XPATH position().

    Merci par avance de votre aide.

  2. #2
    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 faisable
    Save a tree... Eat a beaver

  3. #3
    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
    Mais comment, c bien ca mon pb. Je ne vois pas du tout comment faire.

  4. #4
    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
    Save a tree... Eat a beaver

  5. #5
    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 mis ca mais ca ne marches pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="question.childNodes[5]"/>
    Je ne vois pas du tout comment ca marche la DOM.

  6. #6
    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
    Pourrais tu détailler ce que tu cherches à faire et montrer un bout de code et la partie que tu aimerais "extraire".
    Save a tree... Eat a beaver

  7. #7
    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
    En faite je voudrais extraire un élément qui se trouve dans mon arbre XML grâce à sa position. Mais je ne sais pas du tout comment faire.

    Voici 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 mon code 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
    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>
    Et moi j'aimerais pouvoir afficher l'élément correspondant à la balise <intitule3>

  8. #8
    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 ne sais pas si c'est ce que tu veux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template select="quizz">
     <xsl:for-each select="question">
      <xsl:value-of select="intitule3"/><br />
     </xsl:for-each>
    </xsl:template>
    Ce bout de code va te permettre d'afficher à la suite le contenu des balises <intitule3>
    Save a tree... Eat a beaver

  9. #9
    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
    En faite moi j'aimerais afficher en même temps la balise <intitule1> et la balise <intitule2> mais apart des autres qui sont déjà affiché. Ton code ne me permet pas de faire ca.

    Et quand je met <xsl:value-of select="intitule3"/> ca ne m'affiche rien du tout.

  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
    J'ai vraiment besoin de votre aide pour résoudre mon pb. j'ai fait pas mal de test mais en vain pour trouver la solution.

    Je vous remercie par avance.

  11. #11
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    mets un exemple de ce que tu veux effectivement avoir en sortie, ce sera plus parlant.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  12. #12
    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
    Voila ce que j'aimerais comme résultat concernant uniquement les balises <intitule2> et <intitule3>

    exemple 1 :

    "", ""
    exemple 2 :

    "Venant de droite", "Venant de gauche"
    exemple 3 :

    "Je m'arrête sur la voie de droite", "Je m'arrête sur l'air des Corbières
    et ainsi de suite jusqu'à la fin de ma feuille XML.

    Merci par avance de votre aide.

  13. #13
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    tu peux faire ça :

    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="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:template match="/">	
    	<xsl:for-each select="/quizz/question">
    		<xsl:value-of select="intitule2"/>,<xsl:value-of select="intitule3"/>
    	</xsl:for-each>	
    	</xsl:template>
     
    </xsl:stylesheet>
    par contre il te faudrait rajouter un saut de ligne (je sais pas comment on fait) sinon t as tout sur la même ligne.
    ++

  14. #14
    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 ton aide mais j'ai un pb avec ton code, celui-ci s'exécute en faisant abtraction du code que j'avais préalablement saisi :

    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
    53
    54
    55
    56
    57
    58
    <?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:template match="/">
            <xsl:for-each select="/quizz/question">
                    <xsl:value-of select="intitule2"/>
                    <xsl:value-of select="intitule3"/>
            </xsl:for-each>
    </xsl:template>
    </xsl:stylesheet>
    Merci par avance de votre aide.

  15. #15
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    Citation Envoyé par magic8392

    exemple 1 :

    "", ""
    exemple 2 :

    "Venant de droite", "Venant de gauche"
    exemple 3 :

    "Je m'arrête sur la voie de droite", "Je m'arrête sur l'air des Corbières
    Tu veux le mettre ou ca par rapport au résultat du code que tu as dejà fait ?

  16. #16
    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'aimerais pouvoir le mettre à la suite de mon code. A la fin.

  17. #17
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    un truc comme ça, ça va ?

    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
    53
    54
    55
    56
    57
    58
     
    <?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" />
                   <xsl:apply-templates select="/quizz/question" /> 
                  </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:template match="/quizz/question"> 
                    <xsl:value-of select="intitule2"/> 
                    <xsl:value-of select="intitule3"/> 
       </xsl:template> 
    </xsl:stylesheet>

  18. #18
    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'avais déjà essayer comme ceci mais le pb c quand je l'exécute, à la ligne correspondant à <xsl:apply-templates select="question" /> il va directement au template correspondant à : <xsl:template match=/quizz/question">.

    Je ne vois pas du tout pourquoi.

  19. #19
    Membre habitué Avatar de Hoegaarden
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    362
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 362
    Points : 175
    Points
    175
    Par défaut
    Tu aimerais avoir quoi exactement en sortie ?
    Peux tu nous donner un exemple complet ?

  20. #20
    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 qu'il faut se référer à son ancien post => http://www.developpez.net/forums/viewtopic.php?t=399716
    Save a tree... Eat a beaver

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/10/2009, 17h44
  2. Réponses: 7
    Dernier message: 29/01/2009, 13h52
  3. Réponses: 17
    Dernier message: 09/06/2008, 17h02
  4. Est-il possible de retourner au premier élément ?
    Par magic8392 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/09/2005, 14h15
  5. Réponses: 4
    Dernier message: 16/04/2005, 16h54

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