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.
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.
oui, c'est faisable
Save a tree... Eat a beaver
Mais comment, c bien ca mon pb. Je ne vois pas du tout comment faire.
essayes en passant par le DOM => http://gilles.chagnon.free.fr/cours/...l#accesenfants
Save a tree... Eat a beaver
J'ai mis ca mais ca ne marches pas :
Je ne vois pas du tout comment ca marche la DOM.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:value-of select="question.childNodes[5]"/>
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
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 :
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 <?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 moi j'aimerais pouvoir afficher l'élément correspondant à la balise <intitule3>
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>
Je ne sais pas si c'est ce que tu veux faire
Ce bout de code va te permettre d'afficher à la suite le contenu des balises <intitule3>
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>
Save a tree... Eat a beaver
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.
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.
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
Voila ce que j'aimerais comme résultat concernant uniquement les balises <intitule2> et <intitule3>
exemple 1 :
exemple 2 :"", ""
exemple 3 :"Venant de droite", "Venant de gauche"
et ainsi de suite jusqu'à la fin de ma feuille XML."Je m'arrête sur la voie de droite", "Je m'arrête sur l'air des Corbières
Merci par avance de votre aide.
tu peux faire ça :
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.
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>
++
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 :
Merci par avance de votre aide.
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>
Tu veux le mettre ou ca par rapport au résultat du code que tu as dejà fait ?Envoyé par magic8392
J'aimerais pouvoir le mettre à la suite de mon code. A la fin.
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>
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.
Tu aimerais avoir quoi exactement en sortie ?
Peux tu nous donner un exemple complet ?
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager