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 :
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> <value>HÔTEL BLAIZE</value> </SOCIETE> <TYPE> <value>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.
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>
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>.
Ceci marche mais renomme toutes les <value> en <nouvellevalue> ce qui ne répond pas à mon besoin.
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>
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.
Partager