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] formulaire de sélection


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut [xsl] formulaire de sélection
    bonjour

    j'ai un formulaire de sélection avec des <input name="option1"> et des <select name="option2">...
    j'aimerais que en fonction de des valeurs de ses champs, j'applique un xsl:template tq

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:apply-templates select="ligne[val1=$option1 and val2=$option2]"> 
    </xsl:apply-templates>
    ok l'idée marche bien et j'applique ensuite mon template sur les lignes sélectionnées... mais le problème c'est que je peux vouloir sélectionner l'ensemble des lignes

    J'avais 2 idées qui pour l'instant n'ont pas été finalisées:
    - prendre des valeurs pour $option1, $option2, telles qu'elle ne soit pas restrictives (d'où la question-défi juste avant)
    - faire des cas avec <xsl:if>. Le problème avec les cas c'est que ca monte vite en nombre... avec 2 champs j'ai 4 cas, 3 champs j'ai 8 cas... et ainsi de suite en puissance de 2

    comment faire au mieux pour résoudre ce problème ????


    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Par défaut
    Est-ce que à tous hasard tu ne peux pas revenir un peu en arriere sur ta transformation XSL et te pencher sur tes données et leur representation en XML ?

    Ici, tu utilises XPath pour faire des filtres sur tes elements XML. Une solution ultra simple est de generer ton document XML à la volée (je sais pas si c'est possible dans ton cas) afin de n'avoir que les elements que tu veux afficher dans ton flux XML. La template s'execute ensuite sans faire de filtre supplemetaire, donc avec un XPath ultra simple et toujours identique dans tous les cas.

    En découpant un peu ton traitement, en déportant une partie du travail sur la création du doc XML et une autre partie dans le XSL, tout se retrouve vite tres tres facile à faire.

    En ce qui me concerne, c'est la solution qui me parait la plus adaptée. XSL n'est là pour moi que pour faire des transformations de XML, pas nécessairement pour faire des traitements relativement lourds meme si c'est tout à fait possible avec XPath.

    L'environnement de dev que j'utilise regénère le XML à chaque requete utilisateur, puis le transforme en HTML pour le renvoyer au client. Comme mon XML est regeneré à chaque fois, ca m'est facile de faire ce genre de chose, je sais pas trop en ce qui te concerne

    sinon, personnelement, je ne vois qu'un xsl:choose sur ton xsl:apply-templates avec dans les xsl:when et xsl:otherwise des xpath différents selon tes cas.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    merci c'est en effet une très bonne idée que j'ai déjà utilisé dans d'autres cas... mais malheureusement, ici ce n'est pas possible...

    mon XML (ou plutot mes XML) est généré tous les soirs grace a une procédure sql qui prend plus d'une heure... et comme je ne suis que simple stagiaire, je ne peux pas demander a la boite de changer toute la conception de la chose... juste le suggerer... mais en l'etat actuel, il faut quad dans 2 semaines grand max, ma maquette fonctionne...

    si y'a pas d'autres solutions, je vais me rabattre si les <xsl:if> en cascade...

    merci encore et a++

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Désolé un peu à la ramasse ce matin, j'ai du mal a comprendre ton problème.
    Est cue tu sais a lavance ou non les champs que tu as a traité?Est qe que tu peux passer des paramètres à ta feuille?Est ce que le traitement est toujours le même?
    En gros ce serait beaucoup plus clair si tu donnais un exemple xml et xslt de ce que tu veux faire et ou tu bloques.
    Merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    mmmh... la je susi en w-e mais je vous envoie ca dès lundi !!!

    a++

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    voici un extrait de mon xml, c'est un ensemble de produits et j'aimerais pouvoir récupérer soit ceux dont nomFamille=Engrais soit ceux dont le nomFamille=Aliment soit tous les produits


    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?> 
    <?xml-stylesheet type="text/xsl" href="http://emc2-intra-portail:8086/emc2/Temporaire/Suivi_avec_filtres.xsl"?> 
    <document> 
    <nomMagasinLivraison>DAMVILLERS</nomMagasinLivraison> 
    <codeMagasinLivraison>54</codeMagasinLivraison> 
    <dateArrete>07/10/2004 19:11</dateArrete> 
     
    <ligne> 
    <codeTiers>A03878</codeTiers> 
    <nomTiers>COLLINET  Alain</nomTiers> 
    <lieuLivraison>MOIREY FLABAS CREPION</lieuLivraison> 
    <commande>CAL-54-2004-17</commande> 
    <dateCommande>00/00/0000</dateCommande> 
    <nomFamille>Aliment</nomFamille> 
    <article>0268103</article> 
    <designationArticle>SERVATECK SL 23.19 25K</designationArticle> 
    <unite>QT</unite> 
    <dateDebut>30/08/2004</dateDebut> 
    <dateFin>15/09/2004</dateFin> 
    <quantiteCommande>5.00</quantiteCommande> 
    <quantiteLivreeTotal></quantiteLivreeTotal> 
    <quantiteReste>5.00</quantiteReste> 
    </ligne> 
     
    <ligne> 
    <codeTiers>A03878</codeTiers> 
    <nomTiers>COLLINET  Alain</nomTiers> 
    <lieuLivraison>MOIREY FLABAS CREPION</lieuLivraison> 
    <commande>MSA-54-2004-160</commande> 
    <dateCommande>00/00/0000</dateCommande> 
    <nomFamille>Engrais</nomFamille> 
    <article>02642*</article> 
    <designationArticle>SODIOLIGO 12 K</designationArticle> 
    <unite>PCE</unite> 
    <dateDebut>01/10/2004</dateDebut> 
    <dateFin>30/10/2004</dateFin> 
    <quantiteCommande>15.00</quantiteCommande> 
    <quantiteLivreeTotal></quantiteLivreeTotal> 
    <quantiteReste>15.00</quantiteReste> 
    </ligne> 
     
    <ligne> 
    <codeTiers>A01165</codeTiers> 
    <nomTiers>EARL COEX ROBERT</nomTiers> 
    <lieuLivraison>VITTARVILLE</lieuLivraison> 
    <commande>CAL-54-2004-5</commande> 
    <dateCommande>00/00/0000</dateCommande> 
    <nomFamille>Aliment</nomFamille> 
    <article>0095903</article> 
    <designationArticle>LORCREM 25K</designationArticle> 
    <unite>QT</unite> 
    <dateDebut>28/08/2004</dateDebut> 
    <dateFin>10/09/2004</dateFin> 
    <quantiteCommande>5.00</quantiteCommande> 
    <quantiteLivreeTotal></quantiteLivreeTotal> 
    <quantiteReste>5.00</quantiteReste> 
    </ligne> 
    </document>
    a cet effet, j'ai une feuille xml qui contient une combo avec 3 valeurs possibles : tous, aliment, engrais


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsl:param name="T_PRI"/> 
    ... 
    <SELECT name="T_PRI"> 
    <option value="null">Tous</option> 
    <option value="Aliment">Aliment</option> 
    <option value="Engrais">Engrais</option> 
    </select> 
    ... 
    <xsl:apply-templates mode="detail" select="ligne[nomSurFamille=$T_PRI]"/>
    comme ca, je peux sélectionner soit Engrais, soit Aliment. Mais j'aimerais trouver la valeur de l'option pour "tous" qui me renvoie tous les éléments... j'ai essayé *, ""... sans succès

    ps: la solution avec xsl:if marcherait mais elle ne me convient pas. En effet j'aurais d'autres combos de sélection (5 en tout) et il faut donc faire 2*2*2*2*2=32 cas ce qui est dur à maintenir


    merci et bonne semaine

    EDIT: j'ai le droit de modifier la tronche des données

  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
    Par défaut
    Tout de suite plus clair et plus simple avec un exemple ,met le "if "sur le apply,juste l'idée
    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
     
    <xsl:param name="T_PRI"/>
    ...
    <SELECT name="T_PRI">
    <option value="null">Tous</option>
    <option value="Aliment">Aliment</option>
    <option value="Engrais">Engrais</option>
    </select>
    ...
    <xsl:choose>
       <xsl:when test="$T_PRI='tous'">
          <xsl:apply-templates mode="detail" select="ligne"/>
       </xsl:when>
    <xsl:otherwise>
       <xsl:apply-templates mode="detail" select="ligne[nomFamille=$T_PRI]"/>
    </xsl:otherwise>

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    ca ne fonctionnera pas... parce que j'ai 5 champs tq

    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
     
    <SELECT name="T_PRI"> 
    ...
    </select>
     <SELECT name="T_SEC"> 
    ...
    </select> 
     <SELECT name="T_TER"> 
    ...
    </select> 
    <SELECT name="O_PRI"> 
    ...
    </select>
     <SELECT name="O_SEC"> 
    ...
    </select>
    et chacun peut etre null... donc si j'utilise les xsl:when ou xsl:if il y a 32 cas
    ... en voici quelques uns... soit 0 si le champ est null, 1 s'il ne l'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    T_PRI | T_SEC | T_TER | O_PRI | O_SEC
    0     |  0    | 0     |  0    |  0
    0     |  0    | 0     |  0    |  1
    0     |  0    | 0     |  1    |  0
    0     |  0    | 0     |  1    |  1
    0     |  0    | 1     |  0    |  0
    ....
    et justement de la vient la question !!! comment faire autrement ???

    j'ai pensé p-e qu'en modifiant les données... à voir... merci d'avance

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    a peine mieux que des if
    mais bon peut être une idée

    fichier xml
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <R>
    	<A>
    		<B>C</B>
    		<C>1</C>
    		<D>11</D>
    	</A>
    	<A>
    		<B>A</B>
    		<C>2</C>
    		<D>12</D>
     
    	</A>
    	<A>
    		<B>B</B>
    		<C>3</C>
    		<D>13</D>
     
    	</A>
    	<A>
    		<B>A</B>
    		<C>4</C>
    		<D>14</D>
     
    	</A>
    	<A>
    		<B>C</B>
    		<C>5</C>
    		<D>15</D>
     
    	</A>
    	<A>
    		<B>A</B>
    		<C>6</C>
    		<D>16</D>
     
    	</A>
    </R>
    fichier xsl
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:variable name="A1" select="'A'"/>
    	<xsl:variable name="A2" select="'*'"/>
    	<xsl:variable name="A3" select="'*'"/>
    	<xsl:key name="clé" match="A" use="concat(B,';',C,';',D) "/>
    	<xsl:key name="clé1" match="A" use="concat('*;',C,';',D) "/>
          	<xsl:key name="clé2" match="A" use="concat(B,';*;',D) "/>
          	<xsl:key name="clé3" match="A" use="concat(B,';',C,';*') "/>
          	<xsl:key name="clé4" match="A" use="concat('*;*;',D) "/>
          	<xsl:key name="clé5" match="A" use="concat(B,';*;*') "/>
          	<xsl:key name="clé6" match="A" use="concat('*;',C,';*') "/>
     
    	<xsl:template match="/">
    		<html>
    			<body>
     
    			<xsl:choose>
    				<xsl:when test="concat($A1,';',$A2,';',$A3)='*;*;*'">
    				<xsl:apply-templates mode="R/A"></xsl:apply-templates>
    				</xsl:when>
    				<xsl:otherwise>
     
    				<xsl:apply-templates select="key('clé',concat($A1,';',$A2,';',$A3))|key('clé1',concat($A1,';',$A2,';',$A3))|key('clé2',concat($A1,';',$A2,';',$A3))|key('clé3',concat($A1,';',$A2,';',$A3))|key('clé4',concat($A1,';',$A2,';',$A3))|key('clé5',concat($A1,';',$A2,';',$A3))|key('clé6',concat($A1,';',$A2,';',$A3))"/>
     
     
    				</xsl:otherwise>
    			</xsl:choose>	
     
    			</body>
    		</html>
    	</xsl:template>
    	<xsl:template match="A">
    		<xsl:value-of select="B"/>;<xsl:value-of select="C"/>;<xsl:value-of select="D"/>
    		<br/>
    	</xsl:template>
    </xsl:stylesheet>

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    en en modifiant mes données... par exemple en les préfixant toutes par qqchose et en utilsant starts-with

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsl:param name="T_PRI"/> 
    ... 
    <SELECT name="T_PRI"> 
    <option value="Tous">Tous</option> 
    <option value="TousAliment">Aliment</option> 
    <option value="TousEngrais">Engrais</option> 
    </select> 
    ... 
    <xsl:apply-templates mode="detail" select="ligne[starts-with($T_PRI,nomSurFamille)]"/>
    avec une ligne qui donnerait 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
     
     
    <ligne> 
    <codeTiers>A01165</codeTiers> 
    <nomTiers>EARL COEX ROBERT</nomTiers> 
    <lieuLivraison>VITTARVILLE</lieuLivraison> 
    <commande>CAL-54-2004-5</commande> 
    <dateCommande>00/00/0000</dateCommande> 
    <nomFamille>TousAliment</nomFamille> 
    <article>0095903</article> 
    <designationArticle>LORCREM 25K</designationArticle> 
    <unite>QT</unite> 
    <dateDebut>28/08/2004</dateDebut> 
    <dateFin>10/09/2004</dateFin> 
    <quantiteCommande>5.00</quantiteCommande> 
    <quantiteLivreeTotal></quantiteLivreeTotal> 
    <quantiteReste>5.00</quantiteReste> 
    </ligne>
    est-ce qu'il y aurait des problèmes à l'horizon ? si oui lesquels ? si non, quel préfixe mettre ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    alors y'a une objection contre cette méthode ???

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Oui,
    1) tu modifies tes données pour ton code:dangeureux en cas de modification

    2)imagine que tu possèdes un champ "aliment" et un autre "alimentbio"

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    bien vu l'objection 2... bon ben... voila... j'en suis toujours ua meme point
    --€

    merci quand meme

    et si un idée pointe... n'hésitez pas a m'en faire part !

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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Bon une solution mais pas simple je te donne le fichier exemple et le xslt que j'ai fait.
    Le principe cree une cle unique qui refere tous les champs que tu veux listés ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <xsl:key name="Cle" match="a" use="concat(generate-id(.),b,c,d)"/>
    derriere tes parametres concatener un symbole(ici j'ai pris l' *) si il existe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       <xsl:variable name="A1" select="'1'"/> 
     
          <xsl:if test="$A1"> 
             <xsl:value-of select="concat($A1,'*')"/> 
          </xsl:if> 
       </xsl:variable>
    ensuite je teste la pertinence de la clé pour chaque noeud, si la clé est bonne le noeud correspond au filtre(pour cela je concatene derriere la valeur du 'filtre' courant et j'enelve le premier des deux resultats, si le premier est vide on recupereras donc le noeud en lecture)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="R/a[key(generate-id(.),'Cle', concat(substring-before(concat($B1,string(./b),'*'),'*'),substring-before(concat($B2,string(./c),'*'),'*'),substring-before(concat($B3,string(./d),'*'),'*')) )]"></xsl:apply-templates>
    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
    <?xml version="1.0" encoding="ISO-8859-14"?> 
     
    <R> 
       <a n="1A"> 
          <b>1</b> 
          <c>11</c> 
          <d>111</d> 
       </a> 
       <a n="2B"> 
          <b>1</b> 
          <c>22</c> 
          <d>222</d> 
       </a> 
       <a n="3C"> 
          <b>2</b> 
          <c>22</c> 
          <d>111</d> 
       </a> 
    </R> 
     
     
     
    xslt
    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
     
    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
       <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
       <xsl:key name="Cle" match="a" use="concat(generate-id(.),b,c,d)"/> 
       <xsl:variable name="A1" select="'1'"/> 
       <xsl:variable name="A2"/> 
       <xsl:variable name="A3"/> 
       <xsl:variable name="B1"> 
          <xsl:if test="$A1"> 
             <xsl:value-of select="concat($A1,'*')"/> 
          </xsl:if> 
       </xsl:variable> 
       <xsl:variable name="B2"> 
          <xsl:if test="$A2"> 
             <xsl:value-of select="concat($A2,'*')"/> 
          </xsl:if> 
       </xsl:variable> 
       <xsl:variable name="B3"> 
          <xsl:if test="$A3"> 
             <xsl:value-of select="concat($A3,'*')"/> 
          </xsl:if> 
       </xsl:variable> 
       <xsl:template match="/"> 
          <R> 
             <xsl:apply-templates select="R/a[key('Cle', concat(generate-id(.),substring-before(concat($B1,string(./b),'*'),'*'),substring-before(concat($B2,string(./c),'*'),'*'),substring-before(concat($B3,string(./d),'*'),'*')) )]"></xsl:apply-templates> 
          </R> 
       </xsl:template> 
       <xsl:template match="a"> 
       <test> 
       <xsl:value-of select="@n"></xsl:value-of> 
       </test> 
       </xsl:template> 
    </xsl:stylesheet>

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Par défaut
    ouah !!!! ca a l'air pas évident en effet ! surtout au retour du w-e

    mais en tout cas, merci de t'etre démené comme ca pour moi ! je vais essayer d'utiliser tout ca aujourd'hui

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/06/2009, 12h12
  2. Réponses: 9
    Dernier message: 23/08/2008, 17h18
  3. Réponses: 16
    Dernier message: 04/07/2008, 08h07
  4. Réponses: 2
    Dernier message: 28/06/2007, 09h22
  5. Réponses: 3
    Dernier message: 19/03/2006, 20h38

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