Nouveau sur le forum ? Voici votre case départ pour bien débuter.

Liens contextuels :

Auteur
hazrelle
# 12 Mar 2008 - 01:29:14
Citer
2 Posts
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

msn 
^
hazrelle
# 12 Mar 2008 - 14:15:01
Citer
2 Posts
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>


msn 
^

référencesLes références web : openweb.eu.org - opquast.com - webmaster-hub.com - webrankinfo.com - salemioche.net - web-pour-tous.org - webonorme.org

Nos partenaires : Editions Eyrolles - Location vacances France - Location vacances Europe

Nikozen : Hébergement - Réalisation : Alsacreations.fr

Powered by Phedio v3.8 beta © dew
Contacter l'administrateur - 17.4 ms - Charte