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 :

Questionnaire à réaliser avec XSL et XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier Avatar de olive.m
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 163
    Points : 121
    Points
    121
    Par défaut Questionnaire à réaliser avec XSL et XML
    Bonjour à tous !

    Je dois réaliser un questionnaire au moyen de XML et XSL.

    C'est la première fois que j'utilise ces deux là.
    J'ai implémenté un code mais à l'affichage la question s'affiche deux fois alors que je souhaite qu'elle ne s'affiche qu'une fois !
    Voici le code:

    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <?xml-stylesheet href="qcm.xsl" type="text/xsl" ?>
     
    <qcm matiere="qi">
     
      <question>
         <libellé> Trouver le domino manquant. </libellé>
         <imgsrc> imgXml/1.bmp </imgsrc>
         <choix score="1"> 4 - 2 </choix>
         <choix score="0"> 6 - 4 </choix>
         <choix score="0"> 2 - 4 </choix>
      </question>
     
      <question>
         <libellé> Quel est le carré qui suit la ligne ? </libellé>
         <imgsrc> imgXml/2.bmp </imgsrc>
         <choix score="0"> 1 </choix>
         <choix score="1"> 2 </choix>
         <choix score="0"> 3 </choix>
      </question>
     
      <question>
         <libellé> Trouver les deux nombres qui manquent. </libellé>
         <imgsrc> imgXml/3.bmp </imgsrc>     
         <choix score="0"> 6.5 </choix>
         <choix score="0"> 7.8 </choix>
         <choix score="1"> 7.7 </choix>
      </question>
     
      <question>
         <libellé> Tenter de résoudre cette analogie. </libellé>
         <imgsrc> imgXml/4.bmp </imgsrc>     
         <choix score="1"> A </choix>
         <choix score="0"> E </choix>
         <choix score="0"> H </choix>
      </question>
     
    </qcm>
    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
    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
    80
    81
    82
    83
    <?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="html" encoding="ISO-8859-1" />
     
    <xsl:template match="/">
       <html>
        <head>
           <title> <xsl:value-of select="@matiere"/> </title>
        </head>
     
           <body bgcolor="skyblue">
           <center>
           	  <table border="9" cellsspacing="3" cellpadding="6" width="700" bgcolor="skyblue">     	  
           	    <td><img src="imgXml/logo.jpg"/></td>
    	    <td> <center> <h1> <font color="darkblue"> Questionnaire pour neuneus </font> </h1> </center> </td>
           	    <td><img src="imgXml/logo.jpg"/></td>
           	  </table>
           	</center>
     
              <form action="...">
                 <xsl:apply-templates/>
                <br/> <br/> <center> <input type="submit" value="Résultats du test" /> </center>
              </form>
           </body>
       </html>
    </xsl:template>
     
    <xsl:template match="question">
     
        <br/>
        <center>
     
           	<table border="1" cellsspacing="3" cellpadding="6" width="500" bgcolor="skyblue">
           	    	<tr>
           	    		<td>   
           	    			<center>    	  
        					<h3><font color="darkblue"><xsl:value-of select="libellé"/></font></h3>
        				</center>
        			</td>
    		</tr>
    	</table>
           	<table border="1" cellsspacing="3" cellpadding="6" width="500" bgcolor="skyblue">		
    		<tr>
        			<td>
        				<img>
          					<xsl:attribute name="src">
          					<xsl:value-of select="imgsrc"/>
          					</xsl:attribute>
        				</img>
        			</td>
        			<td>
        				<xsl:apply-templates/>
        			</td>
        		</tr>
        	</table>
        	<br/>
    	</center>         
    </xsl:template>
     
     
     
    <xsl:template match="choix">
       <br/>
       <input type="radio"> 
          <xsl:attribute name="name">
          <xsl:value-of select="concat('Q',count(preceding::question)+1)"/>
          </xsl:attribute>
     
          <xsl:attribute name="value">
          <xsl:value-of select="count(preceding::choix)+1"/>
          </xsl:attribute>      
       </input>
     
       <xsl:value-of select="."/>
     
     
    </xsl:template>
     
     
     
     
    </xsl:stylesheet>
    Voilà !

    Si quelqu'un a la solution je le remercie !

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    c'est parce que dans le template qui match "question" tu affiche manuellement l'image et le libellé et ensuite tu fais "<xsl:apply-templates/>" qui re-traite ces balises

    ce que tu doit faire c'est des templates séparés pour toutes les balises

    autre chose à changer : n'utilise pas des tables pour ta mise en page, utilse plutot des "div" c'est beaucoup plus souple

  3. #3
    Membre régulier Avatar de olive.m
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 163
    Points : 121
    Points
    121
    Par défaut
    Merci, je vais tester ce soir.

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 42
    Points
    42
    Par défaut Changements
    Salut,

    Voilà ton fichier Xsl modifié :

    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
     
    <?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="html" encoding="ISO-8859-1" /> 
     
    <xsl:template match="/"> 
    <html> 
    <head> 
    <title> <xsl:value-of select="@matiere"/> </title> 
    </head> 
     
    <body bgcolor="skyblue"> 
    <center> 
    <table border="9" cellsspacing="3" cellpadding="6" width="700" bgcolor="skyblue"> 
    <td><img src="imgXml/logo.jpg"/></td> 
    <td> <center> <h1> <font color="darkblue"> Questionnaire pour neuneus </font> </h1> </center> </td> 
    <td><img src="imgXml/logo.jpg"/></td> 
    </table> 
    </center> 
     
    <form action="..."> 
    <xsl:apply-templates select="//question"/>
    <br/> <br/> <center> <input type="submit" value="Résultats du test" /> </center> 
    </form> 
    </body> 
    </html> 
    </xsl:template> 
     
    <xsl:template match="question">
     
    <br/> 
    <center> 
     
    <table border="1" cellsspacing="3" cellpadding="6" width="500" bgcolor="skyblue"> 
    <tr> 
    <td><br/> 
    <center> 
    <h3><font color="darkblue"><xsl:value-of select="libellé"/></font></h3> 
    </center> 
    </td> 
    </tr> 
    </table> 
    <table border="1" cellsspacing="3" cellpadding="6" width="500" bgcolor="skyblue"> 
    <tr> 
    <td width="100">
    <img> 
    <xsl:attribute name="src"> 
    <xsl:value-of select="imgsrc"/> 
    </xsl:attribute> 
    </img> 
    </td> 
    <td width="400">
    <xsl:apply-templates select="choix"/>
    </td> 
    </tr> 
    </table> 
    <br/> 
    </center> 
    </xsl:template> 
     
    <xsl:template match="choix">
    <br/>
    <input type="radio"> 
    <xsl:attribute name="name"> 
    <xsl:value-of select="concat('Q',count(preceding::question)+1)"/> 
    </xsl:attribute> 
     
    <xsl:attribute name="value"> 
    <xsl:value-of select="count(preceding::choix)+1"/> 
    </xsl:attribute> 
    </input> 
     
    <xsl:value-of select="."/> 
     
    </xsl:template> 
     
    </xsl:stylesheet>
    J'ai fixé également les largeurs des 2 cellules du tableau à 100 et 400.

    Zoltar.
    Co-rédacteur du site : www.atelierweb.ma (IE only)

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 35
    Points : 42
    Points
    42
    Par défaut Cellspacing
    Il faut aussi supprimer un 's' de

    Il n'en contient qu'un seul.
    Co-rédacteur du site : www.atelierweb.ma (IE only)

Discussions similaires

  1. Mise en page XML avec XSL et XML externe
    Par snopims dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/08/2011, 15h57
  2. Probléme cache avec IE et XML/XSL coté client.
    Par rataflo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 06/08/2005, 19h06
  3. [débutant]XML vers XML avec XSL
    Par tokamak dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/07/2005, 10h27
  4. XML vers XML avec XSL
    Par guizz79 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2005, 09h43
  5. generer xsl depuis xml avec balises inconues ?
    Par cedre dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 24/06/2003, 09h00

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