Bonjour, j'ai deux fichiers XML, les voici :
book1.xml
book2.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 <livre> <chapitre name="Chap1" num="1" lu="0"> <page num="1" lue="0"> </page> <page num="2" lue="0"> </page> <page num="3" lue="0"> </page> <page num="4" lue="0"> </page> <page num="5" lue="0"> </page> </chapitre> </livre>
Mon but est de copier entièrement le fichier book1.xml tout en mettant à jour la valeur des attributs "lue" des éléments <page> après vérification dans book2.xml, pour avoir une version du fichier xml mise à jour.
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 <livre> <chapitre name="Chap1" num="1" lu="TRUE"> <page num="1" lue="TRUE"> </page> <page num="2" lue="TRUE"> </page> <page num="3" lue="TRUE"> </page> <page num="4" lue="FALSE"> </page> <page num="5" lue="FALSE"> </page> </chapitre> </livre>
Voici ma feuille xsl, mais ça ne marche pas, je me suis inspiré d'un exemple que j'ai trouvé sur le site, ici :http://xml.developpez.com/sources/?page=modifs#I_maj.
xsl:
J'utilise Saxon8 avec java si ça peut aider.
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 <xsl:template match="node()"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="@*"> <xsl:choose> <xsl:when test="document('book2.xml')/livre/chapitre/page/@lue='TRUE'"> <xsl:attribute name="lue"> <xsl:value-of select="replace(.,'0','TRUE')"/> </xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="{name()}"> <xsl:value-of select="."/> </xsl:attribute> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
D'avance merci.
Partager