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 311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 311
    Points : 15 645
    Points
    15 645
    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.

  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.

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