Slightly more accurate XSD. (#2787)

XML 1.0 does not provide a method that allows elements with minimum
occurances and variable occurances in any order, so we are stuck
with xs:sequence.
This commit is contained in:
Psithief 2017-06-30 08:52:44 +08:00 committed by Zach H
parent e8dbdc3c6d
commit 61893faf3b

View file

@ -1,4 +1,13 @@
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="relatedType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="count" use="optional"/>
<xs:attribute type="xs:string" name="exclude" use="optional"/>
<xs:attribute type="xs:string" name="attach" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="cockatrice_carddatabase"> <xs:element name="cockatrice_carddatabase">
<xs:complexType> <xs:complexType>
<xs:all> <xs:all>
@ -7,12 +16,12 @@
<xs:sequence> <xs:sequence>
<xs:element name="set" maxOccurs="unbounded" minOccurs="0"> <xs:element name="set" maxOccurs="unbounded" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:choice maxOccurs="unbounded"> <xs:all>
<xs:element type="xs:string" name="name" minOccurs="1" maxOccurs="1"/> <xs:element type="xs:string" name="name" minOccurs="1" maxOccurs="1"/>
<xs:element type="xs:string" name="longname" maxOccurs="1" /> <xs:element type="xs:string" name="longname" minOccurs="0" maxOccurs="1" />
<xs:element type="xs:string" name="settype" maxOccurs="1"/> <xs:element type="xs:string" name="settype" minOccurs="0" maxOccurs="1"/>
<xs:element type="xs:string" name="releasedate" maxOccurs="1"/> <xs:element type="xs:string" name="releasedate" minOccurs="0" maxOccurs="1"/>
</xs:choice> </xs:all>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
@ -23,7 +32,7 @@
<xs:sequence> <xs:sequence>
<xs:element name="card" maxOccurs="unbounded" minOccurs="0"> <xs:element name="card" maxOccurs="unbounded" minOccurs="0">
<xs:complexType> <xs:complexType>
<xs:choice maxOccurs="unbounded"> <xs:sequence>
<xs:element type="xs:string" name="name" /> <xs:element type="xs:string" name="name" />
<xs:element name="set" maxOccurs="unbounded" minOccurs="1"> <xs:element name="set" maxOccurs="unbounded" minOccurs="1">
<xs:complexType> <xs:complexType>
@ -38,39 +47,22 @@
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element type="xs:string" name="color" minOccurs="0" maxOccurs="5" /> <xs:element type="xs:string" name="color" minOccurs="0" maxOccurs="5" />
<xs:element type="xs:string" name="manacost" maxOccurs="1" /> <xs:element type="relatedType" name="related" minOccurs="0" maxOccurs="unbounded" />
<xs:element type="xs:string" name="manacost" minOccurs="0" maxOccurs="1" />
<xs:element type="xs:string" name="cmc" minOccurs="0" maxOccurs="1" default="0" />
<xs:element type="xs:string" name="type" minOccurs="1" maxOccurs="1" /> <xs:element type="xs:string" name="type" minOccurs="1" maxOccurs="1" />
<xs:element type="xs:string" name="pt" minOccurs="0" maxOccurs="1" /> <xs:element type="xs:string" name="pt" minOccurs="0" maxOccurs="1" />
<xs:element type="xs:integer" name="tablerow" maxOccurs="1" /> <xs:element type="xs:integer" name="tablerow" maxOccurs="1" />
<xs:element type="xs:string" name="text" maxOccurs="1" /> <xs:element type="xs:string" name="text" minOccurs="0" maxOccurs="1" />
<xs:element type="xs:boolean" name="cipt" minOccurs="0" maxOccurs="1" /> <xs:element type="xs:boolean" name="cipt" minOccurs="0" maxOccurs="1" />
<xs:element type="xs:string" name="loyalty" minOccurs="0" maxOccurs="1" /> <xs:element type="xs:string" name="loyalty" minOccurs="0" maxOccurs="1" />
<xs:element type="xs:string" name="cmc" minOccurs="1" maxOccurs="1" />
<xs:element type="xs:boolean" name="upsidedown" minOccurs="0" maxOccurs="1" /> <xs:element type="xs:boolean" name="upsidedown" minOccurs="0" maxOccurs="1" />
<xs:element type="xs:boolean" name="token" minOccurs="0" maxOccurs="1" /> <xs:element type="xs:boolean" name="token" minOccurs="0" maxOccurs="1" />
<xs:element name="related" minOccurs="0" maxOccurs="unbounded"> <xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:complexType> <xs:element type="relatedType" name="related" />
<xs:simpleContent> <xs:element type="relatedType" name="reverse-related" />
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="count" use="optional"/>
<xs:attribute type="xs:string" name="exclude" use="optional"/>
<xs:attribute type="xs:string" name="attach" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="reverse-related" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="count" use="optional"/>
<xs:attribute type="xs:string" name="exclude" use="optional"/>
<xs:attribute type="xs:string" name="attach" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice> </xs:choice>
</xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>