Bonjour à tous,
Je cherche à modifier un fichier XML (et en créer un nouveau en output) dont les attributs @id des éléments <article> n'ont pas le bon format. (il s'agit d'un dictionnaire divisé en plusieurs articles)
En effet, chaque article a un @id. Ces id sont numérotés de 1 jusqu'à la fin. Or, je souhaiterais que chaque numéro soit précédé de "DT05_", le "05" correspondant à la valeur de l'attribut @dep de l'élément <DICTIONNAIRE>.
En résumé, l'id de l'article 1 serait "DT05_1", celui de l'article 2 "DT05_2", etc.
Étant donné que je débute en XSLT, malgré mes tentatives, je n'ai trouvé de solution pour le moment...
Voici un extrait de mon fichier 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 <?xml version="1.0" encoding="UTF-8"?> <DICTIONNAIRE departement="Hautes-Alpes" dep="05"> <article id="1" pg="1"> <vedette><pg>1</pg><sm>Abadons (Les),</sm></vedette> <definition><typologie>ferme</typologie>, <localisation>commune de Gap</localisation>.</definition> <forme_ancienne> <i>Abadoux</i> <reference>(lang. vulg.)</reference>.</forme_ancienne> <forme_ancienne> <i>Abadon</i> <reference>(État-maj.)</reference>.</forme_ancienne> </article> <article id="2" pg="1"> <vedette><sm>Abbaye (L'),</sm></vedette> <definition><typologie>ruines</typologie>, <localisation>commune de Clausonne</localisation>.</definition> <commentaire><p> Ancienne abbaye d'hommes. On ignore l'époque de sa fondation ; elle devint un simple bénéfice à partir de la <date>fin du <sm>xvi</sm><sup>e</sup> siècle</date>.</p></commentaire> <forme_ancienne> <i>Monasterium de Clausonna,</i> <date>1386</date> <reference>(H.-A. Durb.)</reference>.</forme_ancienne> <forme_ancienne> <i>Monasterium Clausone,</i> <date>1409</date> <reference>(H.-A. chap.)</reference>.</forme_ancienne> <forme_ancienne> <i>Abbatia de Clausono,</i> <date>1500</date> <reference>(H. A. pouillé de Gap)</reference>.</forme_ancienne> </article> <article id="3" pg="1"> <vedette><sm>Abbé (L'),</sm></vedette> <definition><typologie>ferme</typologie>, <localisation>commune de Champcella</localisation>.</definition> </article> </DICTIONNAIRE>
Et voici mon code XSLT :
Merci par avance pour l'aide que vous pourrez m'apporter !
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="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes"/> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <xsl:template match="DICTIONNAIRE"> <xsl:for-each select="article[@id]"> <xsl:value-of select="concat('DT',DICTIONNAIRE[@dep],'_',article[@id])"/> </xsl:for-each> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet>
Partager