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 :


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>
Merci par avance pour l'aide que vous pourrez m'apporter !