IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

Conseils pour bien débuter: transformation xslt


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Points : 81
    Points
    81
    Par défaut Conseils pour bien débuter: transformation xslt
    Bonjour,

    Etudiant en école d'ingénieur, j'ai un module XML à étudier. L'étude se déroule sous forme d'un projet nommé: Transformation XSLT. Le but étant de m'initier au langage XML.

    Je dois partir d'un fichier XML contenant des informations d'agendas, le transformer avec XSLT afin de générer une page HTML présentant l'agenda.

    Je suis libre de modifier le fichier XML de départ si je veux, voici son schéma actuel:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?xml version="1.0" encoding="iso-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="transformation.xsl"?>
     
    <agenda>
            <evenement type="administratif">
    		<titre>Réunion du CA</titre>
            	<lieu>Salle du conseil - Istase</lieu>
    		<jour>Lundi</jour>
            	<heure_debut>10h</heure_debut>
    		<heure_fin>12h</heure_fin>
    		<notes>Parler de la pluie et du beau temps</notes>
    	</evenement>
    	<evenement type="loisir">
    		<titre>Repas</titre>
            	<lieu>Quick</lieu>
    		<jour>Lundi</jour>
            	<heure_debut>12h</heure_debut>
    		<heure_fin>13h</heure_fin>
    		<notes>Sortir ma carte étudiante pour le 2° burger gratuit</notes>
    	</evenement>
            <evenement type="projet">
    	        <titre>CSW - E-mailing</titre>
            	<lieu>Salle du conseil</lieu>
    		<jour>Mardi</jour>
            	<heure_debut>9h</heure_debut>
    		<heure_fin>10h</heure_fin>
    		<notes>Secouer les élèves car ça avance pas...</notes>
    	</evenement>
    	<evenement type="todo">
    		<titre>MAJ Site web</titre>
            	<lieu>Mon bureau</lieu>
    		<jour>Mardi</jour>
            	<heure_debut>10h15</heure_debut>
    		<heure_fin>12h</heure_fin>
    		<notes>Changer la couleur de fond</notes>
    	</evenement>
    	<evenement type="loisir">
    		<titre>Repas</titre>
            	<lieu>McDo</lieu>
    		<jour>Mardi</jour>
            	<heure_debut>12h</heure_debut>
    		<heure_fin>13h</heure_fin>
    		<notes></notes>
    	</evenement>
    </agenda>
    Je voudrais arriver à une page HTML comme cela:
    http://julien.paleni.free.fr/istase/tableau.jpg

    J'ai commencé à écrire un début de code pour le XLST afin d'avoir des bases:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:output 
      method="html"
      encoding="ISO-8859-1"
      doctype-public="-//W3C//DTD HTML 4.01//EN"
      doctype-system="http://www.w3.org/TR/html4/strict.dtd"
      indent="yes" />
     
    <xsl:template match="/">
    	<html>
    	<head>
    	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
    	<title>Mon agenda</title>
    	</head>
    	<body>
    		<xsl:apply-templates match="/" />
    	</body>
    	</html>
    </xsl:template>
     
    <xsl:template match="agenda">
       <table border="1">
        	<tr>
                <td>Jour</td>
        	    <td>Titre</td>
        	    <td>Lieu</td>
        	    <td>Début</td>
        	    <td>Fin</td>
        	    <td>Notes</td>
            </tr>
        <xsl:apply-templates/>
        </table>
    </xsl:template>
     
     
    <xsl:template match="evenement">
       <tr>
           <td><xsl:value-of select="jour"/></td>
           <td><xsl:value-of select="titre"/></td>
           <td><xsl:value-of select="lieu"/></td>
           <td><xsl:value-of select="heure_debut"/></td>
           <td><xsl:value-of select="heure_fin"/></td>
           <td><xsl:value-of select="notes"/></td>
        </tr>
    </xsl:template>    
    </xsl:stylesheet>
    La question que je me pose est:

    Est-il possible en lisant la valeur de "jour" d'un évènement de l'envoyer dans une colonne de tableau en fonction du résultat?

    Dois je modifier le xml de départ en rajoutant un niveau "jour" au dessus des évènements afin d'arriver au résultat?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <agenda>
           <jour type="lundi">
                   <evenement>
                   </evenement>
                   <evenement>
                   </evenement>
           </jour>
           <jour type="mardi">
                   <evenement>
                   </evenement>
           </jour>
    ....
    </agenda>
    Merci d'avance pour votre aide

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Un document XML est comme une petite base de données quand il est chargé en mémoire.

    Il n'est pas nécessaire de rajouter le niveau intermédiaire pour le jour, même si cela simplifie les traitements : dans la vraie vie, un document source est comme il est !

    Il est souvent plus difficile de faire le traitement voulu en une seule transformation plutôt qu'en plusieurs mais, là encore, une seule est pourtant souvent possible.
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  3. #3
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    pour compléter la réponse: il y a aussi un côté performance à prendre en compte. Si on fait une recherche dans une base de donnée en filtrant sur un champ nom il sera sûrement utile de rajouter un index sur ce champ nom , et pour le xml il sera sûrement utile de présenter les données avec une rupture sur le nom. SI tu peux ajouter ces ruptures parfait si tu ne peux pas je te renvoie la réponse d'Alain: tes données sont comme cela et il faut faire avec

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Points : 81
    Points
    81
    Par défaut
    merci pour vos réponses

    j'ai modifié mon xml en rajoutant le noeud jour

    j'ai une question à laquelle je n'ai pas trouvé de solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <jour nom="lundi">...</jour>
    Comment récupérer l'attribut nom?

Discussions similaires

  1. Conseils pour bien débuter
    Par teol91 dans le forum Android
    Réponses: 5
    Dernier message: 19/12/2011, 08h37
  2. [IntraWeb] Conseils pour bien débuter
    Par redoran dans le forum Web & réseau
    Réponses: 7
    Dernier message: 08/01/2011, 09h21
  3. Demande de conseils pour bien débuter
    Par Lookoud dans le forum Forum général ERP
    Réponses: 0
    Dernier message: 14/10/2009, 12h09
  4. [WD14] Conseil de livre pour bien débuter Stage Windev
    Par amartik dans le forum WinDev
    Réponses: 4
    Dernier message: 26/05/2009, 17h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo