diff schemas/race.xsd @ 224:f097888efcfe

Fixes #233: "unitPoints" attribute is badly named * Rename "unitPoints" to "basePoints" * Re-order schema to more sensible name * Use new name in code when parsing XML (object property already has sensible name) Also: * Rename "dtds" folder to more accurate "schemas" * Change references to folder in code
author IBBoard <dev@ibboard.co.uk>
date Mon, 14 Dec 2009 20:50:39 +0000
parents
children 0d5a17f33a36
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/schemas/race.xsd	Mon Dec 14 20:50:39 2009 +0000
@@ -0,0 +1,227 @@
+<?xml version="1.0"?>
+<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"
+targetNamespace="http://ibboard.co.uk/warfoundry/race" xmlns="http://ibboard.co.uk/warfoundry/race" elementFormDefault="qualified">
+<xs:element name="race">
+	<xs:complexType>
+		<xs:all>
+			<xs:element name="units">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="unit" maxOccurs="unbounded">
+							<xs:complexType>
+								<xs:all>
+									<xs:element name="stats">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="stat" maxOccurs="unbounded">
+													<xs:complexType>
+														<xs:simpleContent>
+															<xs:extension base="xs:string">
+																<xs:attribute name="name" type="xs:string" use="required"/>
+																<xs:anyAttribute/>
+															</xs:extension>
+														</xs:simpleContent>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+											<xs:attribute name="statSet" type="xs:string" default="" />
+											<xs:anyAttribute/>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="equipmentSlots" minOccurs="0">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="equipmentSlot" maxOccurs="unbounded">
+													<xs:complexType>
+														<xs:all>
+															<xs:element name="maxLimit" minOccurs="0" type="core:limit" />
+															<xs:element ref="core:extension" minOccurs="0" />													
+														</xs:all>
+														<xs:attribute name="name" type="xs:string" use="required"/>
+														<xs:anyAttribute/>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="unitEquipment" minOccurs="0">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="unitEquipmentItem" maxOccurs="unbounded">
+													<xs:complexType>
+														<xs:all>
+															<xs:element name="minLimit" minOccurs="0" type="core:limit" />
+															<xs:element name="maxLimit" minOccurs="0" type="core:limit" />
+															<xs:element ref="core:extension" minOccurs="0" />
+														</xs:all>
+														<xs:attribute name="id" type="xs:IDREF" />
+														<xs:attribute name="required" type="xs:boolean" default="false"/>
+														<!-- exclusivityGroup is deprecated in favour of the comma-separated exclusivityGroups -->
+														<xs:attribute name="exclusivityGroup" type="xs:string" default=""/>
+														<xs:attribute name="exclusivityGroups" type="xs:string" default=""/>
+														<xs:attribute name="equipmentSlot" type="xs:string"/>
+														<xs:attribute name="roundDirection" type="core:updowntype" default="up"/>
+														<xs:attribute name="costMultiplier" type="core:nonNegativeDouble" default="1"/>
+														<xs:attribute name="costRounding" type="costroundingtype" default="UpToHalf"/>
+														<xs:anyAttribute/>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+											<xs:anyAttribute/>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="unitAbilities" minOccurs="0">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="unitAbility" maxOccurs="unbounded">
+													<xs:complexType>
+														<xs:attribute name="abilityID" type="xs:IDREF" />
+														<xs:attribute name="required" type="xs:boolean" default="true"/>
+														<xs:anyAttribute/>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+											<xs:anyAttribute/>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="requirements" minOccurs="0">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="requirement">
+													<xs:complexType>
+														<xs:simpleContent>
+															<xs:extension base="xs:string">
+																<xs:attribute name="requirementName" type="xs:string" use="required"/>
+																<xs:anyAttribute/>
+															</xs:extension>
+														</xs:simpleContent>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+											<xs:anyAttribute/>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="contains" minOccurs="0">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="containedUnit" maxOccurs="unbounded">
+													<xs:complexType>
+														<xs:attribute name="containedID" type="xs:IDREF" use="required"/>
+														<xs:anyAttribute/>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+											<xs:anyAttribute/>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="extraData" minOccurs="0">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="data">
+													<xs:complexType>
+														<xs:simpleContent>
+															<xs:extension base="xs:string">
+																<xs:attribute name="id" type="xs:ID" use="required"/>
+																<xs:anyAttribute/>
+															</xs:extension>
+														</xs:simpleContent>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+											<xs:anyAttribute/>
+										</xs:complexType>
+									</xs:element>
+									<xs:element name="notes" type="xs:string" minOccurs="0" />
+									<xs:element ref="core:extension" minOccurs="0" />
+								</xs:all>
+								<xs:attribute name="id" type="xs:ID" />
+								<xs:attribute name="typeName" type="xs:string" use="required"/>
+								<xs:attribute name="cat" type="xs:string" use="required"/>
+								<xs:attribute name="unitPoints" type="core:nonNegativeNonInfiniteDouble" default="0"/>
+								<xs:attribute name="points" type="core:nonNegativeNonInfiniteDouble" use="required"/>
+								<xs:attribute name="minNum" type="xs:nonNegativeInteger" default="0"/>
+								<xs:attribute name="maxNum" type="core:positiveOrInfiniteInteger" default="-1"/>
+								<xs:attribute name="minSize" type="xs:nonNegativeInteger" default="5"/>
+								<xs:attribute name="maxSize" type="core:positiveOrInfiniteInteger" default="-1"/>
+								<xs:attribute name="baseSize" type="xs:nonNegativeInteger" default="0"/>
+								<xs:anyAttribute/>
+							</xs:complexType>
+						</xs:element>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="categories" type="cats:categoriestype" minOccurs="0" />
+			<xs:element name="equipment" minOccurs="0">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="equipmentItem" maxOccurs="unbounded">
+							<xs:complexType>
+								<xs:all>
+									<xs:element name="description" type="xs:string" minOccurs="0" />
+									<xs:element ref="core:extension" minOccurs="0" />
+								</xs:all>
+								<xs:attribute name="id" type="xs:ID" use="required"/>
+								<xs:attribute name="name" type="xs:string" use="required"/>
+								<xs:attribute name="cost" type="core:nonNegativeNonInfiniteDouble" use="required"/>
+								<xs:attribute name="armourType" type="armourtype" default="None"/>
+								<xs:anyAttribute/>
+							</xs:complexType>
+						</xs:element>
+					</xs:sequence>
+					<xs:anyAttribute/>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="abilities" minOccurs="0">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="ability" maxOccurs="unbounded">
+							<xs:complexType>
+								<xs:all>
+									<xs:element name="description" type="xs:string" />
+									<xs:element ref="core:extension" minOccurs="0" />
+								</xs:all>
+								<xs:attribute name="id" type="xs:ID" use="required"/>
+								<xs:attribute name="name" type="xs:string" use="required"/>
+								<xs:anyAttribute/>
+							</xs:complexType>
+						</xs:element>
+					</xs:sequence>
+					<xs:anyAttribute/>
+				</xs:complexType>
+			</xs:element>
+			<xs:element ref="core:extension" minOccurs="0" />
+		</xs:all>
+		<xs:attribute name="id" type="xs:ID" />
+		<xs:attribute name="subid" type="xs:string" default=""/>
+		<xs:attribute name="name" type="xs:string" use="required"/>
+		<xs:attribute name="system" type="xs:string" use="required"/>
+		<xs:anyAttribute/>
+	</xs:complexType>
+</xs:element>
+<xs:simpleType name="costroundingtype">
+	<xs:restriction base="xs:string">
+		<xs:enumeration value="Up"/>
+		<xs:enumeration value="Down"/>
+		<xs:enumeration value="Banker"/>
+		<xs:enumeration value="UpToHalf"/>
+		<xs:enumeration value="DownToHalf"/>
+		<xs:enumeration value="BankerToHalf"/>
+	</xs:restriction>
+</xs:simpleType>
+<xs:simpleType name="armourtype">
+	<xs:restriction base="xs:string">
+		<xs:enumeration value="None"/>
+		<xs:enumeration value="Shield"/>
+		<xs:enumeration value="LightArmour"/>
+		<xs:enumeration value="LightArmourShield"/>
+		<xs:enumeration value="HeavyArmour"/>
+		<xs:enumeration value="HeavyArmourShield"/>
+		<xs:enumeration value="Barding"/>
+		<xs:enumeration value="BardingShield"/>
+		<xs:enumeration value="BardingLightArmour"/>
+		<xs:enumeration value="BardingLightArmourShield"/>
+		<xs:enumeration value="BardingHeavyArmour"/>
+		<xs:enumeration value="BardingHeavyArmourShield"/>
+	</xs:restriction>
+</xs:simpleType>
+</xs:schema>
\ No newline at end of file