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 :

tableau avec xml xsl


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut tableau avec xml xsl
    Bonjour
    Voilà, j'ai fait un fichier xml, une dtd et un fichier xsl.
    Les voici :

    fichierxml

    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE classedec08 SYSTEM "classedec08.dtd">
    <?xml-stylesheet  type="text/xsl" href="classedec08.xsl"?>
    <ecole>
    	<eleve>
    			<classe>M1</classe>
    			<nom>Durand</nom>
    			<prenom>Jacques</prenom>
    			<appreciation>11</appreciation>
    		</eleve>
    		<eleve>
    			<classe>M1</classe>
    			<nom>Dupont</nom>
    			<prenom>Joséphine</prenom>
    			<appreciation>13</appreciation>
    		</eleve>
    		<eleve>
    			<classe>M1</classe>
    			<nom>Dugenou</nom>
    			<prenom>Gédéon</prenom>
    			<appreciation>4</appreciation>
    		</eleve>
    		<eleve>
    			<classe>M1</classe>
    			<nom>Dufour</nom>
    			<prenom>Gaétan</prenom>
    			<appreciation>10</appreciation>
    		</eleve>
    </ecole>
    fichier xsl

    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
     <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
    xmlns="http://www.w3.org/TR/REC-html40"
    result-ns="">
    <!-- Feuille de style pour les élèves de l'école -->
    <xsl:template match="/">
    <html>
    	<head>
    		<title>Classes de l'école</title>
    	</head>
    	<body>
    	<table border="1">
    			<caption>Classes de l'école</caption>
    			<tr>
    				<th>classe</th>
    				<th>nom</th>
    				<th>prénom</th>
    				<th>appréciation</th>
    			</tr>
    			<xsl:for-each select="ecole/eleve" >		
    			<tr>
    					<td><xsl:value-of select="classe"/></td>
    					<td><xsl:value-of select="nom"/></td>
    					<td><xsl:value-of select="prenom"/></td>
    					<td><xsl:value-of select="appreciation"/></td>
    			</tr>
    			</xsl:for-each>			
    	</table>
    	</body>
    </html>
    </xsl:template>
    </xsl:stylesheet>
    dtd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!ELEMENT ecole ( classe+)>
    <!ELEMENT classe ( #PCDATA)>
    <!ELEMENT classe ( eleve+)>
    <!ELEMENT eleve ( nom,prenom,appreciation)>
    <!ELEMENT nom ( #PCDATA)>
    <!ELEMENT prenom ( #PCDATA)>
    <!ELEMENT appreciation ( #PCDATA)>
    J'obtiens bien un tableau mais pas celui que je voudrais : je voudrais dans la première colonne classe n'avoir qu'une seule fois M1 (car il y aura ensuite plusieurs classes).
    Est-ce que quelqu'un peut m'aider, je n'arrive pas du tout à touver la solution. Je débute et donc c'est surement pour cela.
    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    bonjour je pense que c'est mieux de bien modéliser ton fichier xml. comme ça:
    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
    <ecole>
    	<classe>
    		<nom_classe>M1</nom_classe>
    		<eleve>
    			<nom>Durand</nom>
    			<prenom>Jacques</prenom>
    			<appreciation>11</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dupont</nom>
    			<prenom>Joséphine</prenom>
    			<appreciation>13</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dugenou</nom>
    			<prenom>Gédéon</prenom>
    			<appreciation>4</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dufour</nom>
    			<prenom>Gaétan</prenom>
    			<appreciation>10</appreciation>
    		</eleve>
    	</classe>
    </ecole>
    l' ecole -> les classes -> les eleves ...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Oui, j'avais fait cela dans un premier essai, mais le fichier xsl doit aussi être modifié car actuellement ça ne s'affiche toujours pas comme il faudrait. Merci de votre aide.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    J'ai avancé et c'est presque bon mais seulement presque.
    Voilà le fichier xsl. J'ai rajouté un rowspan donc j'ai bien dans la première colonne la classe et dans les colonnes suivantes les élèves. Le problème c'est que pour 2 classes j'ai 4 élèves donc le rowspan à 5 fonctionne par contre pour la 3ème classe j'ai 5 élèves et donc le dernier élève s'affiche sur une ligne avec les informations décalées. Donc pas bon.
    Comment faire ? Merci.

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"
    xmlns="http://www.w3.org/TR/REC-html40"
    result-ns="">
    <!-- Feuille de style pour les élèves de l'école -->
    <xsl:template match="/">
    <html>
    	<head>
    		<title>Classes de l'école</title>
    	</head>
    	<body>
    	<table border="1">
    			<caption>Classes de l'école</caption>
    			<tr>
    				<th>classe</th>
    				<th>nom</th>
    				<th>prénom</th>
    				<th>appréciation</th>
    			</tr>
    			<xsl:for-each select="ecole/classe" >		
    			<tr>
    					<td rowspan="5"><xsl:value-of select="nom_classe"/></td>
    					<xsl:for-each select="eleve" >
    					<tr>
    						<td><xsl:value-of select="nom"/></td>
    						<td><xsl:value-of select="prenom"/></td>
    						<td><xsl:value-of select="appreciation"/></td>
    					</tr>
    					</xsl:for-each>	
    			</tr>
    			</xsl:for-each>				
    	</table>
    	</body>
    </html>
    </xsl:template>
    </xsl:stylesheet>
    fichier xml

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE classedec08 SYSTEM "classedec08.dtd">
    <?xml-stylesheet  type="text/xsl" href="classedec08.xsl"?>
    <ecole>
    	<classe>
    		<nom_classe>M1</nom_classe>
    		<eleve>
    			<nom>Durand</nom>
    			<prenom>Jacques</prenom>
    			<appreciation>11</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dupont</nom>
    			<prenom>Joséphine</prenom>
    			<appreciation>13</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dugenou</nom>
    			<prenom>Gédéon</prenom>
    			<appreciation>4</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dufour</nom>
    			<prenom>Gaétan</prenom>
    			<appreciation>10</appreciation>
    		</eleve>
    	</classe>	
    	<classe>	
    		<nom_classe>M2</nom_classe>
    		<eleve>
    			<nom>Dubois</nom>
    			<prenom>Mireille</prenom>
    			<appreciation>17</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Duchemin</nom>
    			<prenom>Micheline</prenom>
    			<appreciation>16</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Duracuire</nom>
    			<prenom>Caroline</prenom>
    			<appreciation>12</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dupipeau</nom>
    			<prenom>Berthe</prenom>
    			<appreciation>9</appreciation>
    		</eleve>
    	</classe>
    	<classe>
    	<nom_classe>M3</nom_classe>
    		<eleve>
    			<nom>Dubonnet</nom>
    			<prenom>Jules</prenom>
    			<appreciation>9</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dubalai</nom>
    			<prenom>Jim</prenom>
    			<appreciation>12</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Duduche</nom>
    			<prenom>Joseph</prenom>
    			<appreciation>18</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Dumont</nom>
    			<prenom>Marthe</prenom>
    			<appreciation>6</appreciation>
    		</eleve>
    		<eleve>
    			<nom>Duval</nom>
    			<prenom>Charles</prenom>
    			<appreciation>8</appreciation>
    		</eleve>
    	</classe>
    </ecole>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    bonjour ,
    essayer avec ce xsl, je pense que c'est mieux, surtout il afficher les etudiants dans une table avec le nom de classe comme caption

    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
     
    <?xml version = '1.0'?>
    <xsl:stylesheet version= '1.0' 
    	xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
    <xsl:template match='/'>
    <html>
    	<head>
    		<title>Classes de l'ecole</title>
    	</head>
    	<body>
    	<h1>Classes de l'ecole</h1>
    	<xsl:for-each select="ecole/classe" >
     
    		<table border="1" width="500">
    			<caption><b>Classe:</b> <xsl:value-of select="nom_classe"/></caption>
     
    				<tr>
     
    					<th>nom</th>
    					<th>prenom</th>
    					<th>appreciation</th>
    				</tr>
     
    				<xsl:for-each select="eleve" >
    				<tr>
    					<td><xsl:value-of select="nom"/></td>
    					<td><xsl:value-of select="prenom"/></td>
    					<td><xsl:value-of select="appreciation"/></td>
     
    				</tr>
    				</xsl:for-each>	
     
    		</table>
    	</xsl:for-each>	
    	</body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    Merci pour ton aide. Oui ainsi c'est mieux mais je dois vraiment comprendre comment faire un tableau de ce type, c'est à dire première colonne avec chacune des classes et les trois autres avec les élèves, sachant que le nombre d'élèves par classe est différent et que donc le rowspan doit varier pour chaque classe; et ça je ne sais pas comment le faire. Si quelqu'un à la solution. Je pensais définir le rowspan en fonction de la classe qui a le plus d'élèves et pour les autres classes trouver (est-ce que ça existe ?) une façon de supprimer la ou les lignes vides, ainsi on afficherait pour les classes M1 et M2, 4 élèves et pour la classe M3, 5 élèves, avec un rowspan de la colonne 1 à 6. Est-ce possible ? Comment faire ?
    Merci de votre aide.
    Bon week end

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    Personne pour m'aider ?
    Voilà le tableau que j'obtiens (pièce jointe).
    La dernière ligne n'est pas bonne, elle devrait se trouver dans M3 mais comme j'ai défini un rowspan à 5, ça marche pour M1 et M2 mais pas M3.
    Comment faire ?
    Est-ce qu'une commande comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <xsl:param name="cnt" select="count(classe/eleve)"/>	
    <td rowspan="{$cnt}"><xsl:value-of select="nom_classe"/></td>
    pourrait marcher ? Mais comment l'appliquer dans le fichier xsl ? J'ai fait plusieurs essais sans succès.
    Merci de votre aide, c'est super urgent et important.
    Bonne soirée
    Images attachées Images attachées

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    XSL est un peu limité, pq ne pas utiliser un langage de programmation(java/jdom, php/dom ...)?

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Projet : Mise en place d'une solution avec XML/XSL
    Par kokogil dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 25/06/2008, 08h59
  3. [Smarty] Fonctionnement et lien avec XML/XSL
    Par skrenit0 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 23/05/2006, 10h30
  4. [XML][XSL][FOP] transformation xml avec fop
    Par Le Marlou dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 05/12/2003, 16h58
  5. Tree View avec XML et XSL
    Par Drooxy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/04/2003, 10h21

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