Salut à tous,
je suis sûre que dès que vous avez lu le titre de ma requête, vous avez tout de suite pensez à la fonction Key(). J´ai essayé avec mais cà coince quand même.
Voilà: j´ai ce fichier XML
Je dois aller dans chaque "Class" de "Globe" avec un for-each et je récupère le code de son élement "ModifierClassCode" ainsi que le code de son élement "ModifiedBy", puis je cherche dans tout le fichier Globe les élements "ModifierClass", dont l´attribut "modifier" correspond au code de ModifiedBy récupéré plus tôt. Si tel est le cas, mon but est de regrouper ou de créer un index ou même un string contenant toutes les valeurs de "Meta" de chaque élement ModifierClass et ensuite de tester si le code de "ModifierClassCode" (ici .0) récupéré plus tôt serait contenu dans ce string là.
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 <Globe> <ModifierClass code="0" modifier="S04E10_5"> <Meta name="excludeOnPrecedingModifier" value="S04E10_4 .0"/> <Meta name="excludeOnPrecedingModifier" value="S04E10_4 .1"/> <Meta name="excludeOnPrecedingModifier" value="S04E10_4 .7"/> <SuperClass code="S04E10_5"/> <Rubric kind="preferred"> <Label xml:lang="de">Un label</Label> </Rubric> </ModifierClass> <ModifierClass code="1" modifier="S04E10_5"> <Meta name="excludeOnPrecedingModifier" value="S04E10_4 .7"/> <SuperClass code="S04E10_5"/> <Rubric kind="preferred"> <Label xml:lang="de">un autre Label</Label> </Rubric> </ModifierClass> <Class code="E10.0" kind="category"> <Flag kind="Developer comment"/> <ModifierClassCode code=".0" kind="Developer comment"/> <ModifiedBy code="S04E10_5"/> <Rubric kind="preferred"> <Label xml:lang="de">Un troisième Label</Label> </Rubric> </Class> </Globe>
Plus concrètement: pour le premier élement ModifierClass, j´aimerais obtenir le string ou le groupe "S04E10_4 .0 S04E10_4 .1 S04E10_4 .7", puis chercher si ".0" appartient à ce string. Si oui, c´est qu´il fait parti des élements exclus et je continue au prochain ModifierClass où j´obtiens le string "S04E10_4 .7" et je vérifie de nouveau. Et ce ne sera que lorsqu´il ne sera pas exclu que je procèderais à des instructions précises.
J´espère que je me suis quand même fait comprendre.
Quelqu´un pourrait-il m´aider? C´est super urgent.
Merci d´avance,
Sylvie
ps: j´ai jusqu´ici essayé, mais sans succès
Là j´obtiens aucun résultat "trouvé". Alors que cela aurait dû marché pour le ModifierClass avec le groupe Meta "S04E10_4 .7" puisque .0 n´est pas contenu dans ce groupe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <xsl:key name="excludeOnPrecedingModifier" match="/Globe/ModifierClass[Meta[@value!=following-sibling::Meta/@value]]" use="contains(Meta/@value, Globe/Class/ModifierClassCode/@code)"/> .... <xsl:for-each select="key('excludeOnPrecedingModifier', false())"> <resultat>trouvé</resultat> </xsl:for-each>
Partager