réorganiser une arborescence

réorganiser une arborescence - XML/XSL - Programmation

Marsh Posté le 12-03-2004 à 14:37:31    

Salut ! Je voudrais réorganiser l'arborescence du fichier xml que voici :
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<semaine num="III-1">
     
    <seance formation="premiere_annee" nb_gpes="5">
        <matiere>Maths</matiere>
        <jour>mardi 9/03/04</jour>
        <h_deb>8h00</h_deb>
        <h_fin>9h30</h_fin>
        <prof>JPR/MC</prof>
        <salle>P2-16</salle>
        <num_gpe>1</num_gpe>
        <num_gpe>9</num_gpe>
        <num_gpe>10</num_gpe>
        <num_gpe>11</num_gpe>
        <num_gpe>12</num_gpe>
    </seance>
     
    <seance formation="premiere_annee" nb_gpes="2">
        <matiere>Maths</matiere>
        <jour>lundi 8/03/04</jour>
        <h_deb>9h30</h_deb>
        <h_fin>11h00</h_fin>
        <prof>JPR/MC</prof>
        <salle>P2-16</salle>
        <num_gpe>5</num_gpe>
        <num_gpe>6</num_gpe>
    </seance>
</semaine>
 
Ce n'est qu'un extrait car ce fichier va correspondre aux emplois du temps de plusieurs formations dans une semaine.
Le document est ici structuré en séances et je voudrais faire une structure comme ceci :
 
<emploi du temps>
       <jour lib="mardi 09/03/04">
            <heure h="8h00">
                   <infos de la séance/>
            </heure>
       </jour>
<emploi du temps>
 
C'est à dire séparer par jour et par heure dans chaque jour.
J'ai réussi à faire une feuille XSL permettant de séparer par jour, mais je n'arrive pas à faire à la volée la séparation par heure...
Notez que dans le fichier XML créé, le balise de chaque jour n'apparait qu'une fois mais peut regrouper plusieurs séances (cf variable 'jour-unique'), je voudrais faire la même chose pour les heures.
 
Voila le fichier XSL :
 
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:key name="cle-jour" match="seance" use="jour"/>
    <xsl:variable name="formation">premiere_annee</xsl:variable>
    <xsl:variable name="jours" select="semaine/seance[@formation=$formation]/jour"/>
    <xsl:variable name="jour-unique" select="$jours[not(text()=preceding::jour)]"/>
    <xsl:template match="/">
        <edt formation="{$formation}">
            <xsl:for-each select="$jour-unique">
                <xsl:sort select="text()" order="ascending"/>
                <xsl:variable name="libelle" select="text()"/>
                <xsl:copy>
                    <xsl:attribute name="lib">
                        <xsl:value-of select="$libelle"/>
                    </xsl:attribute>
                    <xsl:for-each select="key('cle-jour',$libelle)">
                        <xsl:copy>
                            <xsl:copy-of select="@nb_gpes"/>
                            <xsl:copy-of select="*[not(self::jour)][not(self::date)]"/>
                        </xsl:copy>
                    </xsl:for-each>
                </xsl:copy>
            </xsl:for-each>
        </edt>
    </xsl:template>
</xsl:stylesheet>
 
Si vous avez eu le courage de tout lire et que vous avez une petite idée, je vous remercie d'avance pour vos réponses  :)  
allezsalut

Reply

Marsh Posté le 12-03-2004 à 14:37:31   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed