view schemas/army.xsd @ 267:3f14a792fd41

Re #274: Crash when missing unit member ID * Add key and keyref for member type Re #290: Migrate to using key/keyref definitions instead of ID/IDREF type * Move keyref and key for equipment slot to correct place to be valid * Add aliased xmlns for schema to allow for use in XPath, which doesn't use default namespace * Disable warning reporting until Mono Bug 613684 is fixed (https://bugzilla.novell.com/show_bug.cgi?id=613684)
author IBBoard <dev@ibboard.co.uk>
date Sat, 12 Jun 2010 19:49:32 +0000
parents 35dc06030355
children c7a95912c1e8
line wrap: on
line source

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ibboard.co.uk/warfoundry/army" xmlns="http://ibboard.co.uk/warfoundry/army" xmlns:core="http://ibboard.co.uk/warfoundry/core" elementFormDefault="qualified">
<xs:element name="army">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="units">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="unit" minOccurs="0" maxOccurs="unbounded" type="unit"/>
					</xs:sequence>
					<xs:anyAttribute processContents="lax"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="customEquipment" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="customEquip" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="customEquipPart"  maxOccurs="unbounded">
										<xs:complexType>
											<xs:sequence>
												<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
											</xs:sequence>
											<xs:attribute name="partIDRef" type="xs:string" />
											<xs:anyAttribute processContents="lax"/>
										</xs:complexType>
									</xs:element>
									<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
								</xs:sequence>
								<xs:attribute name="id" type="xs:ID" />
								<xs:anyAttribute processContents="lax"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:anyAttribute processContents="lax"/>
				</xs:complexType>
			</xs:element>
			<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" />
		<xs:attribute name="name" type="xs:string" use="required"/>
		<xs:attribute name="system" type="xs:string" use="required"/>
		<xs:attribute name="race" type="xs:string" use="required"/>
		<xs:attribute name="maxPoints" type="xs:positiveInteger" use="required"/>
		<xs:anyAttribute processContents="lax"/>
	</xs:complexType>
</xs:element>

<!-- Re-usable complex types -->

<xs:complexType name="unit">
	<xs:sequence>
		<xs:element name="equipment" minOccurs="0">
			<xs:complexType>
				<xs:sequence>
					<xs:element name="equipItem" maxOccurs="unbounded">
						<xs:complexType>
							<xs:sequence>
								<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
							</xs:sequence>
							<xs:attribute name="id" type="xs:string" use="required" />
							<xs:attribute name="amount" type="core:nonNegativeOrInfiniteIntegerOrPercentage" use="required"/>
							<xs:attribute name="amountType" type="equipmentAmountType" default="ratio"/>
							<xs:attribute name="isCustomEquipment" type="xs:boolean" default="false"/>
							<xs:anyAttribute processContents="lax"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:anyAttribute processContents="lax"/>
			</xs:complexType>
		</xs:element>
		<xs:element name="contains" minOccurs="0">
			<xs:complexType>
				<xs:sequence>
					<xs:element name="containedUnit">
						<xs:complexType>
							<xs:sequence>
								<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
							</xs:sequence>
							<xs:attribute name="containedID" type="xs:IDREF" use="required"/>
							<xs:anyAttribute processContents="lax"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:complexType>
		</xs:element>
		<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
	</xs:sequence>
	<xs:attribute name="id" type="xs:ID" />
	<xs:attribute name="unitType" type="xs:string" use="required"/>
	<xs:attribute name="unitName" type="xs:string" use="required"/>
	<xs:attribute name="size" type="xs:positiveInteger" use="required"/>
	<xs:attribute name="race" type="xs:string" default=""/>
	<xs:attribute name="category" type="xs:string" default=""/>
	<xs:anyAttribute processContents="lax"/>
</xs:complexType>

<xs:simpleType name="equipmentAmountType">
	<xs:restriction base="xs:string">
		<xs:enumeration value="ratio"/>
		<xs:enumeration value="fixed"/>
	</xs:restriction>
</xs:simpleType>
</xs:schema>