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] Expression must evaluate to a node-set


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut [XSL] Expression must evaluate to a node-set
    J'ai lu une dicsussion sur cette erreur sur le forum mais elle ne ma pas apportée de réponse ...

    j'ai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:template match="@Id | @Serie">
    <xsl:apply-templates select="concat(@Id,@Serie)" />
    </xsl:template>
    et biensur cette erreur :

    ERROR: Description: Expression must evaluate to a node-set.
    -->concat(@Id,@Serie)<--

  2. #2
    Membre chevronné

    Inscrit en
    Août 2005
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 220
    Par défaut apply-template
    XSL ne peut appliquer une template que sur un noeud existant dans le fichier xml. Y-a-t-il un noeud qui comprend ta conacténation ?

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut
    Euh non ...
    Je voulais que le @Id devienne le resultat de la concatenation de l'ancien @Id et @Serie

    J'avoue ne pas tres bien connaitre le xsl ...

  4. #4
    Membre chevronné

    Inscrit en
    Août 2005
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 220
    Par défaut must evaluate
    Si ton but est de voir apparaître ton "nouveau" id, tu choisis <xsl:value-of select="concat(@id,@serie)"> plutôt qu'un <xsl:apply-template>

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut
    En effet ca concatene proprement sauf qu'en ecrivant ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template match="SEG" >
     
      <xsl:attribute name="Id">
         <xsl:value-of select="concat(@Id,@Serie)"/>
       </xsl:attribute>
     
    </xsl:template>
    Mais tous les attributs se trouvant dans la balise <SEG> disparaisse
    Je ne sais pas quoi mettre comme attribut au "<xsl:template>pour pouvoir les conserver tout en fesant ma concatenation

    Ca marche en fesant un truc crados genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsl:template match="SEG" >
     
    <xsl:attribute name="1"><xsl:value-of select="@1"/></xsl:attribute>
    <xsl:attribute name="2"><xsl:value-of select="@2"/></xsl:attribute>
    <xsl:attribute name="Id"><xsl:value-of select="concat(@Id,@Serie)"/>
                                      </xsl:attribute>
    <xsl:attribute name="3"><xsl:value-of select="@3"/></xsl:attribute>
     
    </xsl:template>
    Mais c'est pas heureux ... qu'en penses tu ? une autre solution existe -elle ?

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Citation Envoyé par xmarabout
    XSL ne peut appliquer une template que sur un noeud existant dans le fichier xml. Y-a-t-il un noeud qui comprend ta conacténation ?
    Faux.
    XSLT se moque de savoir si un noeud existe ou non , mais le resultat d'une concaténation est un string pas un noeud(node-set) et on ne peut appliquer un template (attribut match d'un xsl:template, select d'un xsl:apply-templates) que sur des types noeuds

  7. #7
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut
    Bon impec

    en fesant ca, ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:template match="SEG" >
     
    <xsl:copy-of select="@1 | @2 | @3 | @4 | @5"/>
    <xsl:attribute name="IdTypeMateriel"><xsl:value-of select="concat(@IdTypeMateriel,@SerieMateriel)"/></xsl:attribute>
     
    <xsl:copy-of select="@6"/>
    </xsl:template>
    Mais n'y a t il pas moyen de faire un sauf @...
    comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:template match="SEG" >
    
    <xsl:copy-of select="@* sauf @..."/>
    <xsl:attribute name="IdTypeMateriel"><xsl:value-of select="concat(@IdTypeMateriel,@SerieMateriel)"/></xsl:attribute>
    
    <xsl:copy-of select="@6"/>
    </xsl:template>

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    ceci parexemple : ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut
    euh ca ne marche pas ... ou je ne comprend pas la syntaxe

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

Discussions similaires

  1. case expressions must be constant expressions
    Par semaj_james dans le forum Langage
    Réponses: 9
    Dernier message: 17/07/2007, 17h28
  2. [XSLT]Atteindre un node set dans xsl:param
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/10/2006, 11h21
  3. Réponses: 5
    Dernier message: 31/07/2006, 14h42
  4. [XSL] Expression must evaluate to a node-set.
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 27/04/2006, 14h04
  5. [XSLT] 2.0 et variables node-set
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/01/2006, 17h01

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