Bonjour à tous,

J'ai fait un script qui parcourt une arborescence de dossier et génère un document XML.
La forme serait ainsi :

 
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="xsl.xsl" type="text/xsl" ?>
<journal>
	<dossier>
		<nom>root</nom>
		<taille>1000</taille>
		<dossier>
			<nom>sub1</nom>
			<taille>1001</taille>
			<fichier>
				<nom>filesub1</nom>
				<taille>1002</taille>
			</fichier>
			<fichier>
				<nom>filesub2</nom>
				<taille>1003</taille>
			</fichier>
		</dossier>
		<dossier>
			<nom>sub2</nom>
			<taille>1004</taille>
			<fichier>
				<nom>filesub3</nom>
				<taille>1005</taille>
			</fichier>
		</dossier>
	</dossier>
</journal>


Lors de la création de la feuille XSL, j'ai l'impression que je ne vais pas pouvoir transformer cette arborescence en tableau simple.

Exemple :

<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>

<xsl:template match="/">	
	<html>
	<head>
		<title>temp</temp>
	</head>
	<body>
		<table width="400" border="1">
			<xsl:apply-templates select="dossier"/>
			<xsl:apply-templates select="fichier" />
		</table>
	</body>
	</html>	
</xsl:template>

<xsl:template match="dossier">
<tr>
<td><xsl:value-of select="dossier/nom" /></td>
<td><xsl:value-of select="dossier/taille" /></td>
</tr>
</xsl:template>

<xsl:template match="fichier">
<tr>
<td><xsl:value-of select="fichier/nom" /></td>
<td><xsl:value-of select="fichier/taille" /></td>
</tr>
</xsl:template>

</xsl:stylesheet>


ou encore quelque chose comme ça


		<table width="400" border="1">
			<xsl:for-each select="dossier">
			<xsl:apply-templates select="dossier"/>
			</xsl:for-each>
			<xsl:for-each select="fichier">
			<xsl:apply-templates select="fichier" />
			</xsl:for-each>
		</table>


A chaque fois je n'obtiens aucun résultat.
Quelqu'un a déjà eu l'occasion d'appliquer un XSL à une structure récursive, ou faut-il que j'essaye de changer le document XML ?
L'idée de l'arborescence me plait bien en tout cas.
Merci d'avance pour votre aide.

Hazrelle
J'ai finalement trouvé un moyen en utilisant la balise <xsl:call-template name="">.
Cela permet d'obtenir une récursivité sur les balises XML.
Je vous le donne le code au final.



<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>

<xsl:template match="journal">	
	<html>
	<head>
		<title>temp</title>
	</head>
	<body>
		<table width="400" border="1">
			<xsl:apply-templates select="dossier" />
		</table>
	</body>
	</html>	
</xsl:template>

<xsl:template match="dossier" name="dossier">
<tr>
<td><xsl:value-of select="nom" /></td>
<td><xsl:value-of select="taille" /></td>
</tr>
<xsl:for-each select="dossier">
<xsl:call-template name="dossier" />
</xsl:for-each>
<xsl:for-each select="fichier">
<xsl:call-template name="fichier" />
</xsl:for-each>
</xsl:template>

<xsl:template match="fichier" name="fichier">
<tr>
<td><xsl:value-of select="nom" /></td>
<td><xsl:value-of select="taille" /></td>
</tr>
</xsl:template>

</xsl:stylesheet>