view dtds/army.xsd @ 66:d100ca4bd0c1

Re #61 - Update classes to match schema * Add "extra data" methods to UnitType, since it may be used for requirements and we can't guarantee that the data can be fetched at the time of requirement creation no-open-ticket
author IBBoard <dev@ibboard.co.uk>
date Sat, 11 Apr 2009 14:53:45 +0000
parents 0c3500fca49d
children e7a6f460be57
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" elementFormDefault="qualified">
<xs:element name="army">
  <xs:complexType>
    <xs:all>
      <xs:element name="units" type="unitstype" minOccurs="1"/>
      <xs:element name="customEquipment" type="customequipmenttype" minOccurs="1" />
    </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:complexType name="unitstype">
  <xs:sequence>
    <xs:element name="unit" type="unittype" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="unittype">
  <xs:all>
    <xs:element name="equipment" type="equipmenttype" minOccurs="0" maxOccurs="1" />
    <xs:element name="contains" type="containstype" minOccurs="0" />
  </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:complexType name="equipmenttype">
  <xs:sequence>
    <xs:element name="equipItem" type="equipitemtype" minOccurs="1" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="equipitemtype">
  <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:complexType name="containstype">
  <xs:sequence>
    <xs:element name="containedUnit" type="containedunittype"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="containedunittype">
  <xs:attribute name="containedID" type="xs:IDREF" use="required"/>
</xs:complexType>
<xs:complexType name="customequipmenttype">
  <xs:sequence>
    <xs:element name="customEquip" type="customequiptype" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="customequiptype">
  <xs:sequence>
    <xs:element name="customEquipPart" type="customequipparttype" minOccurs="1" maxOccurs="unbounded"/>
  </xs:sequence>
  <xs:attribute name="id" type="xs:ID" />
</xs:complexType>
<xs:complexType name="customequipparttype">
  <xs:attribute name="partIDRef" type="xs:string" />
</xs:complexType>
</xs:schema>