changeset 74:76d274df9f28

Closes #80: Collapse XSD definitions * Replace spaces with tabs for indenting
author IBBoard <dev@ibboard.co.uk>
date Sun, 10 May 2009 19:18:10 +0000
parents 5eb1bc0a6d96
children 1091082c27eb
files dtds/army.xsd dtds/race.xsd dtds/system.xsd dtds/warfoundry-cats.xsd dtds/warfoundry-core.xsd
diffstat 5 files changed, 298 insertions(+), 298 deletions(-) [+]
line wrap: on
line diff
--- a/dtds/army.xsd	Sun May 10 19:13:10 2009 +0000
+++ b/dtds/army.xsd	Sun May 10 19:18:10 2009 +0000
@@ -1,73 +1,73 @@
 <?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:all>
-      <xs:element name="units" minOccurs="1">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element name="unit" minOccurs="0" maxOccurs="unbounded">
-              <xs:complexType>
-                <xs:all>
-                  <xs:element name="equipment" minOccurs="0" maxOccurs="1">
-                    <xs:complexType>
-                      <xs:sequence>
-                        <xs:element name="equipItem" minOccurs="1" maxOccurs="unbounded">
-                          <xs:complexType>
-                            <xs:attribute name="id" type="xs:string" /> <!-- ID reference to either a custom equipment item or a Race equipment item -->
-                            <xs:attribute name="amount" type="core:nonNegativeDouble" use="required"/><!-- Double used to allow for percentages to be stored -->
-                            <xs:attribute name="isCustomEquipment" type="xs:boolean" default="false"/>
-                          </xs:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                    </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:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                    </xs:complexType>
-                  </xs:element>
-                </xs:all>
-                <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:complexType>
-            </xs:element>
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-      <xs:element name="customEquipment" minOccurs="1">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element name="customEquip" minOccurs="0" maxOccurs="unbounded">
-              <xs:complexType>
-                <xs:sequence>
-                  <xs:element name="customEquipPart" minOccurs="1" maxOccurs="unbounded">
-                    <xs:complexType>
-                      <xs:attribute name="partIDRef" type="xs:string" />
-                    </xs:complexType>
-                  </xs:element>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:ID" />
-              </xs:complexType>
-            </xs:element>
-          </xs:sequence>
-        </xs:complexType>
-      </xs:element>
-    </xs:all>
-    <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:complexType>
+	<xs:complexType>
+		<xs:all>
+			<xs:element name="units" minOccurs="1">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="unit" minOccurs="0" maxOccurs="unbounded">
+							<xs:complexType>
+								<xs:all>
+									<xs:element name="equipment" minOccurs="0" maxOccurs="1">
+										<xs:complexType>
+											<xs:sequence>
+												<xs:element name="equipItem" minOccurs="1" maxOccurs="unbounded">
+													<xs:complexType>
+														<xs:attribute name="id" type="xs:string" /> <!-- ID reference to either a custom equipment item or a Race equipment item -->
+														<xs:attribute name="amount" type="core:nonNegativeDouble" use="required"/><!-- Double used to allow for percentages to be stored -->
+														<xs:attribute name="isCustomEquipment" type="xs:boolean" default="false"/>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+										</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:complexType>
+												</xs:element>
+											</xs:sequence>
+										</xs:complexType>
+									</xs:element>
+								</xs:all>
+								<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:complexType>
+						</xs:element>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="customEquipment" minOccurs="1">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="customEquip" minOccurs="0" maxOccurs="unbounded">
+							<xs:complexType>
+								<xs:sequence>
+									<xs:element name="customEquipPart" minOccurs="1" maxOccurs="unbounded">
+										<xs:complexType>
+											<xs:attribute name="partIDRef" type="xs:string" />
+										</xs:complexType>
+									</xs:element>
+								</xs:sequence>
+								<xs:attribute name="id" type="xs:ID" />
+							</xs:complexType>
+						</xs:element>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:all>
+		<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:complexType>
 </xs:element>
 </xs:schema>
\ No newline at end of file
--- a/dtds/race.xsd	Sun May 10 19:13:10 2009 +0000
+++ b/dtds/race.xsd	Sun May 10 19:18:10 2009 +0000
@@ -2,177 +2,177 @@
 <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:extension>
