Bonjour,
Désolé pour la prose . Je suis débutant en xslt et je souhaiterai juste une correction de mon code, celui-ci fonctionne.
J'ai un fichier XML structuré ainsi, ce fichier est fourni par un soft tiers, je ne peux pas modifier la structure du xml:
J'ai 1 à n élément ElementA.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <ElementA attributElA="unechaine"> <ElementB> <ElementC1>IndexRechercher</ElementC1> <ElementC2>ValeurACopier</ElementC2> </ElementB> <ElementB> <ElementC1>IndexNonrechercher</ElementC1> <ElementC2>ValeurAIgnorer</ElementC2> </ElementB>
Dans chaque ElementA, j'ai 1 à n élément ElementB.
Dans chaque ElementB, j'ai uniquement et toujours 2 éléments nommés ElementC1 et ElementC2
Je souhaite récupérer un fichier plat contenant:
- l'attribut attributElA des éléments ElementA
et
- la valeur de l'élément ElementC2.
Ce binôme ne doit être récupérer que si ElementC1 est égale à une certaine valeur.
Voici ma méthode:
Cela fonctionne chez moi, et j'ai le résultat souhaité. C'est juste que j'aimerai améliorer mes connaissances et avoir vos critiques sur mon script, je ne suis pas sur d'avoir bien compris le fonctionnement de la variable par exemple et si je l'utilise bien.
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 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:for-each select="ElementA"> <xsl:variable name="myElement" select="."/> <xsl:for-each select="ElementB"> <xsl:if test="ElementC1='IndexRechercher'"> <xsl:value-of select="$myElement/@attributElA"/> <xsl:value-of select="ElementC2"/> </xsl:if> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Merci
Partager