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] Imiter un booléen pour tester si une valeur apparaît dans une liste de noeuds


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut [XSLT] Imiter un booléen pour tester si une valeur apparaît dans une liste de noeuds
    Salut,

    Voilà un exemple de mon XML de départ :
    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
      <ITEM>
        <TYPE>Disque</TYPE>
        <DESCRIPTEUR Genre="Jazz"/>
      </ITEM>
      <ITEM>
        <TYPE>Disque</TYPE>
        <DESCRIPTEUR Genre="Musique de chambre"/>
        <DESCRIPTEUR Genre="17ème siècle"/>
      </ITEM>
      <ITEM>
        <TYPE>Vidéo</TYPE>
        <DESCRIPTEUR Genre="20ème siècle 2ème moitié"/>
        <DESCRIPTEUR Genre="Musique contemporaine"/>
      </ITEM>
      <ITEM>
        <TYPE>Vidéo</TYPE>
        <DESCRIPTEUR Genre="Musique baroque"/>
        <DESCRIPTEUR Genre="19ème siècle"/>
      </ITEM>
    Je cherche à déterminer si pour un TYPE donné, un Genre précis apparaît au moins une fois dans un ITEM.

    J'essaie d'utiliser un <xsl:for-each select="ITEM" /> mais je me retrouve avec autant de fois de retour qu'il y a d'ITEM correspondant au TYPE donné et au DESCRIPTEUR donné.

    Disons qu'en algo ce que je voudrais faire ressemble à ça :
    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
    VARIABLE MonBool
     
    POUR CHAQUE "ITEM"
      SI TYPE = $typeDonné
        POUR CHAQUE DESCRIPTEUR
          SI Genre = $genreDonné
            $MonBool = vrai
          FIN SI
        FIN POUR
      FIN SI
    FIN POUR
     
    SI $MonBool = vrai
      Print "Le genre $genreDonné apparaît au moins une fois pour ce $typedonné d'ITEM"
    SINON
      Print "Le genre $genreDonné n'apparaît jamais pour ce $typedonné d'ITEM"
    FIN SI
    J'ai du mal à déterminer comment je pourrais mettre en place ce genre de test en XSLT...

    Merci d'avance pour vos conseils.

  2. #2
    Membre éclairé
    Avatar de strat0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2003
    Messages : 288
    Par défaut
    Ça fonctionne bien avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="//VIDEO[TYPE_CONCERT = $typeMedia][DESCRIPTEUR/@Genre = $genre]">

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/04/2011, 09h06
  2. Réponses: 82
    Dernier message: 05/02/2011, 15h34
  3. Réponses: 6
    Dernier message: 13/11/2009, 17h06
  4. Réponses: 1
    Dernier message: 11/06/2008, 14h33
  5. Tester qu'une valeur existe dans une "liste"
    Par Oluha dans le forum Langage
    Réponses: 12
    Dernier message: 05/08/2005, 00h01

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