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:

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>
il donne le résultat:
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 le seconde xls:

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>
et il donne le résultat:

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>
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
le deuxième il donne partout des T1...

Est-ce que quelqu'un peut m'expliquer?

Merci d'avance pour votre aide.