Mercurial > repos > snowblizz-super-API-ideas
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>