Bonjour,
Débutant dans le xsl je voudrais savoir comment faire pour transformer mon fichier xml qui est assez longen fichier texte avec pour séparateur un pipe et d retour à la ligne pour une nouvelle entrer
Je vous remercie d'avance![]()
Bonjour,
Débutant dans le xsl je voudrais savoir comment faire pour transformer mon fichier xml qui est assez longen fichier texte avec pour séparateur un pipe et d retour à la ligne pour une nouvelle entrer
Je vous remercie d'avance![]()
En lisant des petits tutoriels sur XSLT, en essayant des choses et d'autres, et en venant nous montrer ce que tu obtiens, pour demander comment améliorer.
j'ai pu donc avancer sur mes recherches et j'ai pu créer mon xsl
monxsl.xsl
et voici mon 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 <?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:output method="text"/> <xsl:variable name="newLine" select="translate('
','','')"/> <xsl:template match="submits"> <xsl:value-of select="$newLine" /> <xsl:apply-templates select="*" /> </xsl:template> <xsl:template match="submit"> <!-- Recuperation des informations du fichier XML --> <xsl:variable name="submit-id" select="./submit-id" /> <xsl:variable name="submit-date" select="./submit-date" /> <pre> <xsl:variable name="response" select="./response"/></pre> <!-- Generation du contenu --> <xsl:value-of select="$submit-id"/> <xsl:text>|</xsl:text> <xsl:value-of select="$submit-date"/> <xsl:text>|</xsl:text> <xsl:value-of select="$response"/> <xsl:text>¤¤</xsl:text> <!-- <xsl:value-of select="$newLine" />--> </xsl:template> </xsl:stylesheet>
Mon problème est que je n'arrive pas à afficher le contenu de mes réponses
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 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="formulaire_xsl.xsl"?> <submits> <submit> <submit-id>2</submit-id> <submit-date>15/02/12</submit-date> <submit-ip/> <questions> <question> <question-title><![CDATA[Raison Sociale ]]></question-title> <responses> <response><![CDATA[Test]]></response> </responses> </question> <question> <question-title><![CDATA[Votre société est une : ]]></question-title> <responses> <response><![CDATA[EF]]></response> </responses> </question> <question> <question-title><![CDATA[Forme Juridique entreprise française]]></question-title> <responses> <response><![CDATA[1200]]></response> </responses> </submit> </submits>
Je vous remercie d'avance
C'est normal car dans ton XSL tu considères que l'élément "response" est un fils de "submit", au même titre que "submit-id" ou "submit-date" or ce n'est pas du tout le cas dans ton XML :Tu vas devoir faire un <apply-templates select="descendant::response"/> ou bien un <xsl:for-each select="descendant::response"> pour parcourir tous les éléments response.
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 <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="formulaire_xsl.xsl"?> <submits> <submit> <submit-id>2</submit-id> <submit-date>15/02/12</submit-date> <submit-ip /> <questions> <question> <question-title><![CDATA[Raison Sociale ]]></question-title> <responses> <response><![CDATA[Test]]></response> </responses> </question> <question> <question-title><![CDATA[Votre société est une : ]]></question-title> <responses> <response><![CDATA[EF]]></response> </responses> </question> <question> <question-title><![CDATA[Forme Juridique entreprise française]]></question-title> <responses> <response><![CDATA[1200]]></response> </responses> </question> </questions> </submit> </submits>
Merci pour ta réponse elle m'a permis de bien avancée
donc j'ai refait mon code
Maintenant mon problème c'est que cela m'affiche d'abord tous les submit-id puis les submit-date et ensuite toutes les réponses, alors que moi je voudrais avoir submit-id| submit-date| responses | retour à la ligne submit-id| submit-date| responses | retour à la ligne
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 <?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" media-type="text/html; charset=ISO-8859-1"/> <xsl:template match="/"> <html> <head> <title>xsl </title> </head> <body> <xsl:for-each select="/form/submits/submit"> <xsl:text>|</xsl:text> <xsl:value-of select="submit-id"/> <xsl:text>|</xsl:text> <xsl:value-of select="submit-date"/> <xsl:text>|</xsl:text> </xsl:for-each> <xsl:for-each select="/form/submits/submit/questions/question"> <xsl:text>|</xsl:text> <xsl:value-of select="responses"/> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
submit-id| submit-date| responses | etc etc...
Je vous remercie d'avance
ah c'est bon j'ai trouvé
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:output method="html" media-type="text/html; charset=ISO-8859-1"/> <xsl:template match="/"> <html> <head> <title> </title> </head> <body> <xsl:for-each select="/form/submits/submit"> <xsl:text>|</xsl:text> <xsl:value-of select="submit-date"/> <xsl:text>|</xsl:text> <xsl:value-of select="submit-id"/> <xsl:text>|</xsl:text> <xsl:for-each select="/form/submits/submit/questions/question"> <xsl:text>|</xsl:text> <xsl:value-of select="responses"/> </xsl:for-each> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
Partager