Bonjour tout le monde,
Je suis débutant en XLM j'essaye de comprendre un exemple de xsl mais j'arrive pas...
Le fichier xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0" encoding="utf-8"?> <ts> <t id="t1">T1</t> <t id="t2" ref="t1">T2</t> <t id="t3" ref="t2">T3</t> </ts>
Le premier xsl:
il donne le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="key" match="t" use="@id"/> <xsl:template match="/|*|text()"> <xsl:copy> <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:template> <xsl:template match="/t[@ref]"> <xsl:copy-of select="key('key',@ref)"/> </xsl:template> </xsl:stylesheet>
et le seconde xls:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0"?> <ts> <t>T1</t> <t id="t1">T1</t> <t id="t2" ref="t1">T2</t> </ts>
et il donne le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="key" match="t" use="@id"/> <xsl:template match="/|*|text()"> <xsl:copy> <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:template> <xsl:template match="t[@ref]"> <xsl:apply-templates select="key('key',@ref)"/> </xsl:template> </xsl:stylesheet>
la seule différence entre ces deux xsl c'est le code dans le seconde xsl.apply-templates, mais j'arrive pas à comprendre les résultat sur tout pour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?xml version="1.0"?> <ts> <t>T1</t> <t>T1</t> <t>T1</t> </ts>
le deuxième il donne partout des T1...
Est-ce que quelqu'un peut m'expliquer?
Merci d'avance pour votre aide.
Partager