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 :

XSL : Atteindre un element en boucle


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Points : 125
    Points
    125
    Par défaut XSL : Atteindre un element en boucle
    Bonjour,

    Je me bloque dans ce scénario que je n'arrive pas a le reproduire en XSL.

    J'ai un 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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet href="releve_style2.xsl" type="text/xsl"?>
    <releve filiere="RT" niveau="4">
        <etudiant numInscription="E2006-12" nom="scott">
            <module code="INFO33" titre="programmation">
                <controle date="2006-11-11" note="12"/>
                <controle date="2006-12-11" note="16"/>
            </module>
            <module code="RES22" titre="Réseaux">
                <controle date="2006-11-12" note="10"/>
                <controle date="2006-12-12" note="11"/>
            </module>
        </etudiant>
        <etudiant numInscription="E2006-14" nom="tiger">
            <module code="INFO33" titre="programmation">
                <controle date="2006-11-11" note="13"/>
                <controle date="2006-12-11" note="8"/>
            </module>
            <module code="RES22" titre="Réseaux">
                <controle date="2006-11-12" note="18"/>
                <controle date="2006-12-12" note="14"/>
            </module>
        </etudiant>
    </releve>
    Je souhaite faire un rendu HTML en XSL de la forme suivante :

    - Code module : INFO33
    - Titre module : programmation

    un tableau à 2 colonnes (Nom étudiant / Moyenne)
    Nom étudiant | Moyenne
    Scott 14
    Tiger 10.5

    Ma feuille de style est la suivante :

    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" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
        <xsl:output method="html"/> 
    	<xsl:template match="/"> 
            <html>
                <head>
                    <title>Relevés des notes</title>
                </head>
                <body>
     
    	<xsl:for-each select="releve"> 
    			<xsl:for-each select="etudiant"> 
    				<xsl:for-each select="module"> 
    					<li>Code module : <xsl:value-of select="@code"/> </li>
    					<li>Titre module : <xsl:value-of select="@titre"/> </li>
    				</xsl:for-each> 
    				<table border="1" width="60%">
    					<tr>
    						<td width="70%" bgColor="yellow" align="center"><b>Nom etudiant</b></td>
    						<td width="30%" bgColor="yellow" align="center"><b>Moyenne</b></td>
    					</tr>
    					<xsl:for-each select="/"> 
    					<tr>
    						<td><xsl:value-of select="@nom"/> </td>
    						<td><xsl:value-of select="sum(module/controle/@note)"/> </td>
    					</tr>
    					</xsl:for-each> 
    				</table>
    			</xsl:for-each>
    		<br/><br/>
     
    	</xsl:for-each> 
     
                </body>
            </html>
    	</xsl:template>
    </xsl:stylesheet>
    Ma question : Je ne vois pas comment je peux avoir les élément Module non double avec le Étudiant de chaque module et je n'arrive pas à imaginer comment je doit procéder dans la boucle pour à la fois regrouper les module et voir le niveau supérieur qui est Étudiant pour avoir ces infos.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    il s'agit d'un problème typique de regroupement. C'est décrit dans la FAQ, et si tu souhaites avoir plus d'exemples et de précisions je te suggère de rechercher dans le forum en utilisant les mots « doublons », « regroupement » ou encore « muench ».
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. [XSLT] Atteindre un element sous condition:passage de parametre
    Par belool dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 15/04/2008, 09h16
  2. [DOM] atteindre l'element #text du DOM
    Par heyboy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/03/2007, 13h55
  3. [XSLT] Probleme <xsl:if test=" element = $param "> !
    Par billynirvana dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/03/2007, 14h49
  4. [XML][XSL]Comment atteindre ces 2 header séparément?
    Par Devil666 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 27/05/2005, 07h36
  5. [XSL]boucle imbriquée avec condition
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/01/2005, 14h19

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