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 :

[Firefox]Erreur lors de la transformation XLST : (null)


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Par défaut [Firefox]Erreur lors de la transformation XLST : (null)
    Bonjour tout le monde

    Je suis tout neuf dans l'utilisation de cette technologie, et je rencontre le probleme suivant:

    Je déclare une variable qui est égale à la valeur de l'element Category dans mon xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              <xsl:value-of select="Category"/>
              <xsl:variable name="currentCat" select="Category"/>
    Puis, plus bas dans le xsl, je pose une condition sur cette variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
              <xsl:if test="Category=$currentCat">
    J'obtiens alors la résultat attendu sous IE, mais sous FireFox j'ai l'erreur:
    Erreur lors de la transformation XLST : (null)

    Apparemment due à la variable $currentCat dans le xsl:if

    Connaissez vous la syntaxe qui permettrait de faire fonctionner cela sur les 2 browser?

    Merci d'avance
    K.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Par défaut
    Vraiment personne n'a d'idée sur ce probleme ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Par défaut
    Les variables sont des élément de haut niveau, elles se déclarent sous la racine <xsl:stylesheet>. C’est peut-être ça.
    Et quel est l’intérêt de <xsl :value-of select= "Category "/> ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Par défaut
    Merci pour ta réponse.

    En fait voici un extrait de mon 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
     
    <Version Num="next_version">
      <CL Change="22363">
        <Comment>
          <Category>bugfix</Category>
          <Product>unknown</Product>
          <Fixes>777 6666</Fixes>
          <Desc> machin</Desc>
        </Comment>
        <Comment>
          <Category>codeImprovement</Category>
          <Product>AFX</Product>
          <Product>AnimMorph</Product>
          <Product>AnimTools</Product>
          <Fixes>888</Fixes>
          <Desc> nouveau test</Desc>
        </Comment>
      </CL>
      <CL Change="22286">
        <Comment>
          <Category>crashfix</Category>
          <Product>General</Product>
          <Fixes>unknown</Fixes>
          <Desc> Correction</Desc>
        </Comment>
      </CL>
    Et donc je voudrais afficher le résultat classé par Category, puis par Product:
    Category
    --- Product
    ------ Change
    ------ Fixes
    ------ Desc

    C'est pour cela que je place cette variable à cet endroit car je veux sauvegarder la valeur de l'element Category pour m'en resservir plus loin dans un autre "filtre".
    Pour etre plus précis, voici mon XSL (épuré de tout ce qui concerne la mise en forme html):

    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
     
    <xsl:key name="cat" match="Version/CL/Comment" use="Category" />
    <xsl:key name="prod" match="Version/CL/Comment" use="Product" />
     
        <xsl:for-each select="CL/Comment[generate-id()=generate-id(key('cat',Category))]">
          <xsl:sort select="Category" />     
              <xsl:value-of select="Category"/>
              <xsl:variable name="currentCat" select="Category"/>    
     
              <xsl:for-each select="key('cat',Category)">
                  <xsl:for-each select="(.)[generate-id()=generate-id(key('prod',Product))]">  
                    <xsl:sort select="Product" />
                    <xsl:value-of select="Product"/>
                  </xsl:for-each>
                      <xsl:for-each select="key('prod',Product)">
                      <xsl:if test="Category=$currentCat">
                          <xsl:value-of select="(..)/@Change"/>
                          <xsl:value-of select="Fixes"/>
                          <xsl:value-of select="Desc"/>                    
                      </xsl:if>
                      </xsl:for-each>
              </xsl:for-each> 
          </xsl:for-each>
    Je trie donc d'abord par Category, puis pour chacune de ces Category, je classe par Product.
    Mais je suis super débutant là-dedans, donc y'a surement une facon plus "classe" de faire ca. Je prends tous les conseils

    Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Par défaut
    Si je comprends bien ta variable est déclarée dans la boucle for-each ? c’est ça ?
    Si oui, le pbm vient peut-être de là.
    Il faut la déclarer plus haut, juste sous la racine.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Par défaut
    Je veux bien, mais dans ce cas comment je dois faire pour stocker la valeur courante de l'element Category afin de pouvoir le réutiliser plus loin? En gros ma question est: est- il possible de changer la valeur d'une variable en cours de route?

    Parce que actuellement, je fais mon fore-each pour récupérer les elements Category, je stocke la valeur de la Category et je refais un for-each sur les elements Product en fonction de ma variable sauvegardée

    Merci beaucoup!!

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/03/2012, 10h38
  2. Réponses: 1
    Dernier message: 01/06/2011, 14h12
  3. Réponses: 20
    Dernier message: 28/08/2008, 10h15
  4. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16
  5. [VB6] Erreur lors de l'ouverture d'un document Word
    Par Marco le Pouillot dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/01/2003, 09h30

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