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]Valeur d'un call-template en paramètre with-param


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut [XSL]Valeur d'un call-template en paramètre with-param
    Bonjour,

    J'ai un template qui prend comme paramètre la valeur d'un autre template.
    Un peu comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:call-template name="T1">
     <xsl:with-param name="P1">
      <xsl:call-template name="ST"><xsl:with-param name="STP1" select="@attr"/></xsl:call-template>
     </xsl:with-param>
    </xsl:call-template>
    Mais j'ai parfois des erreurs à l'exécution que je ne parvient pas à isoler.
    Merci

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    c'est un cas de figure assez courant, qui ne pose pas de problèmes particuliers en principe...

    Maintenant, si tu n'apportes pas plus de précisions il va nous être difficile de t'aider.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Merci.
    Je crois savoir où il y a une erreur d'exécution, c'est dans une fonction javascript appelée dans T1. Mais l'erreur a vraisemblablement lieu à cause du paramètre P1.

    Voici le template ST:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xsl:template name="ST">
    <xsl:param name="STP1"/>
    <xsl:value-of select="concat(ancestor-or-self::node[@value]/@value,'/',$STP1)"/>
    </xsl:template>
    Avant que je ne change le code pour y ajouter le template ST, voici ce que j'avais et qui ne plante pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:call-template name="T1">
     <xsl:with-param name="P1" select="concat(ancestor-or-self::node[@value]/@value,'/',@attr)"/>
    </xsl:call-template>
    En bref, est-ce que la valeur du paramètre P1 diffère suivant l'une ou l'autre méthode?

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Je devine la nuance entre les deux:
    Le template ST renvoit un "noeud" et non pas un "string", noeud qui sera passé en paramètre au template T1.

    Comment faire pour que la valeur retournée par le template ST soit un string et non pas un noeud?

  5. #5
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    ben tu met une valeur dans ton select au lieu de ton noeud????


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:with-param name="P1" select="concat('toto', ' a fait une bétise')"/>
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Tu n'as pas compris le problème: comment faire pour qu'un template renvoit un 'string'?

    Je constate que le template ci-après renvoit un 'noeud', ce qui ne me convient pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xsl:template name="ST">
    <xsl:param name="STP1"/>
    <xsl:value-of select="concat(ancestor-or-self::node[@value]/@value,'/',$STP1)"/>
    </xsl:template>
    C'est la valeur de ce template qui sera ensuite passé en paramètre à un autre template.

Discussions similaires

  1. [XSL-FO] Passage de paramètre utilisé dans un call-template
    Par stujava dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 04/03/2015, 10h18
  2. [XSLT] utilisation de <xsl:call-template>/compteur xsl
    Par ogn dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 05/02/2008, 10h22
  3. [XSLT] Call-template question de débutant
    Par ben23 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/07/2006, 00h20
  4. [XSLT] Différence entre apply-templates et call-template
    Par Cpt.FLAM dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/04/2005, 18h47
  5. différence call-template et apply-templates
    Par mousstik dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 08/11/2004, 12h28

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