view dtds/race.xsd @ 151:1d13820b3d96

Fixes #176: Bug when saving recently edited army * Add loaded file cleanup to AbstractWarFoundryFactory * Add override of method with Zip reference closing to WarFoundryXmlFactory WarFoundry now no longer ends up with trailing handles to files, although why they only caused problems in some situations is unknown Also: * Some line ending fixes (curse cross-platform development and different line terminators!)
author IBBoard <dev@ibboard.co.uk>
date Sat, 26 Sep 2009 18:48:36 +0000
parents 938409fc24cc
children 0c0e14f03785
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" minOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="unit" minOccurs="1" maxOccurs="unbounded">
							<xs:complexType>
								<xs:all>
									<xs:element name="stats" minOccurs="1">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="stat" minOccurs="1" 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="unitEquipment">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="unitEquipmentItem" maxOccurs="unbounded">
													<xs:complexType>
														<xs:attribute name="id" type="xs:IDREF" />
														<xs:attribute name="required" type="xs:boolean" default="false"/>
														<xs:attribute name="exclusivityGroup" type="xs:string" default=""/>
														<xs:attribute name="minNum" type="core:nonNegativeOrInfiniteInteger" default="-1"/>
														<xs:attribute name="maxNum" type="core:nonNegativeOrInfiniteInteger" default="-1"/>
														<xs:attribute name="minPercentage" type="core:percentage" default="100"/>
														<xs:attribute name="maxPercentage" type="core:percentage" default="100"/>
														<xs:attribute name="roundDirection" type="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">
													<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: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: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: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: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="updowntype">
	<xs:restriction base="xs:string">
		<xs:enumeration value="up"/>
		<xs:enumeration value="down"/>
	</xs:restriction>
</xs:simpleType>
<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>