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 :

[XSLT] Utilisation variable template


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    42
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 42
    Par d�faut [XSLT] Utilisation variable template
    Bonjour,
    J'ai un deux templates dans un fichier XSL et je souhaiterai utiliser la variable tu deuxieme template dans le premier :

    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
    <!-- Premier template -->
    <xsl:template match="/home/tables">
    	<xsl:if test="blablabla">
     
                  <xsl:apply-templates />
     
    <xsl:variable name="pos3" select="@a"/>
    <xsl:variable name="pos4" select="@b"/>
    <xsl:variable name="finale1" select="$pos3 + $pos4"/>
     
            </xsl:if>
     </xsl:template>
     
    <!-- Second template -->
    <xsl:template match="home/table/premiere/departement">
     
    <xsl:if test=""> condition if avec un test...
     
         <xsl:variable name="finale2" select="$pos1 + $pos2"/>
     
         </xsl:if>
    </xsl:template>
     
      <xsl:template match="text()"/>
    </xsl:stylesheet>
    donc je souhaiterai utiliser la valeur de la variable "finale2" dans la premiere template (en occurence pouvoir faire la comparasion avec la valeur de "finale1" du premier template). Comment puis je faire ?

    Merci beaucoup

  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
    Par d�faut
    je ne comprends pas trop mais � priori
    1/ tes templates match d une part tables et d autre part table ce qui n est pas la m�me chose
    2/ pourquoi ne pas utiliser les param�tres lors de l appel d un template?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par d�faut
    Hum j'ai �galement le m�me probl�me.

    Comment r�cup�rer la valeur de la variable qui a �t� initialis�e dans le deuxi�me template, dans le premier ? En effet, il est possible de passer une variable du 1er au 2e comme ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xsl:template1 match="/">
    <xsl:apply-templates>
    		<xsl:with-param name="var1" select="$v1"/>
    		<xsl:with-param name="var2" select="$v2"/>
    </xsl:apply-templates>
    </xsl:template1>
     
    <xsl:template2 name="old" match="/">
    	<xsl:param name="var1"/>
    	<xsl:param name="var2"/>
    </xsl:template2>
    Mais comment renvoyer $var1 et $var2 dans <xsl:template1> ?

  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
    Par d�faut
    tu ne recuperes pas dnas template1 puisque tu l as d�ja!

  5. #5
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par d�faut
    LoL merci du conseil, je le retiendrais !

    Je m'explique plus explicitement donc.

    Je veux stocker des valeurs dans template2, les modifier, et ensuite les renvoyer dans template1, mais bien sur que je ne veux pas r�cup�rer exactement les m�mes valeurs ! Il doit y avoir des cas ou on ne peut pas simplement traiter la valeur dans le template1, c'est pour �a que je l'envoie ailleurs pour qu'elle soit trait�e. (ce qui permettrait entre autre de "re-matcher" grace au second template et ainsi de sortir du current node dans template1)

  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
    Par d�faut
    ce dont tu parles c est un peut l equivalent du passage de variable par reference... et bien �a ne marche pas...
    ce que tu peux faire par contre c r�cup�rer un r�sultat qui sera un element contenant deux autres elements qui seront tes param...un peu tordu mais �a devrait marcher...

  7. #7
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par d�faut
    C'est � dire envoyer de template2 a template1 un element contenant mes deux variables modifiees ?

    Ce qui ne m'explique pas comment l'envoyer pr�cis�ment de t2 � t1...
    Mais je pense plutot que je n'ai pas exactement saisi ce que tu me pr�conisais...

    Pourrais-tu me d�crire �a autrement ?

    Merci

  8. #8
    Membre �clair� Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par d�faut
    non ce que je dis (et cela restera a verifier) c que lorsque tu appelles ton template t2, si tu attends 2 valeurs de retour, ce n est pas possible...comme dans n importe quel langage � ma connaissance....
    maintenant le passage par ref ne fonctionne pas non plus donc le seul moyen que je vois c est de creer une variable qui encapsulera le resultat produit dans t2 du genre (et je repete que je n ai pas verifi�)

    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
     
    <xsl:template match="/">
    		<xsl:variable name="res">		
    			<xsl:element name="resultatT2">
    				<xsl:call-template name="t2">
    					<xsl:with-param name="el1" select="'a'"/>
    					<xsl:with-param name="el2" select="'b'"/>
    				</xsl:call-template>
    			</xsl:element>
    		</xsl:variable>
     
    		<xsl:copy-of select="$res"/>
     
    </xsl:template>
     
    <xsl:template name="t2">
    	<xsl:param name="el1"/>
    	<xsl:param name="el2"/>	
     
    	<xsl:element name="el1"><xsl:value-of select="concat($el1,'b')"/></xsl:element>
    	<xsl:element name="el2"><xsl:value-of select="concat($el2,'c')"/></xsl:element>
    </xsl:template>
    par contre, j ai une question au apssage pour les balezes.
    je voudrais savoir pourquoi j ai autant de mal � r�cup�rer des valuers dans $res ...je dois avoir un soucis xpath mais franchement �a n a pas l air compliqu�...et pourtant je n arrive � rien faire...

  9. #9
    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
    Tiscar>>fragment node(), en xslt 1.0 c'est un genre a part, qui ne fonctionne comme un nodeset que avec le sxl:copy-of, autrement c'est une string(balises exclues/ignor�es)

  10. #10
    Membre �clair� Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par d�faut
    je viens d aller faire un tour sur le site du w3c et voici ce que j ai lu concernant les result tree fragment

    In particular, it is not permitted to use the /, //, and [] operators on result tree fragments.

    conclusion, la solution que j ai donn� � notre mai est inutile puisque l on ne peut rien faire au niveau xpath...
    n ayant rien trouv� sur le forum ou le site concernant les divers types de data, je vais reposter une question histoire d eclaircir tout �a..

  11. #11
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    12
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 12
    Par d�faut
    Pour ma part, je retire ma question qui �tait un probl�me de conceptualisation. Le fait qu'avec call ou apply-templates le r�sultat du template appel� soit int�gr� dans le template "principal" fait que ma question est vide de sens

    Merci quand m�me !

Discussions similaires

  1. [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
  2. [XSLT] Import de feuille et utilisation de template
    Par Invit� dans le forum XSL/XSLT/XPATH
    R�ponses: 6
    Dernier message: 15/01/2008, 17h49
  3. R�ponses: 1
    Dernier message: 10/01/2007, 21h52
  4. [XSLT] utilisation d'un template ?
    Par ghohm dans le forum XSL/XSLT/XPATH
    R�ponses: 11
    Dernier message: 11/09/2006, 17h37
  5. [XSLT]utilisation de l'apply template
    Par koudjo dans le forum XSL/XSLT/XPATH
    R�ponses: 2
    Dernier message: 17/07/2006, 13h14

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