Ticket #219: race.xsd

File race.xsd, 9.3 KB (added by Henri, 10 years ago)

schema file that allows multiple contained units

Line 
1<?xml version="1.0"?>
2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:core="http://ibboard.co.uk/warfoundry/core" xmlns:cats="http://ibboard.co.uk/warfoundry/cats"
3targetNamespace="http://ibboard.co.uk/warfoundry/race" xmlns="http://ibboard.co.uk/warfoundry/race" elementFormDefault="qualified">
4<xs:element name="race">
5    <xs:complexType>
6        <xs:all>
7            <xs:element name="units">
8                <xs:complexType>
9                    <xs:sequence>
10                        <xs:element name="unit" maxOccurs="unbounded">
11                            <xs:complexType>
12                                <xs:all>
13                                    <xs:element name="stats">
14                                        <xs:complexType>
15                                            <xs:sequence>
16                                                <xs:element name="stat" maxOccurs="unbounded">
17                                                    <xs:complexType>
18                                                        <xs:simpleContent>
19                                                            <xs:extension base="xs:string">
20                                                                <xs:attribute name="name" type="xs:string" use="required"/>
21                                                                <xs:anyAttribute/>
22                                                            </xs:extension>
23                                                        </xs:simpleContent>
24                                                    </xs:complexType>
25                                                </xs:element>
26                                            </xs:sequence>
27                                            <xs:attribute name="statSet" type="xs:string" default="" />
28                                            <xs:anyAttribute/>
29                                        </xs:complexType>
30                                    </xs:element>
31                                    <xs:element name="equipmentSlots" minOccurs="0">
32                                        <xs:complexType>
33                                            <xs:sequence>
34                                                <xs:element name="equipmentSlot" maxOccurs="unbounded">
35                                                    <xs:complexType>
36                                                        <xs:all>
37                                                            <xs:element name="maxLimit" minOccurs="0" type="core:limit" />
38                                                            <xs:element ref="core:extension" minOccurs="0" />                                                   
39                                                        </xs:all>
40                                                        <xs:attribute name="name" type="xs:string" use="required"/>
41                                                        <xs:anyAttribute/>
42                                                    </xs:complexType>
43                                                </xs:element>
44                                            </xs:sequence>
45                                        </xs:complexType>
46                                    </xs:element>
47                                    <xs:element name="unitEquipment" minOccurs="0">
48                                        <xs:complexType>
49                                            <xs:sequence>
50                                                <xs:element name="unitEquipmentItem" maxOccurs="unbounded">
51                                                    <xs:complexType>
52                                                        <xs:all>
53                                                            <xs:element name="minLimit" minOccurs="0" type="core:limit" />
54                                                            <xs:element name="maxLimit" minOccurs="0" type="core:limit" />
55                                                            <xs:element ref="core:extension" minOccurs="0" />
56                                                        </xs:all>
57                                                        <xs:attribute name="id" type="xs:IDREF" />
58                                                        <xs:attribute name="required" type="xs:boolean" default="false"/>
59                                                        <!-- exclusivityGroup is deprecated in favour of the comma-separated exclusivityGroups -->
60                                                        <xs:attribute name="exclusivityGroup" type="xs:string" default=""/>
61                                                        <xs:attribute name="exclusivityGroups" type="xs:string" default=""/>
62                                                        <xs:attribute name="equipmentSlot" type="xs:string"/>
63                                                        <xs:attribute name="roundDirection" type="core:updowntype" default="up"/>
64                                                        <xs:attribute name="costMultiplier" type="core:nonNegativeDouble" default="1"/>
65                                                        <xs:attribute name="costRounding" type="costroundingtype" default="UpToHalf"/>
66                                                        <xs:anyAttribute/>
67                                                    </xs:complexType>
68                                                </xs:element>
69                                            </xs:sequence>
70                                            <xs:anyAttribute/>
71                                        </xs:complexType>
72                                    </xs:element>
73                                    <xs:element name="unitAbilities" minOccurs="0">
74                                        <xs:complexType>
75                                            <xs:sequence>
76                                                <xs:element name="unitAbility" maxOccurs="unbounded">
77                                                    <xs:complexType>
78                                                        <xs:attribute name="abilityID" type="xs:IDREF" />
79                                                        <xs:attribute name="required" type="xs:boolean" default="true"/>
80                                                        <xs:anyAttribute/>
81                                                    </xs:complexType>
82                                                </xs:element>
83                                            </xs:sequence>
84                                            <xs:anyAttribute/>
85                                        </xs:complexType>
86                                    </xs:element>
87                                    <xs:element name="requirements" minOccurs="0">
88                                        <xs:complexType>
89                                            <xs:sequence>
90                                                <xs:element name="requirement">
91                                                    <xs:complexType>
92                                                        <xs:simpleContent>
93                                                            <xs:extension base="xs:string">
94                                                                <xs:attribute name="requirementName" type="xs:string" use="required"/>
95                                                                <xs:anyAttribute/>
96                                                            </xs:extension>
97                                                        </xs:simpleContent>
98                                                    </xs:complexType>
99                                                </xs:element>
100                                            </xs:sequence>
101                                            <xs:anyAttribute/>
102                                        </xs:complexType>
103                                    </xs:element>
104                                    <xs:element name="contains" minOccurs="0">
105                                        <xs:complexType>
106                                            <xs:sequence>
107                                                <xs:element name="containedUnit" maxOccurs="unbounded">
108                                                    <xs:complexType>
109                                                        <xs:attribute name="containedID" type="xs:IDREF" use="required"/>
110                                                        <xs:anyAttribute/>
111                                                    </xs:complexType>
112                                                </xs:element>
113                                            </xs:sequence>
114                                            <xs:anyAttribute/>
115                                        </xs:complexType>
116                                    </xs:element>
117                                    <xs:element name="extraData" minOccurs="0">
118                                        <xs:complexType>
119                                            <xs:sequence>
120                                                <xs:element name="data">
121                                                    <xs:complexType>
122                                                        <xs:simpleContent>
123                                                            <xs:extension base="xs:string">
124                                                                <xs:attribute name="id" type="xs:ID" use="required"/>
125                                                                <xs:anyAttribute/>
126                                                            </xs:extension>
127                                                        </xs:simpleContent>
128                                                    </xs:complexType>
129                                                </xs:element>
130                                            </xs:sequence>
131                                            <xs:anyAttribute/>
132                                        </xs:complexType>
133                                    </xs:element>
134                                    <xs:element name="notes" type="xs:string" minOccurs="0" />
135                                    <xs:element ref="core:extension" minOccurs="0" />
136                                </xs:all>
137                                <xs:attribute name="id" type="xs:ID" />
138                                <xs:attribute name="typeName" type="xs:string" use="required"/>
139                                <xs:attribute name="cat" type="xs:string" use="required"/>
140                                <xs:attribute name="unitPoints" type="core:nonNegativeNonInfiniteDouble" default="0"/>
141                                <xs:attribute name="points" type="core:nonNegativeNonInfiniteDouble" use="required"/>
142                                <xs:attribute name="minNum" type="xs:nonNegativeInteger" default="0"/>
143                                <xs:attribute name="maxNum" type="core:positiveOrInfiniteInteger" default="-1"/>
144                                <xs:attribute name="minSize" type="xs:nonNegativeInteger" default="5"/>
145                                <xs:attribute name="maxSize" type="core:positiveOrInfiniteInteger" default="-1"/>
146                                <xs:attribute name="baseSize" type="xs:nonNegativeInteger" default="0"/>
147                                <xs:anyAttribute/>
148                            </xs:complexType>
149                        </xs:element>
150                    </xs:sequence>
151                </xs:complexType>
152            </xs:element>
153            <xs:element name="categories" type="cats:categoriestype" minOccurs="0" />
154            <xs:element name="equipment" minOccurs="0">
155                <xs:complexType>
156                    <xs:sequence>
157                        <xs:element name="equipmentItem" maxOccurs="unbounded">
158                            <xs:complexType>
159                                <xs:all>
160                                    <xs:element name="description" type="xs:string" minOccurs="0" />
161                                    <xs:element ref="core:extension" minOccurs="0" />
162                                </xs:all>
163                                <xs:attribute name="id" type="xs:ID" use="required"/>
164                                <xs:attribute name="name" type="xs:string" use="required"/>
165                                <xs:attribute name="cost" type="core:nonNegativeNonInfiniteDouble" use="required"/>
166                                <xs:attribute name="armourType" type="armourtype" default="None"/>
167                                <xs:anyAttribute/>
168                            </xs:complexType>
169                        </xs:element>
170                    </xs:sequence>
171                    <xs:anyAttribute/>
172                </xs:complexType>
173            </xs:element>
174            <xs:element name="abilities" minOccurs="0">
175                <xs:complexType>
176                    <xs:sequence>
177                        <xs:element name="ability">
178                            <xs:complexType>
179                                <xs:all>
180                                    <xs:element name="description" type="xs:string" />
181                                    <xs:element ref="core:extension" minOccurs="0" />
182                                </xs:all>
183                                <xs:attribute name="id" type="xs:ID" use="required"/>
184                                <xs:attribute name="name" type="xs:string" use="required"/>
185                                <xs:anyAttribute/>
186                            </xs:complexType>
187                        </xs:element>
188                    </xs:sequence>
189                    <xs:anyAttribute/>
190                </xs:complexType>
191            </xs:element>
192            <xs:element ref="core:extension" minOccurs="0" />
193        </xs:all>
194        <xs:attribute name="id" type="xs:ID" />
195        <xs:attribute name="subid" type="xs:string" default=""/>
196        <xs:attribute name="name" type="xs:string" use="required"/>
197        <xs:attribute name="system" type="xs:string" use="required"/>
198        <xs:anyAttribute/>
199    </xs:complexType>
200</xs:element>
201<xs:simpleType name="costroundingtype">
202    <xs:restriction base="xs:string">
203        <xs:enumeration value="Up"/>
204        <xs:enumeration value="Down"/>
205        <xs:enumeration value="Banker"/>
206        <xs:enumeration value="UpToHalf"/>
207        <xs:enumeration value="DownToHalf"/>
208        <xs:enumeration value="BankerToHalf"/>
209    </xs:restriction>
210</xs:simpleType>
211<xs:simpleType name="armourtype">
212    <xs:restriction base="xs:string">
213        <xs:enumeration value="None"/>
214        <xs:enumeration value="Shield"/>
215        <xs:enumeration value="LightArmour"/>
216        <xs:enumeration value="LightArmourShield"/>
217        <xs:enumeration value="HeavyArmour"/>
218        <xs:enumeration value="HeavyArmourShield"/>
219        <xs:enumeration value="Barding"/>
220        <xs:enumeration value="BardingShield"/>
221        <xs:enumeration value="BardingLightArmour"/>
222        <xs:enumeration value="BardingLightArmourShield"/>
223        <xs:enumeration value="BardingHeavyArmour"/>
224        <xs:enumeration value="BardingHeavyArmourShield"/>
225    </xs:restriction>
226</xs:simpleType>
227</xs:schema>