Aide XSLT Concaténer des données
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:
Code:
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> |
J'aimerai donc obtenir quelque chose qui ressemble à ça:
Code:
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> |
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:
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> |
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>?
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