Bonjour !
Je cherche à faire une requête Xpath avec un AND logique, et je vois très bien où est mon erreur, mais pas comment la résoudre.
J'ai le fichier XML suivant :
Je souhaite vérifier si un élément keyref contient à la fois
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 <xs:schema> <xs:element> <xs:key name="uniciteTableAssociation" > <xs:selector xpath=".//table_association" /> <xs:field xpath="@table_name" /> <xs:field xpath="@table_key" /> <xs:field xpath="@table_pos" /> </xs:key> <xs:keyref name="foreignTableAssociation1" refer="uniciteTableAssociation"> <xs:selector xpath=".//liaison1" /> <xs:field xpath="@table_name" /> <xs:field xpath="@table_key" /> <xs:field xpath="@table_pos" /> </xs:keyref> <xs:keyref name="foreignTableAssociation2" refer="uniciteTableAssociation"> <xs:selector xpath=".//association" /> <xs:field xpath="@table_name" /> <xs:field xpath="@table_key" /> <xs:field xpath="@table_pos" /> </xs:keyref> <xs:key name="uniciteLiaison1" > <xs:selector xpath=".//liaison1" /> <xs:field xpath="@origin_ref" /> <xs:field xpath="@table_name" /> <xs:field xpath="@table_key" /> <xs:field xpath="@table_pos" /> </xs:key> </xs:element> </xs:schema>
- un élément selector ayant pour attribut un xpath à ".//liaison1"
- un élément field ayant pour attribut un xpath à "@table_name"
Pour cela j'ai essayé la requête suivante :
Le problème avec celle-ci c'est qu'il n'est pas possible de sélectionner un selector et un field. Le format de la requête n'est pas le bon. Donc j'ai voulu utiliser le contains, mais là encore ce ne doit pas être la bonne manière de l'utiliser :/xs:schema/xs:element/xs:keyref/[xs:selector[@xpath='.//liaison1'] and xs:field[@xpath='@table_name']]
Quelqu'un saurait-il ce qui cloche ?/xs:schema/xs:element/xs:keyref/[contains (xs:selector[@xpath='.//liaison1']) and (xs:field[@xpath='@table_name'])]
Merci d'avance,
kawaï.
Partager