view dtds/race.xsd @ 219:f609bcf7035b

Fixes #222: decimal comma/point not handled correctly (again?) in costMultiplier * Replace two "type.Parse" calls with XmlTools calls All decimals in WarFoundry should use the decimal point (or "period" to Americans) rather than the decimal comma because that's what XML uses in its default type definitions
author IBBoard <dev@ibboard.co.uk>
date Sat, 28 Nov 2009 16:40:27 +0000
parents 1f39e325deee
children 7441a62c5a06
line wrap: on
line source

<?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">
							<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>