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 :
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 :
<aa name="b" value="valeur 1" aa>
dans le xml de sortie.
Si j'ai ça :
je dois mettre ça :
<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 :
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 :
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
<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.
Partager