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

  1. #1
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut [XSL] Expression must evaluate to a node-set.
    bonjour,
    j ai le message d erreur suivant:

    Expression must evaluate to a node-set.

    -->substring-after($tmp,$finTokenAbbrev)<--

    ...ce que je ne comprend pas car j ai bien du texte...
    qq un aurait une explication?

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    voici mon template
    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
    	<xsl:template match="text()" mode="extractElements">
    		<xsl:variable name="debutTokenAbbrev" select="string('&lt;e:Abbreviation')"/>
    		<xsl:variable name="debutTokenAbbrev2" select="string('Ref=&quot;')"/>
    		<xsl:variable name="finTokenAbbrev" select="string('&quot;/&gt;')"/>
    		<xsl:choose>
    			<xsl:when test="contains(.,$debutTokenAbbrev) ">
    				<xsl:variable name="tmp1" select="substring-after(.,$debutTokenAbbrev)"/>
    				<xsl:variable name="tmp" select="substring-after($tmp1,$debutTokenAbbrev2)"/>
    				<xsl:value-of select="substring-before(.,$debutTokenAbbrev)"/>
    				<xsl:element name="e:Abbreviation">
    					<xsl:attribute name="Ref"><xsl:value-of select="substring-before($tmp,$finTokenAbbrev)"/></xsl:attribute>
    				</xsl:element>
    				<xsl:if test="contains($tmp,$finTokenAbbrev)">
    					<!--xsl:apply-templates select="substring-after($tmp,$finTokenAbbrev)" mode="extractElements"/-->
    					<xsl:value-of select="substring-after($tmp,$finTokenAbbrev)"/>
    				</xsl:if>
     
    			</xsl:when>
    			<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
    l arrivée est du text html que je parse pour trouver un tet flag que je transforme... il se trouve que quand je réappelle mon template avec le reste de la chaine...le parseur plante... je ne comprend vraiment pas

  3. #3
    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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Tu ne peux pas faire un apply templates sur une chaine hors c'est le format de sortie d'un substring, tu dois le faire sur un noeud qui contient la chaine à la limite

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    mais je pensais qu une chaîne de caractères était par défaut un noeud de type text()...
    je ne vois donc pas le problème...
    si ce n est pas le cas, y a t il un moyen de transformer une string en text()??

    Au passage j ai corrigé mon problème en nommant mon template et en l appelant avec un paramètre mais cette solution est tout de même bcp plus lourde..

    ps: je sais pas ce que vous avez toi et Grand father avec vos avatars... en même temps c vrai que moi j ai bien changer carrément de pseudo

  5. #5
    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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par luta
    mais je pensais qu une chaîne de caractères était par défaut un noeud de type text()...
    Pas du tout

    Le contenu d'un noeud text() est une chaine de caractères , c'est tout.

    ps: je sais pas ce que vous avez toi et Grand father avec vos avatars...
    Vois pas de quoi tu causes

  6. #6
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    merci bcp,
    je viens de jetter un oeil sur la FAQ xml et pense vraiment qu il serait bon d'y ajouter la différence en text() et string..

  7. #7
    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 : 48
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par luta
    merci bcp,
    je viens de jetter un oeil sur la FAQ xml et pense vraiment qu il serait bon d'y ajouter la différence en text() et string..
    On va reflechir sur cet ajout pour la prochaine version

+ 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 tchoukapi dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 20/06/2006, 14h52
  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