J’ai un fichier xml que je ne peux traiter que par une transformation xsl et dans lequel j’ai de nombreuses balises <value>.
Je veux transformer ces balises <value> pour ne plus en avoir une identique dans tout mon document.

Par exemple, je veux transformer :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<HOT id='HOTPAC0050000001' type='HOTRE'>
 	<SOCIETE>
 		<value>HÔTEL BLAIZE</value>
 	</SOCIETE>
  	<TYPE>
 		<value>HEBERGEMENT</value>
 	</TYPE>
</HOT>
En :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<HOT id='HOTPAC0050000001' type='HOTRE'>
 	<SOCIETE>
 		<SOCIETEvalue>HÔTEL BLAIZE</value>
 	</SOCIETE>
  	<TYPE>
 		<TYPEvalue>HEBERGEMENT</value>
 	</TYPE>
</HOT>
Le document étant très long et changeant, je ne peux pas faire une feuille de style reprenant toutes les balises et j’aimerai automatiser le traitement.

Pour ce faire j'ai le code ci-dessous sauf que je ne sais pas comment programmer afin que la balise que j'ai appelé <nouvellevalue> fasse ce que je veux : qu'elle prenne le nom de la balise parent suivi de "value" dans le cas de mon exemple précédent mes balises deviennet <SOCIETEvalue> et <TYPEvalue>.
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
 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output
encoding="ISO-8859-15"
method="xml"
indent="yes" />
 
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy> 
</xsl:template>
<xsl:template match="value">
<nouvellevalue>
<xsl:apply-templates select="@* | node()"/>
</nouvellevalue> 
</xsl:template>
</xsl:stylesheet>
Ceci marche mais renomme toutes les <value> en <nouvellevalue> ce qui ne répond pas à mon besoin.
Etant débutant avec xslt, je me suis formé et j'ai cherché des idées en ligne mais je ne trouve pas de solution, j'en viens donc à me demander si c'est possible. Auriez vous une piste à me proposer?

Merci d’avance.