-                            </xs:simpleContent>
-                          </xs:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                    </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:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                    </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:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                    </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:extension>
-                            </xs:simpleContent>
-                          </xs:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                    </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:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                    </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:extension>
-                            </xs:simpleContent>
-                          </xs:complexType>
-                        </xs:element>
-                      </xs:sequence>
-                    </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: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:complexType>
-            </xs:element>
-          </xs:sequence>
-        </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:complexType>
-            </xs:element>
-          </xs:sequence>
-        </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:complexType>
+	<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:extension>
+														</xs:simpleContent>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+										</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:complexType>
+												</xs:element>
+											</xs:sequence>
+										</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:complexType>
+												</xs:element>
+											</xs:sequence>
+										</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:extension>
+														</xs:simpleContent>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+										</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:complexType>
+												</xs:element>
+											</xs:sequence>
+										</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:extension>
+														</xs:simpleContent>
+													</xs:complexType>
+												</xs:element>
+											</xs:sequence>
+										</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: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:complexType>
+						</xs:element>
+					</xs:sequence>
+				</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:complexType>
+						</xs:element>
+					</xs:sequence>
+				</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:complexType>
 </xs:element>
 <xs:simpleType name="updowntype">
-  <xs:restriction base="xs:string">
-    <xs:enumeration value="up"/>
-    <xs:enumeration value="down"/>
-  </xs:restriction>
+	<xs:restriction base="xs:string">
+		<xs:enumeration value="up"/>
+		<xs:enumeration value="down"/>
+	</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: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
--- a/dtds/system.xsd	Sun May 10 19:13:10 2009 +0000
+++ b/dtds/system.xsd	Sun May 10 19:18:10 2009 +0000
@@ -2,33 +2,33 @@
 <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/system" xmlns="http://ibboard.co.uk/warfoundry/system" elementFormDefault="qualified">
 <xs:element name="system">
-  <xs:complexType>
-    <xs:all>
-      <xs:element name="categories" type="cats:categoriestype" minOccurs="1"/>
-      <xs:element name="sysStatsList" minOccurs="1">
-        <xs:complexType>
-          <xs:sequence>
-            <xs:element name="sysStats" minOccurs="1" maxOccurs="unbounded">
-              <xs:complexType>
-                <xs:sequence>
-                  <xs:element name="sysStat" minOccurs="1" maxOccurs="unbounded">
-                    <xs:complexType>
-                      <xs:attribute name="name" type="xs:string" use="required"/>
-                    </xs:complexType>
-                  </xs:element>
-                </xs:sequence>
-                <xs:attribute name="id" type="xs:ID" />
-              </xs:complexType>
-            </xs:element>
-          </xs:sequence>
-          <xs:attribute name="defaultStats" type="xs:IDREF" />
-        </xs:complexType>
-      </xs:element>
-    </xs:all>
-    <xs:attribute name="id" type="xs:ID" />
-    <xs:attribute name="name" type="xs:string" use="required"/>
-    <xs:attribute name="warn" type="xs:boolean" default="false"/>
-    <xs:attribute name="allowAllies" type="xs:boolean" default="true"/>
-  </xs:complexType>
+	<xs:complexType>
+		<xs:all>
+			<xs:element name="categories" type="cats:categoriestype" minOccurs="1"/>
+			<xs:element name="sysStatsList" minOccurs="1">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="sysStats" minOccurs="1" maxOccurs="unbounded">
+							<xs:complexType>
+								<xs:sequence>
+									<xs:element name="sysStat" minOccurs="1" maxOccurs="unbounded">
+										<xs:complexType>
+											<xs:attribute name="name" type="xs:string" use="required"/>
+										</xs:complexType>
+									</xs:element>
+								</xs:sequence>
+								<xs:attribute name="id" type="xs:ID" />
+							</xs:complexType>
+						</xs:element>
+					</xs:sequence>
+					<xs:attribute name="defaultStats" type="xs:IDREF" />
+				</xs:complexType>
+			</xs:element>
+		</xs:all>
+		<xs:attribute name="id" type="xs:ID" />
+		<xs:attribute name="name" type="xs:string" use="required"/>
+		<xs:attribute name="warn" type="xs:boolean" default="false"/>
+		<xs:attribute name="allowAllies" type="xs:boolean" default="true"/>
+	</xs:complexType>
 </xs:element>
 </xs:schema>
\ No newline at end of file
--- a/dtds/warfoundry-cats.xsd	Sun May 10 19:13:10 2009 +0000
+++ b/dtds/warfoundry-cats.xsd	Sun May 10 19:18:10 2009 +0000
@@ -2,17 +2,17 @@
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:core="http://ibboard.co.uk/warfoundry/core" targetNamespace="http://ibboard.co.uk/warfoundry/cats"
 xmlns="http://ibboard.co.uk/warfoundry/cats" elementFormDefault="qualified">
 <xs:complexType name="categoriestype">
