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 :
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>
Je veux modifier le PID.4.4 quand le PID.4.5='PID45_2'.

Mon XSLT :
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>
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
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>
Je voulais remplacer et j'obtiens l'ajout du noeud tout en conservant l'ancien.
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.