bonjour,
je viens de réaliser une transformation xsl avec un récursif me permettant d'ajouter des variables issues d'un xml entre elles.
Mon problème, c'est que je veux intégrer les résultats du récursif dans mon document xml sans tout mettre dans le récursif, car dés que je veux intégrer des nouvelles balises, le récursif s'applique sur toutes.
J'essaie d'être le plus clair possible, voici mon xml et mon xsl, le résultat obtenu et le résultat voulu:
Code xml : 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 <?xml version="1.0" encoding="utf-8"?> <ListeDiffusion Titre="" Version="10"> <Clip> <SourceVideo Name="Source1"> <Fichier>\videoa.avi</Fichier> </SourceVideo> <SourcePrincipale>1</SourcePrincipale> <Debut>1403.59</Debut> <Fin>1409.26</Fin> <Commentaire>bibi</Commentaire> </Clip> .......... <Clip> <SourceVideo Name="Source1"> <Fichier>\videob.avi</Fichier> </SourceVideo> <SourcePrincipale>1</SourcePrincipale> <Debut>5929</Debut> <Fin>5937.02</Fin> <Commentaire>bobo</Commentaire> </Clip> </ListeDiffusion>
xsl:
résultat obtenu 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
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
61
62
63 <!-- DWXMLSource="testlll.xml" --><xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version = "1.0" > <xsl:output omit-xml-declaration="no" media-type="application/xspf+xml" method="xml" indent="yes" encoding="UTF-8" /> <xsl:template name="boucle" match="/ListeDiffusion" > <!-- liste des paramètres --> <xsl:param name="n" select="count(/ListeDiffusion/Clip/Debut)"></xsl:param> <xsl:param name="indice" select="0"></xsl:param> <xsl:param name="somme_duree" select="0"></xsl:param> <!-- On teste si lindice est supérieur à la limite --> <xsl:choose> <xsl:when test="$indice=0"> <playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1"> </playlist> <xsl:call-template name="boucle"> <xsl:with-param name="indice"><xsl:value-of select="$indice+1"/> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:when test="$indice > $n"> <!-- instruction à réaliser après la boucle--> </xsl:when> <!-- si lindice est inférieur ou égale à n --> <xsl:otherwise> <track> <location><xsl:value-of select="concat('file:///F:\rugby\saison 2012 2013',Clip/SourceVideo/Fichier)"/></location> <title><xsl:apply-templates select="Clip[position()=$indice]/Commentaire"/></title> <extension application="http://www.videolan.org/vlc/playlist/0"> <xsl:element name="vlc"> <xsl:value-of select="concat('start-time=',$somme_duree)"/> </xsl:element> </extension> </track> <xsl:call-template name= "boucle"> <xsl:with-param name="indice"><xsl:value-of select="$indice+1"/> <xsl:with-param name="somme_duree" select="number(/ListeDiffusion/Clip[position()=$indice]/Fin)-number(/ListeDiffusion/Clip[position()=$indice]/Debut)+$somme_duree"></xsl:with-param> </xsl:with-param> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
xml voulu:
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 <?xml version="1.0" encoding="UTF-8"?> <playlist xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/" version="1"/> <track> <location>file:///F:\videoa.avi</location> <title>bibi</title> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc>start-time=0</vlc> </extension> </track> .......... <track> <location>file:///F:\videoa.avi</location> <title>bobo</title> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc>start-time=46.15000000000009</vlc> </extension> </track>
pourriez vous m'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 <?xml version="1.0" encoding="UTF-8"?> <playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/"> <trackList> <track> <location>file:///F:\videoa.avi</location> <title>bibi</title> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:option>start-time=0</vlc:option> </extension> </track> ........ <track> <location>file:///F:\videoa.avi</location> <title>bobo</title> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:option>start-time=46.15000000000009</vlc:option> </extension> </track> </tracklist>
Partager