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 :

[XSLT] erreur incompréhensible


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 55
    Points
    55
    Par défaut [XSLT] erreur incompréhensible
    Bonjour,

    J'ai un petit problème avec du code XSL.
    Je suis débutant à ce niveau et ne comprends pas tout.
    Néanmoins il me semblait que mon code était plutôt bon.
    j'ai un XML parfaitement valide qui contient:
    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
    <Metiers Name='Metiers'>
          <Metier Name='Software' Order='1'></Metier>
          <Metier Name='Validation' Order='2'></Metier>
          <Metier Name='Hardware' Order='3'></Metier>
          <Metier Name='Project' Order='1'></Metier>
          <Metier Name='Integration' Order='2'></Metier>
          <Metier Name='System Test' Order='3'></Metier>
          <Metier Name='Technical Support' Order='1'></Metier>
          <Metier Name='Marketing' Order='2'></Metier>
          <Metier Name='Quality' Order='3'></Metier>
          <Metier Name='Subcontracter' Order='1'></Metier>
          <Metier Name='Client' Order='2'></Metier>
          <Metier Name='Architecture' Order='3'></Metier>
          <Metier Name='Tools' Order='1'></Metier>
        </Metiers>
    je veux créer une table qui contient 3 colonne avec des <select>
    (d'où les Order pour ordonner les lignes/colonnes
    je fais donc:
    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
      <table>
      <tr align="left">
      <xsl:template match="Metiers">
         <xsl:for-each select="Metier">
           <xsl:if test="@Order='3'">
             </tr><tr align="left">
           </xsl:if>
    	<xsl:choose>
    	  <xsl:when test="$InputFile/Review/Metiers/Metier[@Name=$Name]='N'">
    	     <td style="font-size:10pt;font-weight:bold">@Name</td>
    	     <td>
    	     <select id="@Name" name="@Name" style="font-size:8pt">
    	     <option value="N" selected></option>
    	     <option value="Y">Yes</option>
    	     </select>
    	     </td>
              </xsl:when>
    	  <xsl:when test="$InputFile/Review/Metiers/Metier[@Name=$Name]='Y'">
    	    <td style="font-size:10pt;font-weight:bold">@Name</td>
    	    <td>
    	    <select id="@Name" name="@Name" style="font-size:8pt">
    	    <option value="N"></option>
    	    <option value="Y" selected>Yes</option>
    	    </select>
    	    </td>
              </xsl:when>
    	</xsl:choose>
         </xsl:for-each>
      </xsl:template>
    </tr>
    </table>
    ce qui me semble logique...

    $inputFile est un fichier XML contenant une sauvegarde du formulaire.
    Que l'on veut récupérer en construisant le <select>
    Pour le code qui nous intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <Metier Name='Software'>Y</Metier>
    <Metier Name='Project'>Y</Metier>
    <Metier Name='System Test'>N</Metier>
    <Metier Name='Technical Support'>N</Metier>
    <Metier Name='Subcontracter'>N</Metier>
    or j'ai l'erreur suivante:
    Fatal Error at (file /.../fic.xsl, line 294, column 32): Expected end of tag 'xsl:if'
    SAXParseException Message is: Expected end of tag 'xsl:if' (/.../fic.xsl, line 294, column 32)
    qui correspond à la ligne en rouge.

    Tout le reste du xls fontionne.
    Si je supprime le code écrit ci-dessus, j'ai mon document.

    Je ne vois pas d'où vient l'erreur.

    Quelqu'un la voit-il?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    c'est parce que tu fermes une balise avant qu'elle ne soit ouverte (le <tr>)

  3. #3
    Membre du Club Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 55
    Points
    55
    Par défaut
    merci beaucoup pour votre réponse.
    Mais dans le cas ou je supprime ce formattage particulier je tombe sur une autre erreur:
    Fatal Error at (file /.../fic.xsl, line 279, column 32): Expected equal sign

    SAXParseException Message is: Expected equal sign (/.../fic.xsl, line 279, column 32)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <xsl:when test="$InputFile/Review/Metiers/Metier[@Name=$Name]='Y'">
    	    <td style="font-size:10pt;font-weight:bold">@Name</td>
    	    <td>
    	    <select id="@Name" name="@Name" style="font-size:8pt">
    	    <option value=""></option>
    	    <option value="Y" selected>Yes</option>
    	    <option value="N">No</option>
    	    <option value="NA">N/A</option>
    	    </select>
    	    </td>
              </xsl:when>
    merci pour votre aide
    Amicalement
    Gojira

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    et si tu met quelque chose dans le value=""? (un caractere ou essaye un espace)

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 28
    Points : 21
    Points
    21
    Par défaut
    salut,

    <option value=""></option>
    tu ne renseigne pas ta "value="???"" si c'est un oublie ok
    mais sinon ta ligne ne sert à rien.

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Utilise :
    <xsl:text disable-output-escaping="yes">...</xsl:text>

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    et remplace :
    < par &lt;
    > par &gt;

  8. #8
    Membre du Club Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 55
    Points
    55
    Par défaut
    @atoila >> non ce n'est pas un oubli c'est pour rajouter une ligne vide.
    Car par souci de compatibilité si les champs des anciens XML n'existant pas sont appelé, je veux qu'il y ait affiché une ligne vide
    Pourquoi? C'est pas la bonne méthode?

    @Mamath >> à quoi sert le disable output escaping?
    Je ne le mets que sur ma ligne en question?


    Merci à tous pour votre aide.
    Amicalement
    Gojira

  9. #9
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    as tu essayé ce que je t'ai dit?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="' '"></option>

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    disable output escaping : active ou desactive le remplacement des caractères spéciaux par leur entité XML.

    ainsi, ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:text disable-output-escaping="yes">
    &lt;/tr&gt;&lt;tr align="left"&gt;
    </xsl:text>
    sera traduit ensuite en :

  11. #11
    Membre du Club Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par valal
    as tu essayé ce que je t'ai dit?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="' '"></option>
    oui... même erreur, même endroit.

    merci beaucoup Mamath... ça régle le 1er problème du </tr><tr ...>
    En ce qui concerne le deuxième dois-je utiliser le même processus?

  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    es-tu sur que l'erreur vient de la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="' '"></option>
    est-ce que ca ne serait pas plutot à cause du selected sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="Y" selected>Yes</option>

  13. #13
    Membre du Club Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 55
    Points
    55
    Par défaut
    C'est bon ça marche.
    Merci pour tout.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP][XSLT] Erreur Bizarre : Balise non fermée (XML mal formé [ndr])
    Par @min@ dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 09/05/2007, 11h06
  2. [XSLT] Erreur partielle - Simplification Code ?
    Par Sam 069 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 13/04/2007, 11h45
  3. [XSLT] Erreur parsing XSLT sur du javascript
    Par michaelbob dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/08/2006, 12h11
  4. [XSLT] erreur avec les fonctions
    Par frouge dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 18/07/2006, 10h15
  5. [XSLT] Erreur de transformation
    Par akaii dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 23/01/2006, 11h58

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