Bonjour,
J'ai un problème pour utiliser une clé et pour la référencer dans un schéma xsd.
Le schéma est le suivant:
Et un fichier xml valide serait le suivant:
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 <?xml version="1.0" encoding="utf-8" ?> <!-- Created with Liquid XML Studio 1.0.8.0 (http://www.liquid-technologies.com) --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="query"> <xs:complexType> <xs:sequence> <xs:element minOccurs="1" maxOccurs="1" name="tables"> <xs:complexType> <xs:sequence> <xs:element minOccurs="1" maxOccurs="unbounded" name="table"> <xs:complexType> <xs:attribute name="name" type="xs:string" use="required" /> </xs:complexType> <xs:key name="tableKey"> <xs:selector xpath="table" /> <xs:field xpath="@name" /> </xs:key> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element minOccurs="1" maxOccurs="1" name="columns"> <xs:complexType> <xs:sequence> <xs:element minOccurs="1" maxOccurs="unbounded" name="column"> <xs:complexType> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="ref-table" type="xs:string" use="required" /> </xs:complexType> <xs:keyref name="tableKeyRef" refer="tableKey"> <xs:selector xpath="table" /> <xs:field xpath="@name" /> </xs:keyref> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
En gros l'idée c'est que l'attribut ref-table désigne a quelle table appartient la colonne. Mon problème c'est que quand je tente de valider le xml, j'ai une erreur : "the keyref 'column' cannot find the referred or unique in scope".
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 <?xml version="1.0" encoding="UTF-8"?> <query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="query.xsd"> <tables> <table name="table1" /> <table name="table2" /> </tables> <columns> <column name="col1" ref-table="table1" /> <column name="col1" ref-table="table2" /> </columns> </query>
Je pense que c'est au niveau de la clé que ca chie parce que si je mets deux clés avec le même nom, je n'ai pas d'erreur...
Merci d'avance pour toute aide.
Partager