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 :

for-each et condition


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut for-each et condition
    Hello,
    dans mon xml j'ai des tag "base_calcul" et des éléments "rente" qui y font référence du genre :

    <base_calcul>
    <id>1</id>
    ...
    </base_calcul>

    <base_calcul>
    <id>2</id>
    ...
    </base_calcul>

    et

    <rente>
    <base>1<base>
    ...
    </rente>

    J'aimerai faire une boucle for-each sur toutes les <base_calcul> qui ont des tags <rente> leur faisant référence (donc un élément <base_calcul> avec un id correspondant à la valeur qu'on trouve dans le tag <base> d'un élément <rente> existant). Avec mon exemple ci-dessus la boucle ne prendrait que le premier élément <base_calcul> mais pas le deuxième puisque aucun élément <rente> n'a comme base 2.

    En gros je voudrai, dans l'exemple ci-dessous pouvoir me passer du if qui serait en quelque sorte déjà "inclus" dans le for
    <xsl:for-each select="../bases_calcul">
    <xsl:variable name="id_base" select="./id">
    <xsl:if test="../rente [./base=$id_base]">
    ...
    </xsl:if>
    </xsl:for-each>

    Si quelqu'un a une idée je lui en serai très reconnaissant

    Merci !
    casp

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Ben, tu as déjà pensé à faire un rente [base=quelquechose].

    À première vue il suffit simplement de faire l'inverse, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="../bases_calcul[id = quelquechose]">
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut
    Merci pour ta réponse. Malheureusement je ne comprends pas bien comment faire malgré tout. J'aimerai que ma boucle for traite tous les éléments <base_calcul> qui ont un élément <rente> qui leur fait référence (tag <id> et tag <base> identique) mais sans avoir a spécifier un id particulier. Si une base_calcul n'a pas de rente qui lui fait référence je n'aimerai pas traiter cette base_calcul dans ma boucle for.
    Dans mon exemple entre le for et le if je récupère l'id de la base de calcul dans une variable mais je ne sais vois pas comment faire tout ça dans le for.
    Dans ton exemple j'ai l'impression que je vais devoir remplacer ton "quelquechose" par une valeur et que donc ma boucle ne traitera que une seule base_calcul qui aura l'id=quelquechose alors qu'en réalité je pourrai être amenée à traiter 10 bases_calcul avec 10 id différent si pour chacune il existe aussi un élément <rente> avec le tag <base> identique à l'id.

    En gros ce que je voudrai faire c'est

    for_each ../base_calcul pour laquelle il existe un tag ../rente avec ../base_calcul/id = ../rente/base

    Mais je ne sais pas écrire ça en xsl et je ne sais même pas si c'est possible.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Impression non vérifiée...

    Et si je te disais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ../bases_calcul[id = ../rente/autrechose]
    ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 15
    Par défaut
    ça a l'air de fonctionner, j'y avais pas pensé.
    Merci beaucoup pour ton aide !

    Casp

Discussions similaires

  1. mettre une condition if dans un for each
    Par tony76 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/05/2015, 21h28
  2. Utilisation de condition dans une boucle for-each
    Par siro1 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/03/2012, 17h07
  3. [XL-2007] double condition (avec des for each)
    Par FloFlosu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/02/2011, 11h32
  4. [XSLT] Condition d'unicité dans un for-each
    Par luthier dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/10/2009, 07h46
  5. [vb.net] For Each .. avec condition
    Par arnolem dans le forum Windows Forms
    Réponses: 8
    Dernier message: 07/12/2005, 09h18

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