Bonjour à tous
Voici mon problème :
J'utilise une xsl qui créé un attribut "folio" à l’élément "niv1"
et lui donne la valeur de l'attribut "folio" du dernier élément "rp"
En plus de l'attribut "folio" dans "niv1" je voudrais aussi ajouter un deuxième attribut "id=niv1x", le x étant le rang d’apparition des éléments "niv1" dans le xml.
Avec cette xsl, si l’attribut "id=niv1x" est déjà présent dans "niv1" au moment de passer la xsl il est supprimé.
En résumé, j' ai ça :
<niv1><int>
Et je voudrais avoir ça :
<niv1 id="niv1xx" folio="x"><int>
(id="niv1xx" doit être numéroté 01,02… 10,11…)
Voici la xsl :
Merci d'avance pour vos réponses
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 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <!-- donner le @folio du rp précédent --> <xsl:template match="niv1"> <xsl:copy> <xsl:attribute name="folio"> <xsl:value-of select="preceding::rp[1]/@folio"/> </xsl:attribute> <xsl:apply-templates/> </xsl:copy> </xsl:template> <!-- tout le reste : copier tel que et appeler les templates des enfants --> <xsl:template match="*|@*"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
Partager