|
1 <?xml version="1.0" encoding="UTF-8"?> |
|
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" |
|
3 xmlns:example="http://www.example.org/root" |
|
4 xmlns="http://www.example.org/root" |
|
5 targetNamespace="http://www.example.org/root" |
|
6 elementFormDefault="qualified" attributeFormDefault="unqualified"> |
|
7 <xs:element name="Root"> |
|
8 <xs:complexType> |
|
9 <xs:choice maxOccurs="unbounded"> |
|
10 <xs:element ref="Object" /> |
|
11 </xs:choice> |
|
12 </xs:complexType> |
|
13 <xs:key name="name_key"> |
|
14 <xs:selector xpath=".//example:Object" /> |
|
15 <xs:field xpath="@name" /> |
|
16 </xs:key> |
|
17 <xs:keyref name="Collectiontype_defined" refer="name_key"> |
|
18 <xs:selector xpath=".//example:CollectionMember" /> |
|
19 <xs:field xpath="@type" /> |
|
20 </xs:keyref> |
|
21 </xs:element> |
|
22 <xs:element name="Members"> |
|
23 <xs:complexType> |
|
24 <xs:group ref="example:memberTypes" minOccurs="0" |
|
25 maxOccurs="unbounded" /> |
|
26 </xs:complexType> |
|
27 </xs:element> |
|
28 <xs:element name="Object"> |
|
29 <xs:complexType> |
|
30 <xs:sequence> |
|
31 <xs:element ref="Members" minOccurs="0" /> |
|
32 </xs:sequence> |
|
33 <xs:attributeGroup ref="example:typedMemberAttributes" /> |
|
34 <xs:attributeGroup ref="example:namedMemberAttributes" /> |
|
35 </xs:complexType> |
|
36 <xs:unique name="ObjectElementNameUniqueness"> |
|
37 <xs:selector xpath="example:Members/*" /> |
|
38 <xs:field xpath="@name" /> |
|
39 </xs:unique> |
|
40 </xs:element> |
|
41 <xs:element name="Collection"> |
|
42 <xs:complexType> |
|
43 <xs:sequence> |
|
44 <xs:element ref="CollectionMembers" /> |
|
45 </xs:sequence> |
|
46 <xs:attributeGroup ref="example:namedMemberAttributes" /> |
|
47 </xs:complexType> |
|
48 </xs:element> |
|
49 <xs:element name="CollectionMembers"> |
|
50 <xs:complexType> |
|
51 <xs:sequence> |
|
52 <xs:element ref="CollectionMember" minOccurs="2" |
|
53 maxOccurs="unbounded" /> |
|
54 </xs:sequence> |
|
55 </xs:complexType> |
|
56 </xs:element> |
|
57 <xs:element name="CollectionMember"> |
|
58 <xs:complexType> |
|
59 <xs:sequence> |
|
60 <xs:element ref="Members" minOccurs="0" |
|
61 maxOccurs="unbounded" /> |
|
62 </xs:sequence> |
|
63 <xs:attributeGroup ref="example:typedMemberAttributes" /> |
|
64 <xs:attributeGroup ref="example:namedMemberAttributes" /> |
|
65 </xs:complexType> |
|
66 </xs:element> |
|
67 <xs:element name="String"> |
|
68 <xs:complexType> |
|
69 <xs:attributeGroup ref="example:namedMemberAttributes" /> |
|
70 </xs:complexType> |
|
71 </xs:element> |
|
72 <xs:group name="memberTypes"> |
|
73 <xs:choice> |
|
74 <xs:element ref="String" /> |
|
75 <xs:element ref="Collection" /> |
|
76 </xs:choice> |
|
77 </xs:group> |
|
78 <xs:attributeGroup name="namedMemberAttributes"> |
|
79 <xs:attribute name="name" type="xs:Name" use="required" /> |
|
80 </xs:attributeGroup> |
|
81 <xs:attributeGroup name="typedMemberAttributes"> |
|
82 <xs:attribute name="type" type="xs:Name" /> |
|
83 </xs:attributeGroup> |
|
84 </xs:schema> |