Bonjour à tous,

Je débute en XSLT et je me retrouve confronté à une problématique XSLT sur laquelle je n'ai pas réussi à trouver une solution (après une journée de recherche sur le web).

Mon XML de départ correspond à :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<FrefProjet>
     <frefEchange>
          <name>Test1</name>
     </frefEchange>
     <frefEchange reference="../frefEchange"/>
</FrefProjet>
Par le biais d'un traitement XSLT, je dois créer un élément "Echange" par "frefEchange" avec son nom, y compris celui comportant une référence. Du coup, je dois créer un XML qui ressemble à :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<Projet>
     <Echange>
          <nom>Test1</nom>
     </Echange>
     <Echange>
          <nom>Test1</nom>
     </Echange>
</Projet>
Après quelques recherches sur le web, j'arrive à un code qui ressemble à :
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
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">
  <xsl:output method="xml" />
 
	<xsl:template match="/">
		<Projet>
			<xsl:apply-templates />
		</Projet>
	</xsl:template>	
 
	<xsl:template match="FrefProjet">
		<xsl:for-each select="frefEchange">
			<Echange>
				<xsl:choose>
					<xsl:when test="not(@reference)">
						<nom><xsl:value-of select="name"/></nom>
					</xsl:when>
					<xsl:otherwise>
						<xsl:variable name="exchangePath" select="@reference" /> 
						<nom><xsl:value-of select="$exchangePath/name"/></nom>
					</xsl:otherwise>
				</xsl:choose>
			</Echange>
		</xsl:for-each>
	</xsl:template>
 
</xsl:stylesheet>
Comme vous l'aurez compris, le résultat n'est pas vraiment bon. Je créé bien un élément "Echange" par élément "frefEchange" dans mon XML source, mais je n'arrive pas à récupérer l'élément "name" de ce dernier.

Je n'arrive pas à faire comprendre le fait que je souhaite accéder au PATH contenu dans ma variable "exchangePath".

Pourriez-vous me venir en aide ?

Merci d'avance,

Jérémy