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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<aa>12$13$14.5$15$</aa>
en xml de la forme :
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>
Mais comment itérer sur ma chaîne de caractères ?
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

Alors je dois mettre ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<aa name="b" value="valeur 1" aa>
dans le xml de sortie.

Si j'ai ça :
je dois mettre ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<aa name="b" value="valeur 2" aa>
Et ainsi de suite pour plusieurs valeurs (une dizaine).

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
Alors je mets :
dans le xml de sortie

Par contre si j'ai :
Alors je mets :
4) Sinon je n'arrive pas à itérer sur un ensemble d'éléments.
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 :

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>
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
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>
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
<xsl:value-of select="text()" />
n'est pas correcte je pense ...?

Sinon l'instruction :
sélectionne le noeud root mais alors pourquoi je ne peux pas remettre
une instruction à l'intérieur ?
Y'a un truc qui m'échappe avec le ...

Voilà quelques problèmes que je n'arrive pas à faire.
Merci beaucoup pour votre aide ou vos suggestions.