Bonsoir,
Voici mon problème : je dois remplacer une balise par sa valeur concaténé à toto par exemple :
dans mon cas précis, je voudrais remplacer le P et le Z dans OBR.5.1 par toto_P et toto_Z
extrait 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
28
29
30
31
32
33
34
35
36
37
38
39
40 <ORC> <ORC.2.1>SC</ORC.2.1> <ORC.3.1>17P10219</ORC.3.1> <ORC.4.1>A17-015934</ORC.4.1> <ORC.5.1>17P10219</ORC.5.1> <ORC.6.1>CM</ORC.6.1> <ORC.8.1/> <ORC.8.2/> <ORC.8.3/> <ORC.8.4>20170622145309</ORC.8.4> <ORC.10.1>20170622145309</ORC.10.1> <ORC.11.1>20170705150557</ORC.11.1> </ORC> <OBR> <OBR.2.1>1</OBR.2.1> <OBR.3.1>17P10219</OBR.3.1> <OBR.4.1>A17-015934</OBR.4.1> <OBR.5.1>P</OBR.5.1> <OBR.5.2>histologies</OBR.5.2> </OBR> <ORC> <ORC.2.1>SC</ORC.2.1> <ORC.3.1>17P10219</ORC.3.1> <ORC.4.1>A17-015934</ORC.4.1> <ORC.5.1>17P10219</ORC.5.1> <ORC.6.1>CM</ORC.6.1> <ORC.8.1/> <ORC.8.2/> <ORC.8.3/> <ORC.8.4>20170622145309</ORC.8.4> <ORC.10.1>20170622145309</ORC.10.1> <ORC.11.1>20170705150557</ORC.11.1> </ORC> <OBR> <OBR.2.1>1</OBR.2.1> <OBR.3.1>17P10219</OBR.3.1> <OBR.4.1>A17-015934</OBR.4.1> <OBR.5.1>Z</OBR.5.1> <OBR.5.2>histologies</OBR.5.2> </OBR>
J'ai essayé plusieurs solutions mais soit le code ne change rien, soit je me retrouve avec P dans les deux balises.
Je suis donc passé par un appel en boucle sur OBR.5.1 de la XSL ci-dessous, mais ce n'est pas mieux : aucune transformation sur la balise en question :
Une idée?
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 <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output encoding="UTF-8" indent="yes" method="xml" version="1.0"/> <xsl:param name="nomElement">OBR.5.1</xsl:param> <xsl:param name="valCible">toto_P</xsl:param> <xsl:param name="conditionTrue">P</xsl:param> <xsl:template match="node() | @*"> <xsl:copy> <xsl:choose> <xsl:when test="name()=$nomElement"> <xsl:if test="self::*=$conditionTrue"><xsl:value-of select="$valCible"></xsl:value-of></xsl:if> <xsl:if test="self::*!=$conditionTrue"><xsl:apply-templates select="@* | node()"/></xsl:if> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="@* | node()"/> </xsl:otherwise> </xsl:choose> </xsl:copy> </xsl:template> </xsl:stylesheet>
Merci.
Partager