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 :

Transfert Valeur entre 2 templates


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Par défaut Transfert Valeur entre 2 templates
    Bonjour à tous,

    j'ai une question comment peut on transférer une valeur d'un template à un autre template ?
    Ce que je veux faire c'est d'abord stocker dans une variable, la valeur que je récupère dans le premier template. Ensuite dans le deuxième template, je récupére la valeur stocké précédemment afin d'afficher le résultat correspondant à la valeur.

    J'ai essayé d'utiliser un call-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
     
    <xsl:template name="Transf">
       <xsl:param name="T1"/>
    </xsl:template>
     
    <xsl:template match='liste-real/realisateur'>
      <xsl:call-template name="Transf">
         <xsl:if test"realisateur='Allen Woody'">
            <xsl:value-of select="@id"/><xsl:with-param name="T1" select="@id"/>
         </xsl:if>
      </xsl:call-template>
    </xsl:template>
     
    <xsl:template match='liste-film/oeuvre'>
      <xsl:call-template name="Transf">
        <xsl:with-param name="T1"><xsl:value-of select="oeuvre=@id"/></xsl:with-param>
      </xsl:calltemplate>
    </xsl:template>
    Lorsque je veux récupérer la valeur de la variable T1 dans le template avec match="liste-film/oeuvre", il me dit que la variable T1 n'est pas déclaré.

    Je vous remercie par avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Bonjour,

    Déjà, en l'état, ton code n'affiche rien du tout.
    Pour qu'il affiche quelque chose il faudrait écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template name="Transf">
       <xsl:param name="T1"/>
       <xsl:value-of select="$T1"/>
    </xsl:template>
    Après, dans ton template 'liste-film/oeuvre', tu mets dans la variable une valeur booléenne (le resultat du test : est-ce que le contenu de oeuvre/oeuvre est égal au contenu de oeuvre/@id ?). Je doute que ce soit ce que tu veuilles faire.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Par défaut
    Je vous remercie pour la correction.
    Voici le code après modification :
    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
    <xsl:template name="Transf">
       <xsl:param name="T1"/>
       <xsl:value-of select="$T1"/>
    </xsl:template>
     
    <xsl:template match='liste-real/realisateur'>
      <xsl:call-template name="Transf">
         <xsl:if test="realisateur='Allen Woody'">
            <xsl:value-of select="@id"/><xsl:with-param name="T1" select="@id"/>
         </xsl:if>
      </xsl:call-template>
    </xsl:template>
     
    <xsl:template match='liste-film/oeuvre'>
      <xsl:call-template name="Transf">
        <xsl:with-param name="T1"></xsl:with-param>
      </xsl:call-template><xsl:value-of select="oeuvre=$T1"/>
    </xsl:template>
    Par contre pour le transfert de valeur entre les deux templates çà ne marche toujours pas.

  4. #4
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Les syntaxes et les façons d'utiliser les templates nommés sont amplement incorrectes, je suis désolé. Il faut bien consulter les tutoriels beaucoup plus. En plus, les paramètres et les variables ne se persistent pas une fois ils sont hors de portée; et chaque fois ils sont appellés, il faut les initier à nouveau et ils ne changeraient plus comme si ils sont constants...

    Si vous voulez faire une functionalité qu'on appelle grosso modo consultation ("lookup") vous pouvez faire plus simplement comme ça:

    [1] Avec un réalisateur (Allen Woody en particulier, si vous voulez; sinon, laissez tomber le xsl:if) en contexte consultez ses oeuvres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template match='liste-real/realisateur'>
      <xsl:if test"realisateur='Allen Woody'">
        <xsl:for-each select="../oeuvre[@id=current()/@id]">
          <!-- sortir ce que vous voulez de telle oeurvre -->
        </xsl:for-each>
      </xsl:if>
    </xsl:template>
    [2] Avec une oeuvre en contexte, consultez ses réalisateurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match='liste-real/oeuvre'>
      <xsl:for-each select="../realisateur[@id=current()/@id]">
        <!-- sortir ce que vous voulez de tel realisateur -->
      </xsl:for-each>
    </xsl:template>

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Par défaut
    D'accords je vais essayer ça.

    Je vous remercie pour les pistes.

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

Discussions similaires

  1. Transfert de valeur entre formulaires
    Par Sodangbe dans le forum IHM
    Réponses: 2
    Dernier message: 15/12/2006, 17h59
  2. Transfert de Valeurs entre 2 fichiers PHP ?
    Par caviar dans le forum Langage
    Réponses: 4
    Dernier message: 27/04/2006, 12h10
  3. [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
  4. transfert de valeurs entre fonctions js et asp
    Par ericmart dans le forum ASP
    Réponses: 5
    Dernier message: 10/03/2005, 16h18
  5. Passage de valeurs entre fenêtres différentes
    Par Amnesiak dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h10

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