view dtds/race.xsd @ 73:5eb1bc0a6d96

Re #80: Collapse XSD definitions * Collapse Race XSD definition
author IBBoard <dev@ibboard.co.uk>
date Sun, 10 May 2009 19:13:10 +0000
parents 3fa4658c50c6
children 76d274df9f28
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: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: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>