Bonjour, je suis débutant en XML/XSL et j'ai besoin d'un petit coup de pouce. J'ai un fichier XML (FIC1.xml généré par ACCESS) que je dois transformer en un autre fichier XML (FIC2.xml toujours par ACCESS mais ce n'est pas le problème). J'ai utilisé un fichier .xsl (en fait j'ai déjà le méchanisme qui fonctionne et je dois le modifier).
Mon soucis c'est de vouloir utiliser un ID d'un élément pour faire un lien (comme pour les bases de données), c'est à dire:
(je ne peux pas utiliser la balise code, dsl)
Le code XML FIC1.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 </dataroot> <INVENTAIRE> <INVENTAIRE_USAGE> <SN>22</SN> <ID>666</ID> <INVENTAIRE_USAGE> </INVENTAIRE> <INVENTAIRE> <INVENTAIRE_USAGE> <SN>56</SN> <ID>667</ID> <INVENTAIRE_USAGE> </INVENTAIRE> <USAGE> <DT_CD>OK</DT_CD> <ID_usage>666</ID_usage> </USAGE> <USAGE> <DT_CD>OK</DT_CD> <ID_usage>667</ID_usage> </USAGE> </dataroot>
le code XSL:Ce que je veux obtenir FIC2.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 <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:template match="//root"> <INVENTAIRES> <INVENTAIRE> <xsl:for-each select="./INVENTAIRE"> <SN><xsl:value-of select="SN" /></SN> </xsl:for-each> </INVENTAIRE> </INVENTAIRES> <USAGES> <xsl:for-each select="./INVENTAIRE/INVENTAIRE_USAGE[ID = ./USAGE/ID_usage]"> <INVENTAIRE_USAGE> <SN><xsl:value-of select="SN" /></SN> <DT_CD><xsl:value-of select="DT_CD" /></DT_CD> </INVENTAIRE_USAGE> </xsl:for-each> </USAGES> </xsl:template> </xsl:stylesheet>
J'ai pas été très clair?!! Je veux pouvoir mettre une condition sur un élément (c'est bien un élément ?) avant de l'afficher en fonction d'un autre élément (et non d'une valeur en dure). C'est surement un pb de syntaxe.
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 <INVENTAIRES> <INVENTAIRE> <SN>22</SN> </INVENTAIRE> <INVENTAIRE> <SN>56</SN> </INVENTAIRE> </INVENTAIRES> <USAGES> <INVENTAIRE_USAGE> <SN>22</SN> <DT_CD>OK</DT_CD> -- à <USAGE> </INVENTAIRE_USAGE> <INVENTAIRE_USAGE> <SN>56</SN> <DT_CD>OK</DT_CD> -- à <USAGE> </INVENTAIRE_USAGE> </USAGES>
Merci de votre aide.
Partager