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 :

[XPath] Clause semblable à un IN (val1, val2, etc)


Sujet :

XSL/XSLT/XPATH XML

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

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [XPath] Clause semblable à un IN (val1, val2, etc)
    Bonjour,

    Après plusieurs recherches sur le forum et dans la documentation de XPATH, je ne trouve pas de réponse à mon problème.

    J'ai un fichier XML qui 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
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
    <?xml version="1.0" encoding="UTF-8"?>
     
        <CfgData>
          <CfgAgent DBID="112" ownerDBID="1" tenantDBID="1" lastName="Tata" firstName="Tata" employeeID="NNI007" name="NNI007" isAgent="2" state="1">
            <skillLevels>
              <CfgSkillLevel linkDBID="111"/>
              <CfgSkillLevel linkDBID="113"/>
              <CfgSkillLevel linkDBID="116"/>
              <CfgSkillLevel linkDBID="103"/>
              <CfgSkillLevel linkDBID="102" level="10"/>
              <CfgSkillLevel linkDBID="101"/>
              <CfgSkillLevel linkDBID="108"/>
              <CfgSkillLevel linkDBID="107"/>
              <CfgSkillLevel linkDBID="106"/>
              <CfgSkillLevel linkDBID="110"/>
            </skillLevels>
            <agentLogins>
              <CfgAgentLoginInfo linkDBID="125"/>
            </agentLogins>
            <userProperties>
              <list_pair key="Activites" DBID="1475">
                <str_pair key="GT_C0" DBID="1476" value="593701"/>
                <str_pair key="GT_C1" DBID="1477" value="593711"/>
                <str_pair key="GT_C2" DBID="1478" value="593721"/>
                <str_pair key="GT_C3" DBID="1479" value="593731"/>
                <str_pair key="GT_C4" DBID="1480" value="593741"/>
                <str_pair key="GT_ENTRANT" DBID="1481" value="593611"/>
                <str_pair key="GT_GESTION" DBID="1482" value="593641"/>
                <str_pair key="GT_PROJET" DBID="1483" value="593621"/>
              </list_pair>
            </userProperties>
          </CfgAgent>
          <CfgAgent DBID="104" ownerDBID="1" tenantDBID="1" lastName="Tutu" firstName="Tutu" employeeID="NNI010" name="NNI010" isAgent="2" state="2">
            <skillLevels>
              <CfgSkillLevel linkDBID="107"/>
              <CfgSkillLevel linkDBID="108"/>
              <CfgSkillLevel linkDBID="101"/>
              <CfgSkillLevel linkDBID="102" level="10"/>
              <CfgSkillLevel linkDBID="103"/>
              <CfgSkillLevel linkDBID="110"/>
              <CfgSkillLevel linkDBID="111"/>
              <CfgSkillLevel linkDBID="113"/>
              <CfgSkillLevel linkDBID="116"/>
              <CfgSkillLevel linkDBID="106"/>
            </skillLevels>
            <userProperties>
              <list_pair key="Activites" DBID="880">
                <str_pair key="GT_C0" DBID="881" value="593701"/>
                <str_pair key="GT_C1" DBID="1592" value=""/>
                <str_pair key="GT_C2" DBID="1593" value=""/>
                <str_pair key="GT_C3" DBID="1594" value=""/>
                <str_pair key="GT_C4" DBID="1595" value=""/>
                <str_pair key="GT_DEBORD" DBID="1596" value="593611"/>
                <str_pair key="GT_ENTRANT" DBID="882" value="593611"/>
                <str_pair key="GT_GESTION" DBID="883" value="593631"/>
                <str_pair key="GT_PROJET" DBID="884" value="593621"/>
              </list_pair>
              <list_pair key="Activites_93" DBID="4248">
                <str_pair key="GT_C0" DBID="4249" value="593710"/>
                <str_pair key="GT_C1" DBID="4250" value="593711"/>
                <str_pair key="GT_C2" DBID="4251" value="593712"/>
                <str_pair key="GT_C3" DBID="4252" value="593713"/>
                <str_pair key="GT_C4" DBID="4253" value="593714"/>
                <str_pair key="GT_DEBORD" DBID="4254" value="593611"/>
                <str_pair key="GT_ENTRANT" DBID="4255" value="593611"/>
                <str_pair key="GT_GESTION" DBID="4256" value="593631"/>
                <str_pair key="GT_PROJET" DBID="4257" value="593621"/>
              </list_pair>
              <list_pair key="Activites_94" DBID="4277">
                <str_pair key="GT_C0" DBID="4280" value="594700"/>
                <str_pair key="GT_C1" DBID="4281" value="594710"/>
                <str_pair key="GT_C2" DBID="4282" value="594720"/>
                <str_pair key="GT_C3" DBID="4283" value="594730"/>
                <str_pair key="GT_C4" DBID="4284" value="594740"/>
                <str_pair key="GT_DEBORD" DBID="4285" value="594610"/>
                <str_pair key="GT_ENTRANT" DBID="4286" value="594610"/>
                <str_pair key="GT_GESTION" DBID="4278" value="594640"/>
                <str_pair key="GT_PROJET" DBID="4279" value="594620"/>
              </list_pair>
            </userProperties>
          </CfgAgent>
          <CfgAgent DBID="105" ownerDBID="1" tenantDBID="1" lastName="Toto" firstName="Toto" employeeID="NNI001" name="NNI001" isAgent="2" state="1">
            <skillLevels>
              <CfgSkillLevel linkDBID="101"/>
              <CfgSkillLevel linkDBID="102" level="10"/>
              <CfgSkillLevel linkDBID="103"/>
              <CfgSkillLevel linkDBID="106"/>
              <CfgSkillLevel linkDBID="107"/>
              <CfgSkillLevel linkDBID="108"/>
              <CfgSkillLevel linkDBID="113"/>
              <CfgSkillLevel linkDBID="114"/>
              <CfgSkillLevel linkDBID="116"/>
            </skillLevels>
            <agentLogins>
              <CfgAgentLoginInfo linkDBID="104"/>
              <CfgAgentLoginInfo linkDBID="128"/>
            </agentLogins>
            <userProperties>
              <list_pair key="Activites" DBID="1759">
                <str_pair key="GT_C0" DBID="1764" value="593700"/>
                <str_pair key="GT_C3" DBID="1763" value="593730"/>
                <str_pair key="GT_DEBORD" DBID="1762" value="593620"/>
                <str_pair key="GT_ENTRANT" DBID="1761" value="593610"/>
                <str_pair key="GT_GESTION" DBID="1760" value="593640"/>
              </list_pair>
              <list_pair key="Activites_93" DBID="4226">
                <str_pair key="GT_C0" DBID="4227" value="593700"/>
                <str_pair key="GT_C3" DBID="4228" value="593730"/>
                <str_pair key="GT_DEBORD" DBID="4229" value="593620"/>
                <str_pair key="GT_ENTRANT" DBID="4230" value="593610"/>
                <str_pair key="GT_GESTION" DBID="4231" value="593640"/>
              </list_pair>
              <list_pair key="Activites_94" DBID="4232">
                <str_pair key="GT_C0" DBID="4233" value="594700"/>
                <str_pair key="GT_C3" DBID="4234" value="594730"/>
                <str_pair key="GT_DEBORD" DBID="4235" value="594620"/>
                <str_pair key="GT_ENTRANT" DBID="4236" value="594610"/>
                <str_pair key="GT_GESTION" DBID="4237" value="594640"/>
              </list_pair>
            </userProperties>
          </CfgAgent>
          <CfgAgent DBID="107" ownerDBID="1" tenantDBID="1" lastName="Titi" firstName="Titi" employeeID="NNI002" name="NNI002" isAgent="2" state="1">
            <skillLevels>
              <CfgSkillLevel linkDBID="101" level="10"/>
              <CfgSkillLevel linkDBID="102" level="10"/>
              <CfgSkillLevel linkDBID="103"/>
              <CfgSkillLevel linkDBID="106"/>
            </skillLevels>
            <agentLogins>
              <CfgAgentLoginInfo linkDBID="127"/>
              <CfgAgentLoginInfo linkDBID="105"/>
            </agentLogins>
            <userProperties>
              <list_pair key="Activites" DBID="4444">
                <str_pair key="GT_C0" DBID="4445" value="593700"/>
                <str_pair key="GT_ENTRANT" DBID="4446" value="593610"/>
                <str_pair key="GT_GESTION" DBID="4447" value="593640"/>
                <str_pair key="GT_PROJET" DBID="4448" value="593620"/>
              </list_pair>
              <list_pair key="Activites_93" DBID="4449">
                <str_pair key="GT_C0" DBID="4450" value="593700"/>
                <str_pair key="GT_ENTRANT" DBID="4451" value="593610"/>
                <str_pair key="GT_GESTION" DBID="4452" value="593640"/>
                <str_pair key="GT_PROJET" DBID="4453" value="593620"/>
              </list_pair>
              <list_pair key="Activites_94" DBID="4454">
                <str_pair key="GT_C0" DBID="4455" value="594700"/>
                <str_pair key="GT_ENTRANT" DBID="4456" value="594610"/>
                <str_pair key="GT_GESTION" DBID="4457" value="594640"/>
                <str_pair key="GT_PROJET" DBID="4458" value="594620"/>
              </list_pair>
            </userProperties>
          </CfgAgent>
    Ce que j'essaie de faire est de récupérer tous les 'CfgAgent' contenant des CfgSkillLevel ayant un linkDBID dans un groupe de valeurs.

    En gros :
    'SELECT CfgAgent WHERE skillLevels/CfgSkillLevel[@linkDBID in (114, 116)]'
    (ça veut rien dire mais j'essaie d'illustrer ce que je veux faire désolé! )

    J'ai essayé :
    CfgAgent[skillLevels/CfgSkill[@linkDBID in (114, 116)]]
    Et moult autres formes mais j'arrive à rien.

    Toute aide serait vraiment la bienvenue. Merci d'avance

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    En XSLT 1.0 et XPath 1.0, il n'y a pas de notion de liste de valeurs...

    Voici ce que j'utilise comme astuce, à condition que l'on puisse trouver un séparateur non présent dans les valeurs, pour une variable $v pouvant contenir v1, v2, v3 ou v4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contains('.v1.v2.v3.v4.',concat('.',$v,'.'))
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

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

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Tout d'abord merci pour ta réponse.

    Je n'ai jamais utilisé ce langage et je suis amené à le faire que de manière très ponctuelle.

    Pourrais-tu être un peu plus clair sur ton astuce stp? Dans mon cas de figure, à quoi cela ressemblerait?

    Merci d'avance

  4. #4
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Ce qui figure dans ma première réponse est une expression XPath pour tester si la valeur effective est l'une des valeurs possibles en se prémunissant des valeurs incluses seulement.

    On peut donc écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CfgAgent[skillLevels/CfgSkill[contains('.114.116.',concat('.',@linkDBID,'.'))]]
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

Discussions similaires

  1. [ZF 1.9] Route de type recherche/?param1=val1&param2=val2
    Par Romalafrite dans le forum MVC
    Réponses: 2
    Dernier message: 15/10/2009, 09h06
  2. Réponses: 1
    Dernier message: 22/09/2009, 09h02
  3. [XPath] équivalent clause LIKE sql
    Par mapmip dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/01/2007, 10h44
  4. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  5. Condition : In(Val1,Val2,Val3) dans publipostage
    Par Invité dans le forum Access
    Réponses: 3
    Dernier message: 15/09/2005, 07h50

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