view dtds/race.xsd @ 23:f9846f896df3

Re #32 - Migrate WarFoundry files to using Schemas * Add missing spaces to Cats and Core XSD * Fix some incorrect namespaces in Race XSD * Copy schemas to output dir on build * Make WarFoundryXmlFactory validate against Schemas * Make WarFoundryLoader handle failed file loads slightly differently so that we can log out as a warning * Correctly structure "simpleContent" sections of Race XSD Still to do: * Work out why Race XSD doesn't like core:nonNegativeDecimal but appears to be fine with core:percentage * Migrate test files to define namespaces and make sure they match the structure
author IBBoard <dev@ibboard.co.uk>
date Thu, 12 Mar 2009 21:35:17 +0000
parents 28e99aa0053f
children 72312a7ac08a
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" type="unitstype" minOccurs="1"/>
      <xs:element name="categories" type="cats:categoriestype" />
      <xs:element name="equipment" type="equipmenttype" />
      <xs:element name="abilities" type="abilitiestype" />
    </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:complexType name="unitstype">
  <xs:sequence>
    <xs:element name="unit" type="unittype" minOccurs="1" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="unittype">
  <xs:all>
    <xs:element name="stats" type="statstype" minOccurs="1" />
    <xs:element name="unitEquipment" type="unitequipmenttype" />
    <xs:element name="unitAbilities" type="unitabilitiestype" />
    <xs:element name="requirements" type="requirementstype" />
    <xs:element name="contains" type="containstype" />
    <xs:element name="extraData" type="extradatatype" />
    <xs:element name="notes" type="xs:string" />
  </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:nonNegativeDecimal" default="0"/>
  <xs:attribute name="points" type="core:nonNegativeDecimal" use="required"/>
  <xs:attribute name="minNumber" type="core:nonNegativeInteger" default="0"/>
  <xs:attribute name="maxNumber" type="core:infiniteOrNonNegativeInteger" default="-1"/>
  <xs:attribute name="minSize" type="core:positiveInteger" default="5"/>
  <xs:attribute name="maxSize" type="core:infiniteOrNonNegativeInteger" default="-1"/>
  <xs:attribute name="baseSize" type="xs:nonNegativeInteger" default="0"/>
</xs:complexType>
<xs:complexType name="statstype">
  <xs:sequence>
    <xs:element name="stat" type="stattype" minOccurs="1" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="stattype">
  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>
<xs:complexType name="unitequipmenttype">
  <xs:sequence>
    <xs:element name="unitEquipmentItem" type="unitequipmentitemtype" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="unitequipmentitemtype">
  <xs:attribute name="equipID" type="xs:IDREF" />
  <xs:attribute name="required" type="xs:boolean" default="false"/>
  <xs:attribute name="exclusivityGroup" type="xs:string" default=""/>
  <xs:attribute name="minNumber" type="core:infiniteOrNonNegativeInteger" default="-1"/>
  <xs:attribute name="maxNumber" type="core:infiniteOrNonNegativeInteger" 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:complexType name="unitabilitiestype">
  <xs:sequence>
    <xs:element name="unitAbility" type="unitabilitytype" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="unitabilitytype">
  <xs:attribute name="abilityID" type="xs:IDREF" />
  <xs:attribute name="required" type="xs:boolean" default="true"/>
</xs:complexType>
<xs:simpleType name="updowntype">
  <xs:restriction base="xs:string">
    <xs:enumeration value="up"/>
    <xs:enumeration value="down"/>
  </xs:restriction>
</xs:simpleType>
<xs:complexType name="requirementstype">
  <xs:sequence>
    <xs:element name="requirement" type="requirementtype"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="requirementtype">
  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="requirementName" type="xs:string" use="required"/>
    </xs:extension>
  </xs:simpleContent>
</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="extradatatype">
  <xs:sequence>
    <xs:element name="data" type="extradatadatatype"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="extradatadatatype">
  <xs:simpleContent>
    <xs:extension base="xs:string">
      <xs:attribute name="id" type="xs:ID" use="required"/>
    </xs:extension>
  </xs:simpleContent>
</xs:complexType>
<xs:complexType name="equipmenttype">
  <xs:sequence>
    <xs:element name="equipmentItem" type="equipmentitemtype"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="equipmentitemtype">
  <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:attribute name="points" type="core:nonNegativeDecimal" use="required"/>
</xs:complexType>
<xs:complexType name="equipmenttype">
  <xs:sequence>
    <xs:element name="equipmentItem" type="equipmentitemtype"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="equipmentitemtype">
  <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:attribute name="points" type="core:nonNegativeDecimal" use="required"/>
  <xs:attribute name="armoutType" type="armourtype" default="none"/>
</xs:complexType>
<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:complexType name="abilitiestype">
  <xs:sequence>
    <xs:element name="ability" type="abilitytype"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="abilitytype">
  <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:schema>