Bonjours,
J'ai un souci avec l'utilisation des xs:key et xs:keyref dans les schémas(*.xsd)
Je n'arrive pas à trouver comment faire pour qu'un élément puisse posséder plusieurs référence de clé (xs:keyref).
Voici un petit exemple pour illustre mon problème :
test.xml :
test.xsd :
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 <?xml version="1.0" encoding="UTF-8"?> <ecole xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="test.xsd"> <!-- liste des profs --> <prof> <id>A</id> <nom>Mr A</nom> </prof> <prof> <id>B</id> <nom>Mr B</nom> </prof> <!-- liste des matieres, une matiere peu faire referance a plusieur prof --> <matiere> <nom>Francais</nom> <ref-prof>A</ref-prof> <ref-prof>B</ref-prof> </matiere> </ecole>
Le problème avec cette exemple, c'est que la validation me dit :
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 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="ecole" type="TypeEcole"> <xs:key name="id.prof"> <xs:selector xpath="prof"></xs:selector> <xs:field xpath="id"></xs:field> </xs:key> <xs:keyref refer="id.prof" name="ref.prof"> <xs:selector xpath="matiere"></xs:selector> <xs:field xpath="ref-prof"></xs:field> </xs:keyref> </xs:element> <xs:complexType name="TypeEcole"> <xs:sequence> <xs:element name="prof" type="TypeProf" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="matiere" type="TypeMatiere" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="TypeProf"> <xs:sequence> <xs:element name="id" type="xs:string"/> <xs:element name="nom" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="TypeMatiere"> <xs:sequence> <xs:element name="nom" type="xs:string"/> <xs:element name="ref-prof" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:schema>
Apparemment il ne veux pas que "matiere" possède plusieurs "ref-prof"SystemID: /home/ekinoks/Desktop/XML/test.xml
Endroit: 17:31
Description: [Xerces] cvc-identity-constraint.3: Field "./ref-prof" of identity constraint "ref.prof" matches more than one value within the scope of its selector; fields must match unique values.
URL: http://www.w3.org/TR/xmlschema-1/#cv...ity-constraint
Quelqu'un serait il pour quoi ? et comment contourner le probleme ?
Merci pour votre aide.
Partager