-  <xs:sequence>
-    <xs:element name="cat" minOccurs="1" maxOccurs="unbounded">
-      <xs:complexType>
-        <xs:attribute name="id" type="xs:ID" />
-        <xs:attribute name="name" type="xs:string" use="required"/>
-        <xs:attribute name="minPoints" type="core:nonNegativeDouble" default="0"/>
-        <xs:attribute name="maxPoints" type="core:nonNegativeOrInfiniteInteger" default="-1"/>
-        <xs:attribute name="minPercentage" type="core:percentage" default="0"/>
-        <xs:attribute name="maxPercentage" type="core:percentage" default="100"/>
-      </xs:complexType>
-	</xs:element>
-  </xs:sequence>
+	<xs:sequence>
+		<xs:element name="cat" minOccurs="1" maxOccurs="unbounded">
+			<xs:complexType>
+				<xs:attribute name="id" type="xs:ID" />
+				<xs:attribute name="name" type="xs:string" use="required"/>
+				<xs:attribute name="minPoints" type="core:nonNegativeDouble" default="0"/>
+				<xs:attribute name="maxPoints" type="core:nonNegativeOrInfiniteInteger" default="-1"/>
+				<xs:attribute name="minPercentage" type="core:percentage" default="0"/>
+				<xs:attribute name="maxPercentage" type="core:percentage" default="100"/>
+			</xs:complexType>
+		</xs:element>
+	</xs:sequence>
 </xs:complexType>
 </xs:schema>
\ No newline at end of file
--- a/dtds/warfoundry-core.xsd	Sun May 10 19:13:10 2009 +0000
+++ b/dtds/warfoundry-core.xsd	Sun May 10 19:18:10 2009 +0000
@@ -2,41 +2,41 @@
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ibboard.co.uk/warfoundry/core"
 xmlns="http://ibboard.co.uk/warfoundry/core" elementFormDefault="qualified">
 <xs:simpleType name="positiveOrInfiniteInteger">
-  <xs:union memberTypes="xs:positiveInteger infinity"/>
+	<xs:union memberTypes="xs:positiveInteger infinity"/>
 </xs:simpleType>
 <xs:simpleType name="nonNegativeOrInfiniteInteger">
-  <xs:union memberTypes="xs:nonNegativeInteger infinity"/>
+	<xs:union memberTypes="xs:nonNegativeInteger infinity"/>
 </xs:simpleType>
 <xs:simpleType name="infinity">
-  <xs:restriction base="xs:integer">
-    <xs:minInclusive value="-1"/>
-    <xs:maxInclusive value="-1"/>
-  </xs:restriction>
+	<xs:restriction base="xs:integer">
+		<xs:minInclusive value="-1"/>
+		<xs:maxInclusive value="-1"/>
+	</xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="nonNegativeDouble">
-  <xs:restriction base="xs:double">
-    <xs:minInclusive value="0"/>
-  </xs:restriction>
+	<xs:restriction base="xs:double">
+		<xs:minInclusive value="0"/>
+	</xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="nonNegativeNonInfiniteDouble">
-  <xs:restriction base="xs:double">
-    <xs:minInclusive value="0"/>
-    <xs:maxExclusive value="INF"/>
-  </xs:restriction>
+	<xs:restriction base="xs:double">
+		<xs:minInclusive value="0"/>
+		<xs:maxExclusive value="INF"/>
+	</xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="percentage">
-  <xs:restriction base="xs:double">
-    <xs:minInclusive value="0"/>
-    <xs:maxInclusive value="100"/>
-  </xs:restriction>
+	<xs:restriction base="xs:double">
+		<xs:minInclusive value="0"/>
+		<xs:maxInclusive value="100"/>
+	</xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="nonNegativeOrInfiniteIntegerOrRatio">
-  <xs:union memberTypes="xs:nonNegativeInteger infinity ratio"/>
+	<xs:union memberTypes="xs:nonNegativeInteger infinity ratio"/>
 </xs:simpleType>
 <xs:simpleType name="ratio">
-  <xs:restriction base="xs:double">
-    <xs:minInclusive value="0"/>
-    <xs:maxInclusive value="1"/>
-  </xs:restriction>
+	<xs:restriction base="xs:double">
+		<xs:minInclusive value="0"/>
+		<xs:maxInclusive value="1"/>
+	</xs:restriction>
 </xs:simpleType>
 </xs:schema>
\ No newline at end of file