Bonjour,
Je me sers du XSLT pour convertir un XML en un autre XML et je n'arrive pas à faire certaines choses,
Voici quelques exemples :
1) je dois transformer du xml de la forme :
en xml de la forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <aa>12$13$14.5$15$</aa>
Mais comment itérer sur ma chaîne de caractères ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <aa> <b>12$</b> <b>13$</b> <b>14.5$</b> <b>15$</b> </aa>
Et comment la découper comme il faut ?
2) Je dois mettre une valeur mais qui dépend d'une autre :
Si j'ai ça :
dans le xml source
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <aa> <b>0</b> </aa>
Alors je dois mettre ça :
dans le xml de sortie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <aa name="b" value="valeur 1" aa>
Si j'ai ça :
je dois mettre ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <aa> <b>1</b> </aa>
Et ainsi de suite pour plusieurs valeurs (une dizaine).
Code : Sélectionner tout - Visualiser dans une fenêtre à part <aa name="b" value="valeur 2" aa>
3) L'existence d'une balise xml avec un noeud texte non vide fait que je mets la valeur 1,
et en cas d'absence je mets la valeur 0.
Si j'ai :
dans le xml source
Code : Sélectionner tout - Visualiser dans une fenêtre à part <aa>toto</aa>
Alors je mets :
dans le xml de sortie
Code : Sélectionner tout - Visualiser dans une fenêtre à part <aa value="1"/>
Par contre si j'ai :
Alors je mets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <aa/>
4) Sinon je n'arrive pas à itérer sur un ensemble d'éléments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <aa value="0"/>
J'ai lu de la doc sur l'instruction for-each select ... mais ça ne marche pas, il ne rentre même pas une fois dans la boucle, comme si je n'avais aucun noeud du type donné.
Voilà un modèle de mon xml source :
Je cherche à itérer sur les balises <c> avec le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <root> <aa> <bb> <c>111</c> <c>222</c> <c>333</c> </bb> </cc> </root>
Déjà ça n'itère pas comme je m'y attends, ensuite l'instruction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?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="xml" version="1.0" encoding="iso-8859-1" indent="yes"/> <xsl:template match="/root"> <xsl:for-each select="aa/bb/c"> <xsl:element name="myElement"> <xsl:attribute name="value"> <xsl:value-of select="text()" /> </xsl:attribute> </xsl:element> </xsl:for-each> </xsl:template> </xsl:stylesheet>
n'est pas correcte je pense ...?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <xsl:value-of select="text()" />
Sinon l'instruction :
sélectionne le noeud root mais alors pourquoi je ne peux pas remettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part xsl:template match=
une instructionà l'intérieur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part xsl:template match=
Y'a un truc qui m'échappe avec le...
Code : Sélectionner tout - Visualiser dans une fenêtre à part xsl:template match=
Voilà quelques problèmes que je n'arrive pas à faire.
Merci beaucoup pour votre aide ou vos suggestions.
Partager