Bonjour,
Je suis nouvelle sur le forum.
Je souhaite modifier dans un fichier xml un SEUL noeud selon la valeur d'un autre noeud.
Le XML :
Je veux modifier le PID.4.4 quand le PID.4.5='PID45_2'.
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
27 <?xml version="1.0" encoding="ISO-8859-1"?> <root> <PID> <PID.4.1>PID41_1</PID.4.1> <PID.4.4>PID44_1</PID.4.4> <PID.4.5>PID45_1</PID.4.5> <PID.4.1>PID41_2</PID.4.1> <PID.4.4>PID44_2</PID.4.4> <PID.4.5>PID45_2</PID.4.5> <PID.4.1>PID41_3</PID.4.1> <PID.4.2/> <PID.4.3>PID43_3</PID.4.3> <PID.4.4>PID44_3</PID.4.4> <PID.4.5>PID45_3</PID.4.5> <PID.4.6/> <PID.4.7>PID47_3</PID.4.7> <PID.6.1>PID61_1</PID.6.1> <PID.6.2>PID62_1</PID.6.2> <PID.6.3>PID63_1</PID.6.3> <PID.6.4/> <PID.6.5>PID65_1</PID.6.5> <PID.6.6/> <PID.6.7>PID67_1</PID.6.7> <PID.6.1>PID61_2</PID.6.1> <PID.6.2>PID62_2</PID.6.2> </PID> </root>
Mon XSLT :
J'obtiens :
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 <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template name="remplacerPID44"> <PID.4.4> <xsl:value-of select="99999" /> </PID.4.4> </xsl:template> <xsl:template match="PID.4.5"> <xsl:variable name="pos" select="position()"/> <xsl:choose> <xsl:when test=".='PID45_2'"> <xsl:call-template name="remplacerPID44"/> </xsl:when> </xsl:choose> <PID.4.5> <xsl:value-of select="."/> </PID.4.5> </xsl:template> </xsl:stylesheet>
Je voulais remplacer et j'obtiens l'ajout du noeud tout en conservant l'ancien.
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
27
28
29
30
31
32 <root> <PID> <PID.4.1>PID41_1</PID.4.1> <PID.4.4>PID44_1</PID.4.4> <PID.4.5>PID45_1</PID.4.5> <PID.4.1>PID41_2</PID.4.1> <PID.4.4>PID44_2</PID.4.4> ------> Ce noeud est en trop <PID.4.4>99999</PID.4.4> <PID.4.5>PID45_2</PID.4.5> <PID.4.1>PID41_3</PID.4.1> <PID.4.2/> <PID.4.3>PID43_3</PID.4.3> <PID.4.4>PID44_3</PID.4.4> <PID.4.5>PID45_3</PID.4.5> <PID.4.6/> <PID.4.7>PID47_3</PID.4.7> <PID.6.1>PID61_1</PID.6.1> <PID.6.2>PID62_1</PID.6.2> <PID.6.3>PID63_1</PID.6.3> <PID.6.4/> <PID.6.5>PID65_1</PID.6.5> <PID.6.6/> <PID.6.7>PID67_1</PID.6.7> <PID.6.1>PID61_2</PID.6.1> <PID.6.2>PID62_2</PID.6.2> <PID.6.3/> <PID.6.4/> <PID.6.5/> <PID.6.6/> <PID.6.8/> </PID> </root>
Mon problème vient du fait que j'ai plusieurs PID.4.4 et PID.4.5 enfants de PID.
Merci d'avance pour votre aide.
Partager