Bonjour à tous,
Je débute avec le langage XSLT, et je m'arrache les cheveux depuis une semaine pour résoudre un problème.
Je cherche à créer une nouvelle balise de forme <unitid type=cote>Ms. 1611 (1476)</unitid>, à partir de deux balises de forme <unitid type="numéro_de_notice">1611</unitid><unitid type="cote_indéterminée_a">1476</unitid>.
Ces balises sont contenues dans une balise <did> qui contient d'autres balises qui ne doivent pas faire l'objet de la modification.
Les autres balises <unitid type="division"> ne doivent pas êtres modifiées non plus.
Ci-joint, un fragment de mon fichier XML:
J'aimerai donc obtenir quelque chose qui ressemble à ça:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 <c id="D45051771" level="otherlevel" otherlevel="notice"> <did> <unitid type="numéro_de_notice">1611</unitid> <unitid type="cote_indéterminée_a">1476</unitid> <unittitle>G. Vassel, Poésies provençales</unittitle> <unitdate calendar="gregorian" era="ce" normal="1901/2000">XX<emph render="super">e</emph> siècle</unitdate> <langmaterial> <language langcode="oci">provençal</language> </langmaterial> <physdesc> <physfacet type="support">Papier</physfacet> <extent>87 feuillets</extent> <dimensions unit="mm">240 × 185 mm</dimensions> <physfacet type="reliure">Reliure maroquin, aux armes de la ville d'Aix</physfacet> </physdesc> </did> <note type="provenance"> <p>Don de l'auteur, 1911.</p> </note> <controlaccess> <persname>Vassel (G.)</persname> <name>Poésies provençales</name> </controlaccess> <controlaccess> <geogname>Aix-en-Provence</geogname> <name>Reliure aux armes de la ville</name> </controlaccess><c id="D45051772" level="otherlevel" otherlevel="sous-notice"> <did> <unitid type="division">Fol. 2</unitid> <unittitle>« Obro dóu jouglar Gustàvi Vassèu ; » avec photographies, dessins et autographes</unittitle> </did> </c> </c><c id="D45051773" level="otherlevel" otherlevel="notice"> <did> <unitid type="numéro_de_notice">1612</unitid> <unitid type="cote_indéterminée_a">1477</unitid> <unittitle>Statuts de l'Ordre du Croissant, placé sous le patronage de saint Maurice et créé par le roi René</unittitle> <unitdate calendar="gregorian" era="ce" normal="1401/1500">XV<emph render="super">e</emph> siècle</unitdate> <langmaterial> <language langcode="fre">français</language> </langmaterial> <physdesc> <physfacet type="support">Parchemin</physfacet> <extent>19 feuillets</extent> <dimensions unit="mm">240 × 170 mm</dimensions> <physfacet type="reliure">Reliure moderne parchemin, avec armes sur les plats : <emph render="italic">d'or, à la croix bourdonnée de gueules, au chef d'azur, chargé d'une étoile du champ.</emph> </physfacet> </physdesc> </did> <scopecontent> <p>Incomplet du premier feuillet : « ... ne au soupper... » Fin (fol. 19 v<emph render="super">o</emph>) : « ... Donné ou conseil de l'Ordre, tenu à Angiers, le V<emph render="super">e</emph> jour d'aoust. » Cf. Lecoy de la Marche, <emph render="italic">Le roi René</emph> (Paris, Didot, 1875, in-8<emph render="super">o</emph>), t. I, page 531, note 1.</p> </scopecontent> <note type="provenance"> <p>Achat, 1907.</p> </note> <controlaccess> <corpname>Croissant (Ordre du)</corpname> <name>Statuts</name> </controlaccess> </c>
Je pense être sur une première piste grâce à la feuille de style suivante, mais qui me supprime toutes les balises contenues dans <did>, et modifie aussi les <unitid type="division">
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 <c id="D45051771" level="otherlevel" otherlevel="notice"> <did> <unitid type="cote">Ms. 1611 (1476)</unitid> <unittitle>G. Vassel, Poésies provençales</unittitle> <unitdate calendar="gregorian" era="ce" normal="1901/2000">XX<emph render="super">e</emph> siècle</unitdate> <langmaterial> <language langcode="oci">provençal</language> </langmaterial> <physdesc> <physfacet type="support">Papier</physfacet> <extent>87 feuillets</extent> <dimensions unit="mm">240 × 185 mm</dimensions> <physfacet type="reliure">Reliure maroquin, aux armes de la ville d'Aix</physfacet> </physdesc> </did> <note type="provenance"> <p>Don de l'auteur, 1911.</p> </note> <controlaccess> <persname>Vassel (G.)</persname> <name>Poésies provençales</name> </controlaccess> <controlaccess> <geogname>Aix-en-Provence</geogname> <name>Reliure aux armes de la ville</name> </controlaccess><c id="D45051772" level="otherlevel" otherlevel="sous-notice"> <did> <unitid type="division">Fol. 2</unitid> <unittitle>« Obro dóu jouglar Gustàvi Vassèu ; » avec photographies, dessins et autographes</unittitle> </did> </c> </c><c id="D45051773" level="otherlevel" otherlevel="notice"> <did> <unitid type="cote">Ms. 1612 (1477)</unitid> <unittitle>Statuts de l'Ordre du Croissant, placé sous le patronage de saint Maurice et créé par le roi René</unittitle> <unitdate calendar="gregorian" era="ce" normal="1401/1500">XV<emph render="super">e</emph> siècle</unitdate> <langmaterial> <language langcode="fre">français</language> </langmaterial> <physdesc> <physfacet type="support">Parchemin</physfacet> <extent>19 feuillets</extent> <dimensions unit="mm">240 × 170 mm</dimensions> <physfacet type="reliure">Reliure moderne parchemin, avec armes sur les plats : <emph render="italic">d'or, à la croix bourdonnée de gueules, au chef d'azur, chargé d'une étoile du champ.</emph> </physfacet> </physdesc> </did> <scopecontent> <p>Incomplet du premier feuillet : « ... ne au soupper... » Fin (fol. 19 v<emph render="super">o</emph>) : « ... Donné ou conseil de l'Ordre, tenu à Angiers, le V<emph render="super">e</emph> jour d'aoust. » Cf. Lecoy de la Marche, <emph render="italic">Le roi René</emph> (Paris, Didot, 1875, in-8<emph render="super">o</emph>), t. I, page 531, note 1.</p> </scopecontent> <note type="provenance"> <p>Achat, 1907.</p> </note> <controlaccess> <corpname>Croissant (Ordre du)</corpname> <name>Statuts</name> </controlaccess> </c>
Est-ce qu'il existe un autre moyen que de récupérer toutes les balises de <did> perdues en faisant des <xsl:value-of select=""> dans le <xsl:template>?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:template match="//did"> <unitid type="cote"> <xsl:value-of select="concat('Ms. ',unitid[@type='numéro_de_notice'],' (',unitid[@type='cote_indéterminée_a'],')')"/> </unitid> </xsl:template> </xsl:stylesheet>
Quelle expression XPATH utiliser dans le <xsl:template match=""> pour que seules les balises <unitid> soient remplacées?
Je pensais que le <xsl:variable> allait m'aider mais je n'ai pas su l'utiliser comme il faut...
Un grand merci pour votre aide et vos réponses!
Bon week-end
Partager