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 :

Utilisation de template dans un role de fonctions/procedures


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Utilisation de template dans un role de fonctions/procedures
    Je suis sous Tomcat/Xalan et je dois mettre à jour des sorties PDF via XSL:FO. Je d"couvre le XSL et patauge pas mal mais bon, je commence a comprend le principe.

    Mainetnant mon soucis est le suivant : j'ai continuellement besoin de veriffier l'existance de données pour décider d'aaficher ou non un contenu dans ces données, exemple :

    HTML :
    <ListeMoyCom>
    <MoyCom>
    <Id_Telecom>C1</Id_Telecom>
    <Coord_Com>01 40 95 09 34</Coord_Com>
    </MoyCom>
    <MoyCom>
    <Id_Telecom>C2</Id_Telecom>
    <Coord_Com>01 40 91 12 33</Coord_Com>
    </MoyCom>
    <MoyCom>
    <Id_Telecom>C6</Id_Telecom>
    <Coord_Com>06 03 48 25 32</Coord_Com>
    </MoyCom>
    <MoyCom>
    <Id_Telecom>C4</Id_Telecom>
    <Coord_Com>blabla@google.com</Coord_Com>
    </MoyCom>
    <MoyCom>
    <Id_Telecom>C5</Id_Telecom>
    <Coord_Com>http://www.google.com</Coord_Com>
    </MoyCom>
    </ListeMoyCom>

    XSL :

    La partie appellant la template :

    <xsl:call-template name="ecrit_champs_test" >
    <xsl:with-param name="champs">Téléphone :</xsl:with-param>
    <xsl:with-param name="noeud" select="//MoyCom"/>
    <xsl:with-param name="var" select="/Id_Telecom"/>
    <xsl:with-param name="tag" select="C1"/>
    <xsl:with-param name="valeur" select="/Coord_Com"/>
    </xsl:call-template>



    La template qui me sert de procédure :

    <!-- ========================================================================================== -->
    <xsl:template name="ecrit_champs_test">
    <!-- ========================================================================================== -->
    <xsl:param name="champs"/>
    <xsl:param name="noeud"/>
    <xsl:param name="var"/>
    <xsl:param name="tag"/>
    <xsl:param name="valeur"/>
    <fo:table>
    <fo:table-column column-width="35mm"/>
    <fo:table-column/>
    <fo:table-body>
    <fo:table-row>
    <fo:table-cell>
    <fo:block font-size="10pt">
    <xsl:value-of select="$champs"/>
    </fo:block>
    </fo:table-cell>
    <fo:table-cell background-color="#EEEEEE" padding="1mm">
    <fo:block font-size="10pt">
    <xsl:text disable-output-escaping="yes">&amp;#160;</xsl:text>
    j'ai : "<xsl:value-of select="$var"/>" = "<xsl:value-of select="$valeur"/>"
    <xsl:for-each select="$noeud">
    On test : "<xsl:value-of select="$var"/>" = "<xsl:value-of select="$valeur"/>"
    <xsl:if test="$var[text()=&apos;$tag&apos;]">
    <xsl:value-of select="$valeur"/>
    </xsl:if>
    </xsl:for-each>
    </fo:block>
    </fo:table-cell>
    </fo:table-row>
    </fo:table-body>
    </fo:table>
    <fo:block padding-top="2mm"/>
    </xsl:template>





    Evidement ca fonctionne pas, car la ligne
    "<xsl:value-of select="$var"/>" = "<xsl:value-of select="$valeur"/>"

    Ne permet pas de recuperer les enfants du node-set je suppose mais je ne comprend pas la syntaxe a utiliser...

    En plus j'essaye d'utiliser xalan:nodeset et ca ne veut pas fonctionner, ca me dit que c'est une fonction inconnue ou un truc du genre...

    Bref aidez moi, j'ai pas envi de me taper à la main quelque chose comme 200 champs de ce genre à coder betement !!!!!

  2. #2
    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 : 47
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="$var=$valeur">
    ....
    </xsl:if>
    voir aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:choose>
    <xsl:when test="">
       ...
    </xsl:when>
    <xsl:when test="">
      ...
    </xsl:when>
    ......
    <xsl:otherwise>
       ...
    </xsl:otherwise>
    </xsl:choose>
    quand il y a plusieur cas

  3. #3
    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
    Bon, on va procéder dans l'ordre :

    1) ce serait sympa d'indenter ton code et d'utiliser les balises BBCode
    2) pourrais-tu joindre un échantillon du résultat attendu ? Parce qu'il me semble qu'un call-template ne s'impose pas dans ton cas.
    3) xalan:nodeset est une extension de xalan, il faut faire certaines déclarations pour pouvoir l'utiliser. Je ne serais pas plus précis pour l'instant, car à mon avis son utilisation n'est pas requise ici.

    Merci pour le vieux développeur que je suis...
    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

  4. #4
    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 : 47
    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
    est ce que tu voudrais dire qu'il y a plusieurs noeuds dans ton $var et $valeur et qu'elle doivent toutes correspondre? Ou que les 2 parametres pointent sur les mêmes noeuds?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Suis pas trop habitué aux forums mais je vais tacher de mieux faire.

    Donc, à partir de l'XML suivant :

    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
    			<ListeMoyCom>
    				<MoyCom>
    					<Id_Telecom>C1</Id_Telecom>
    					<Coord_Com>01 40 95 09 34</Coord_Com>
    				</MoyCom>
    				<MoyCom>
    					<Id_Telecom>C2</Id_Telecom>
    					<Coord_Com>01 40 91 12 33</Coord_Com>
    				</MoyCom>
    				<MoyCom>
    					<Id_Telecom>C6</Id_Telecom>
    					<Coord_Com>06 03 48 25 32</Coord_Com>
    				</MoyCom>
    				<MoyCom>
    					<Id_Telecom>C4</Id_Telecom>
    					<Coord_Com>blabla@google.com</Coord_Com>
    				</MoyCom>
    				<MoyCom>
    					<Id_Telecom>C5</Id_Telecom>
    					<Coord_Com>http://www.google.com</Coord_Com>
    				</MoyCom>
    			</ListeMoyCom>
    Je veux afficher les moyens de communication, actuellement pour CHACUN D'EUX je dois faire ca :

    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
    							<fo:table>
    								<fo:table-column column-width="35mm"/>
    								<fo:table-column/>
    								<fo:table-body>
    									<fo:table-row>
    										<fo:table-cell>
    											<fo:block font-size="10pt">Téléphone :</fo:block>
    										</fo:table-cell>
    										<fo:table-cell background-color="#EEEEEE" padding="1mm">
    											<fo:block font-size="10pt">
    												<xsl:text disable-output-escaping="yes">&amp;#160;</xsl:text>
    												<xsl:for-each select="//MoyCom">
    													<xsl:if test="Id_Telecom[text()=&apos;C1&apos;]">
    														<xsl:value-of select="Coord_Com"/>
    													</xsl:if>
    												</xsl:for-each>
    											</fo:block>
    										</fo:table-cell>
    									</fo:table-row>
    								</fo:table-body>
    							</fo:table>

    Et cela pour CHAQUE CHAMPS, ca fait beaucoup de code non ?
    Alors moi, qui viens du monde du loangage procédural, je me dis : yaura pas un moyen de faire appel a des procédures ? Donc je découvre les templates et je voudrais que ca donne quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    							<xsl:call-template  name="ecrit_champs_test" >
    								<xsl:with-param name="champs">Téléphone :</xsl:with-param>
    								<xsl:with-param name="noeud" select="//MoyCom"/>
    								<xsl:with-param name="var" select="Id_Telecom"/>
    								<xsl:with-param name="tag" select="C1"/>		
    								<xsl:with-param name="valeur" select="Coord_Com"/>		
    							</xsl:call-template>
    Et cela pour l'exemple du téléphone, je duplique ensuite ces appels pour chaque moyen de comm (oui, ma question suivante sera comment mettra ca dans une boucle depuis une énumération...)

    ET DONC MA QUESTION EST : Comment rédiger cette template ?

    J'ai écrit cela :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <!-- ========================================================================================== -->
    	<xsl:template name="ecrit_champs_test">
    		<!-- ========================================================================================== -->
    		<xsl:param name="champs"/>
    		<xsl:param name="noeud"/>
    		<xsl:param name="var"/>
    		<xsl:param name="tag"/>
    		<xsl:param name="valeur"/>
    		<fo:table>
    			<fo:table-column column-width="35mm"/>
    			<fo:table-column/>
    			<fo:table-body>
    				<fo:table-row>
    					<fo:table-cell>
    						<fo:block font-size="10pt">
    							<xsl:value-of select="$champs"/>
    						</fo:block>
    					</fo:table-cell>
    					<fo:table-cell background-color="#EEEEEE" padding="1mm">
    						<fo:block font-size="8pt">
    							<xsl:text disable-output-escaping="yes">&amp;#160;</xsl:text>
    							j'ai : "<xsl:value-of select="$noeud"/>" = "<xsl:value-of select="$valeur"/>"
    						</fo:block>						
    							<xsl:for-each select="$noeud">
    						<fo:block font-size="8pt">
    							On test : "<xsl:value-of select="$var[1]"/>" = "<xsl:value-of select="$valeur[1]"/>"
    						</fo:block>						
    						<fo:block font-size="10pt">
    								<xsl:if test="$var[text()=&apos;$tag&apos;]">
    									<xsl:value-of select="$valeur"/>
    								</xsl:if>
    						</fo:block>
    							</xsl:for-each>
    					</fo:table-cell>
    				</fo:table-row>
    			</fo:table-body>
    		</fo:table>
    		<fo:block padding-top="2mm"/>
    	</xsl:template>
    Voilà... actuellement je fais ca pour des trucs plus simple et c'est propre quoi.. donc...

    Et merci pour vos réponses supers rapide et votre interet !!!!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    pour mettre dans une boucle l'appel


    <xsl:for-each select="//MoyCom">
    <xsl:call-template ...
    ...
    </xsl:for-each>

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Urthgard
    pour mettre dans une boucle l'appel


    <xsl:for-each select="//MoyCom">
    <xsl:call-template ...
    ...
    </xsl:for-each>
    Oui mais dans ce cas là si par exemple il n'y pas de tel/fax (code C2) le champs ne s'affiche pas alors que mon besoin est d'afficher un champs "vide" (fond gris sans rien dedans)

    J'ai trouvé plus simple, mais je contourne en fait le problème donc c'est satisfaisant pour le moment mais intellectuellement ca me va pas !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    							<xsl:call-template name="ecrit_champs_normal">
    								<xsl:with-param name="champs">Téléphone :</xsl:with-param>
    								<xsl:with-param name="valeur" select="//MoyCom/Coord_Com[../Id_Telecom='C1']"/>
    							</xsl:call-template>

    et ma "fonction", que je vous livre pour rester cohérent mai sbon, c'est pas sorcier :
    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
    26
    27
     
    	<!-- ========================================================================================== -->
    	<xsl:template name="ecrit_champs_normal">
    		<!-- ========================================================================================== -->
    		<xsl:param name="champs"/>
    		<xsl:param name="valeur"/>
    		<fo:table>
    			<fo:table-column column-width="35mm"/>
    			<fo:table-column/>
    			<fo:table-body>
    				<fo:table-row>
    					<fo:table-cell>
    						<fo:block font-size="10pt">
    							<xsl:value-of select="$champs"/>
    						</fo:block>
    					</fo:table-cell>
    					<fo:table-cell background-color="#EEEEEE" padding="1mm">
    						<fo:block font-size="10pt">
    							<xsl:text disable-output-escaping="yes">&amp;#160;</xsl:text>
    							<xsl:value-of select="$valeur"/>
    						</fo:block>
    					</fo:table-cell>
    				</fo:table-row>
    			</fo:table-body>
    		</fo:table>
    		<fo:block padding-top="2mm"/>
    	</xsl:template>
    Ma prochaine étape : j'ai dans un fichier indépendant les énumérations

    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
    	<Liste Nom="Telecom">
    		<Valeur Libelle="Téléphone" Code="C1">
    			<Traduction Langue="EN" Libelle="Landline"/>
    		</Valeur>
    		<Valeur Libelle="Télécopieur / fax" Code="C2">
    			<Traduction Langue="EN" Libelle="Fax"/>
    		</Valeur>
    		<Valeur Libelle="Telephone mobile" Code="C6">
    			<Traduction Langue="EN" Libelle="Mobile"/>
    		</Valeur>
    		<Valeur Libelle="E-Mail" Code="C4">
    			<Traduction Langue="EN" Libelle="E-Mail"/>
    		</Valeur>
    		<Valeur Libelle="Site internet" Code="C5">
    			<Traduction Langue="EN" Libelle="Website"/>
    		</Valeur>
    	</Liste>
    Et je voudrais l'utiliser pour faire une boucle sur chaque énumération et appeller mon template avec les valeur/key adéquates....

    Des idées ?

  8. #8
    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 : 47
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
             <xsl:for-each select="$noeud"> 
                      <fo:block font-size="8pt"> 
                         On test : "<xsl:value-of select="$var[1]"/>" = "<xsl:value-of select="$valeur[1]"/>" 
                      </fo:block>                   
                      <fo:block font-size="10pt"> 
                            <xsl:if test="$var[text()=&apos;$tag&apos;]"> 
                               <xsl:value-of select="$valeur"/> 
                            </xsl:if> 
                      </fo:block> 
                         </xsl:for-each>
    tu peux reexpliquer cette partie de code parce que je ne vois pas ou tu veux en venir de plus quand tu utilises rentres une valeur string en parametres utilise la fonctions correspondantes
    comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:with-param name="truc" select="string('ma chaine')"/>
    Cela evite les mauvaises interpretations de processeur et permet un code + lisible quand tu utiise des chaines qui peuvent rappeler un tag

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Erwy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
             <xsl:for-each select="$noeud"> 
                      <fo:block font-size="8pt"> 
                         On test : "<xsl:value-of select="$var[1]"/>" = "<xsl:value-of select="$valeur[1]"/>" 
                      </fo:block>                   
                      <fo:block font-size="10pt"> 
                            <xsl:if test="$var[text()=&apos;$tag&apos;]"> 
                               <xsl:value-of select="$valeur"/> 
                            </xsl:if> 
                      </fo:block> 
                         </xsl:for-each>
    tu peux reexpliquer cette partie de code parce que je ne vois pas ou tu veux en venir de plus quand tu utilises rentres une valeur string en parametres utilise la fonctions correspondantes
    comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:with-param name="truc" select="string('ma chaine')"/>
    Cela evite les mauvaises interpretations de processeur et permet un code + lisible quand tu utiise des chaines qui peuvent rappeler un tag

    Voici en algo ce que je voulais faire, entre parenthèse ce que ca fait si les parametres sont remplacé par les valeurs réelles et non pas des variables de la template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Pour chaque Element dans $noeud 
    (C'est en fait //MoyCom passé en parametre),
                         je regarde si $var='$tag' 
                         (Id_Telecom='C1' ?)
                         Et si c'est le cas j'affiche $valeur
                         (donc le contenu de Coord_Com)

  10. #10
    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,

    je ne suis pas sur de bien avoir pigé ta demande, mais voici une proposition :

    Le template, non pas sous forme d'une fonction avec "name", mais un vrai template avec "match" :
    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 ="MoyCom"> 
       	  <xsl:param name="champ"/>
          <fo:table> 
             <fo:table-column column-width="35mm"/> 
             <fo:table-column/> 
             <fo:table-body> 
                <fo:table-row> 
                   <fo:table-cell> 
                      <fo:block font-size="10pt"> 
                         <xsl:value-of select="$champ"/> 
                      </fo:block> 
                   </fo:table-cell> 
                   <fo:table-cell background-color="#EEEEEE" padding="1mm"> 
                      <fo:block font-size="10pt"> 
                         <xsl:value-of select="Coord_Com"/> 
                      </fo:block> 
                   </fo:table-cell> 
                </fo:table-row> 
             </fo:table-body> 
          </fo:table> 
          <fo:block padding-top="2mm"/> 
       </xsl:template>
    Tu fais appel à ce template avec une instruction du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           <xsl:apply-templates select="/ListeMoyCom/MoyCom[Id_Telecom='C1']">
           	<xsl:with-param name="champ" select="'Téléphone: '"/>
           </xsl:apply-templates>
    Le prédicat [Id_Telecom='C1'] limite l'éxécution du template au seul élément avec Id_Telecom égal à 'C1'.
    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

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par GrandFather
    Bonjour,

    je ne suis pas sur de bien avoir pigé ta demande, mais voici une proposition ../...
    Oui mais c'ets moins générique cart si ensuite ce n'est pas MoyCom mais une autre partie de mon XML que je veux utiliser je dois dupliquer...

  12. #12
    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 : 47
    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 Punky65250

    Oui mais c'ets moins générique cart si ensuite ce n'est pas MoyCom mais une autre partie de mon XML que je veux utiliser je dois dupliquer...

    conseil: quand on est debutant eviter les affirmations gratuites

    pour truc machin et bidules en + de MoyCom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template match ="MoyCom|truc|machin|bidules">
     
    ....
    </xsl:template match>

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Erwy
    Citation Envoyé par Punky65250

    Oui mais c'ets moins générique cart si ensuite ce n'est pas MoyCom mais une autre partie de mon XML que je veux utiliser je dois dupliquer...

    conseil: quand on est debutant eviter les affirmations gratuites

    pour truc machin et bidules en + de MoyCom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template match ="MoyCom|truc|machin|bidules">
     
    ....
    </xsl:template match>
    Désolé je voulais pas être blaissant, je dis juste moins générique que dans le cadre d'un ensemble de couple (code,valeur) dont le libellé n'est pas identique, dans le cas présent il y a toujours cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="Coord_Com"/>
    Qui empeche d'etre générique... non ?

  14. #14
    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 : 47
    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 Punky65250
    Désolé je voulais pas être blaissant, je dis juste moins générique que dans le cadre d'un ensemble de couple (code,valeur) dont le libellé n'est pas identique, dans le cas présent il y a toujours cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="Coord_Com"/>
    Qui empeche d'etre générique... non ?
    ca depend de la structure de ton fichier
    je veux dire
    que tu peux remplacer le xpath du select
    -si c'est tjrs le deuxieme fils select="child::*[2]"
    -si tu connais toutes les autres balises et qu'elle ne sont jamais presente en meme temps tu peux reutiliser le | select="Coord_Com|etc",il prendra le premier qu'il trouve
    -tu le passe en parametre comme telephone
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:apply-templates select="/ListeMoyCom/MoyCom[Id_Telecom='C1']"> 
              <xsl:with-param name="champ" select="'Téléphone: '"/> 
             <xsl:with-param name="fils" select="string('?????') '"/> 
           </xsl:apply-templates>
     
    ...
    <xsl:value-of select="child::*[name()=$fils]"/>
    ...

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Erwy
    ca depend de la structure de ton fichier
    je veux dire
    que tu peux remplacer le xpath du select
    -si c'est tjrs le deuxieme fils select="child::*[2]"
    -si tu connais toutes les autres balises et qu'elle ne sont jamais presente en meme temps tu peux reutiliser le | select="Coord_Com|etc",il prendra le premier qu'il trouve
    -tu le passe en parametre comme telephone
    ../..
    Ca me semble impec ca, ca répond bien à mon soucis enplus !

    Merci...

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 13/10/2010, 14h11
  2. Réponses: 4
    Dernier message: 08/11/2005, 15h10
  3. Probleme d utilisation de template dans le cpp
    Par Math75 dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 16h26
  4. utilisation de getdate() dans une fonction ?
    Par devdev dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/03/2005, 17h40
  5. Utilisation de Getdate dans une fonction
    Par BaronSamdi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/11/2004, 10h12

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