Bonjour,
j'essaie de faire référence à une clé utilisée dans des éléments non parents. Voici le fichier XML qui serait valide :
Je voudrai que MEMORIES.selected référence l'un des attributs MEM.name ou CUSTOM.name.
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 <?xml version="1.0" encoding="utf-8" ?> <MEMORIES selected="MEM1"> <MEM name="MEM1"> <BOARD id="1" central="10"/> <BOARD id="2" central="20"/> <BOARD id="3" central="30"/> </MEM> <MEM name="MEM2"> <BOARD id="1" central="30"/> </MEM> <CUSTOM name="Custom"> <BOARD id="1" central="10"/> <BOARD id="2" central="20"/> <BOARD id="3" central="30"/> </CUSTOM> </MEMORIES>
Est-ce possible ? Voici mon schéma actuellement, avec cette contrainte qui ne fonctionne pas:
Ce que j'essaie est-il possible déjà ?
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 <?xml version="1.0" encoding="utf-8"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="MEMORIES"> <xs:complexType> <xs:sequence> <xs:element name="MEM" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="8" name="BOARD"> <xs:complexType> <xs:attribute name="id" type="xs:unsignedByte" use="required"/> <xs:attribute name="central" type="xs:double" use="required"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> </xs:complexType> <xs:unique name="memBoardUnique"> <xs:selector xpath="BOARD" /> <xs:field xpath="@id" /> </xs:unique> </xs:element> <xs:element name="CUSTOM"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="8" minOccurs="8" name="BOARD"> <xs:complexType> <xs:attribute name="id" type="xs:unsignedByte" use="required"/> <xs:attribute name="central" type="xs:double" use="required"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> </xs:complexType> <xs:unique name="customMemBoardUnique"> <xs:selector xpath="BOARD" /> <xs:field xpath="@id" /> </xs:unique> </xs:element> </xs:sequence> <xs:attribute name="selected" type="xs:string" use="required"/> </xs:complexType> <xs:unique name="nameUnique"> <xs:selector xpath="*" /> <xs:field xpath="@name" /> </xs:unique> <!-- Ne fonctionne pas ... --> <xs:keyref name="myMemRef" refer="nameUnique"> <xs:selector xpath="."/> <xs:field xpath="@selected"/> </xs:keyref> <!-- Ne fonctionne pas ... --> </xs:element> </xs:schema>
Merci d'avance pour toute aide
Partager