Proper XSD files for armor, skills and weapon XML files.

This commit is contained in:
MobiusDev 2017-07-20 17:58:07 +00:00
parent c5bcc81e10
commit 4821621847
3 changed files with 752 additions and 0 deletions

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="item"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="for"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:integer"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="for">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="add"/>
<xs:element minOccurs="0" ref="enchant"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="add">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="and"/>
</xs:sequence>
<xs:attribute name="order" use="required" type="xs:NMTOKEN"/>
<xs:attribute name="stat" use="required" type="xs:NCName"/>
<xs:attribute name="val" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="and">
<xs:complexType>
<xs:sequence>
<xs:element ref="using"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="using">
<xs:complexType>
<xs:attribute name="slotitem" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="enchant">
<xs:complexType>
<xs:attribute name="order" use="required" type="xs:NMTOKEN"/>
<xs:attribute name="stat" use="required" type="xs:NCName"/>
<xs:attribute name="val" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,595 @@
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element name="skill" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="table">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="enchant1">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="enchant2">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="set">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="cond">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="player" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:byte" name="hp" use="optional"/>
<xs:attribute type="xs:string" name="flying" use="optional"/>
<xs:attribute type="xs:byte" name="seed_various" use="optional"/>
<xs:attribute type="xs:byte" name="seed_fire" use="optional"/>
<xs:attribute type="xs:byte" name="seed_water" use="optional"/>
<xs:attribute type="xs:byte" name="seed_wind" use="optional"/>
<xs:attribute type="xs:byte" name="seed_any" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="msg" use="optional"/>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="for">
<xs:complexType mixed="true">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="effect">
<xs:complexType mixed="true">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="add">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="player" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="flying" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="sub">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="mul">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="and" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="player" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="front" use="optional"/>
<xs:attribute type="xs:string" name="behind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="target">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="using">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="set">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="stat"/>
<xs:attribute type="xs:short" name="val"/>
<xs:attribute type="xs:string" name="order"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="div">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute type="xs:string" name="count" use="optional"/>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="time" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
<xs:attribute type="xs:string" name="stackOrder" use="optional"/>
<xs:attribute type="xs:string" name="stackType" use="optional"/>
<xs:attribute type="xs:string" name="abnormal" use="optional"/>
<xs:attribute type="xs:byte" name="self" use="optional"/>
<xs:attribute type="xs:byte" name="noicon" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="sub">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="add">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="and" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="not" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="using">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="player" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="moving" use="optional"/>
<xs:attribute type="xs:string" name="running" use="optional"/>
<xs:attribute type="xs:string" name="resting" use="optional"/>
<xs:attribute type="xs:string" name="behind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="player" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="resting" use="optional"/>
<xs:attribute type="xs:string" name="running" use="optional"/>
<xs:attribute type="xs:byte" name="hp" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="mul">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="and" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="not" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="using">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="player" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="behind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="player" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:byte" name="hp" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="cond">
<xs:complexType>
<xs:sequence>
<xs:element name="game" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="time"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="player" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="state"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="set">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="stat"/>
<xs:attribute type="xs:short" name="val"/>
<xs:attribute type="xs:string" name="order"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="using">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="enchant1for">
<xs:complexType>
<xs:sequence>
<xs:element name="cond" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="player">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="state"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="effect" minOccurs="0">
<xs:complexType mixed="true">
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="mul">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="add">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="sub">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:byte" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="set">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="stat"/>
<xs:attribute type="xs:short" name="val"/>
<xs:attribute type="xs:string" name="order"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute type="xs:string" name="count" use="optional"/>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="time" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
<xs:attribute type="xs:string" name="stackOrder" use="optional"/>
<xs:attribute type="xs:string" name="stackType" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="add" maxOccurs="unbounded" minOccurs="0">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="enchant2for">
<xs:complexType>
<xs:sequence>
<xs:element name="effect" minOccurs="0">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="add" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="mul" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="order"/>
<xs:attribute type="xs:string" name="stat"/>
<xs:attribute type="xs:float" name="val"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="count" use="optional"/>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:byte" name="time" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
<xs:attribute type="xs:byte" name="stackOrder" use="optional"/>
<xs:attribute type="xs:string" name="stackType" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="add" maxOccurs="unbounded" minOccurs="0">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="using" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="kind" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="order" use="optional"/>
<xs:attribute type="xs:string" name="stat" use="optional"/>
<xs:attribute type="xs:string" name="val" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute type="xs:short" name="id" use="optional"/>
<xs:attribute type="xs:byte" name="levels" use="optional"/>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:byte" name="enchantLevels1" use="optional"/>
<xs:attribute type="xs:byte" name="enchantLevels2" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="item"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="for"/>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:integer"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="for">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub"/>
<xs:choice maxOccurs="unbounded">
<xs:element ref="add"/>
<xs:element ref="enchant"/>
<xs:element ref="mul"/>
<xs:element ref="set"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sub">
<xs:complexType>
<xs:attribute name="order" use="required" type="xs:NMTOKEN"/>
<xs:attribute name="stat" use="required" type="xs:NCName"/>
<xs:attribute name="val" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="add">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="and"/>
</xs:sequence>
<xs:attribute name="order" use="required" type="xs:NMTOKEN"/>
<xs:attribute name="stat" use="required" type="xs:NCName"/>
<xs:attribute name="val" use="required" type="xs:decimal"/>
</xs:complexType>
</xs:element>
<xs:element name="enchant">
<xs:complexType>
<xs:attribute name="order" use="required" type="xs:NMTOKEN"/>
<xs:attribute name="stat" use="required" type="xs:NCName"/>
<xs:attribute name="val" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="mul">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="and"/>
</xs:sequence>
<xs:attribute name="order" use="required" type="xs:NMTOKEN"/>
<xs:attribute name="stat" use="required" type="xs:NCName"/>
<xs:attribute name="val" use="required" type="xs:decimal"/>
</xs:complexType>
</xs:element>
<xs:element name="set">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="and"/>
</xs:sequence>
<xs:attribute name="order" use="required" type="xs:NMTOKEN"/>
<xs:attribute name="stat" use="required" type="xs:NCName"/>
<xs:attribute name="val" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="and">
<xs:complexType>
<xs:choice>
<xs:element ref="game"/>
<xs:element ref="player"/>
<xs:element ref="using"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="game">
<xs:complexType>
<xs:attribute name="chance" use="required" type="xs:integer"/>
<xs:attribute name="skill" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="player">
<xs:complexType>
<xs:attribute name="hp" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="using">
<xs:complexType>
<xs:attribute name="slotitem" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>