Files
oboe/rsrc/schemas/outdoor.xsd
Celtic Minstrel 1894b31e20 Implement loading of scenarios
- This also tweaks the scenario schemas for consistency between schemas and code, adds some unique key restraints, and makes some attributes required.
2015-02-11 14:03:03 -05:00

99 lines
3.4 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="bool">
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
<xs:attributeGroup name="rect">
<xs:attribute name="top" use="required" type="xs:integer"/>
<xs:attribute name="left" use="required" type="xs:integer"/>
<xs:attribute name="bottom" use="required" type="xs:integer"/>
<xs:attribute name="right" use="required" type="xs:integer"/>
</xs:attributeGroup>
<xs:attributeGroup name="point">
<xs:attribute name="x" use="required" type="xs:integer"/>
<xs:attribute name="y" use="required" type="xs:integer"/>
</xs:attributeGroup>
<xs:complexType name="encounter">
<xs:sequence>
<xs:element name="monster" minOccurs="1" maxOccurs="10">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="friendly" type="bool" default="false"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="onmeet" type="xs:integer" minOccurs="0"/>
<xs:element name="onwin" type="xs:integer" minOccurs="0"/>
<xs:element name="onflee" type="xs:integer" minOccurs="0"/>
<xs:element name="sdf" minOccurs="0">
<xs:complexType>
<xs:attributeGroup ref="point"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="can-flee" type="bool" default="true"/>
</xs:complexType>
<xs:element name="sector">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="comment" type="xs:string" minOccurs="0"/>
<xs:element name="sound" minOccurs="0">
<xs:simpleType>
<xs:union memberTypes="xs:integer">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="birds"/>
<xs:enumeration value="drip"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:element>
<xs:element name="encounter" type="encounter" minOccurs="0" maxOccurs="4"/>
<xs:element name="wandering" type="encounter" minOccurs="0" maxOccurs="4"/>
<xs:element name="sign" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="area" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attributeGroup ref="rect"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="string" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="boes" type="xs:string" use="required"/>
</xs:complexType>
<xs:unique name='stringIds'>
<xs:selector xpath='string'/>
<xs:field xpath='@id'/>
</xs:unique>
<xs:unique name='signIds'>
<xs:selector xpath='sign'/>
<xs:field xpath='@id'/>
</xs:unique>
</xs:element>
</xs:schema>