Files
assaultcube-/docs/schemas/cuberef.xsd
T
flowtron 0aedee90d1 new documentation type "scriptalias" and more than one explanation (for code) allowed
git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@5716 e016b1c5-ed68-44aa-a2f7-31cac88cffde
2010-10-06 19:18:40 +00:00

266 lines
9.0 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
XML Schema for types in a CubeScript reference document, v0.1
-->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://cubers.net/Schemas/CubeRef" xmlns="http://cubers.net/Schemas/CubeRef">
<!-- simple types -->
<xs:simpleType name="nameType">
<xs:restriction base="xs:string">
<xs:maxLength value="32" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="descriptionType">
<xs:restriction base="xs:string">
<xs:maxLength value="128" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="remarkType">
<xs:restriction base="xs:string">
<xs:maxLength value="1024" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="codeType">
<xs:restriction base="xs:string">
<xs:maxLength value="256" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="urlType">
<xs:restriction base="xs:string">
<xs:maxLength value="256">
</xs:maxLength>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tokenType">
<xs:restriction base="xs:string">
<xs:maxLength value="8" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="valueNotesType">
<xs:restriction base="xs:string">
<xs:maxLength value="128" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="keyAliasType">
<xs:restriction base="xs:string">
<xs:maxLength value="16" />
</xs:restriction>
</xs:simpleType>
<!-- complex types -->
<!-- value descriptions -->
<xs:complexType name="valueDescriptionType">
<xs:attribute name="token" use="required" type="tokenType"/>
<xs:attribute name="description" use="required" type="descriptionType"/>
<xs:attribute name="valueNotes" use="optional" type="valueNotesType"/>
</xs:complexType>
<xs:complexType name="intVariableValueDescriptionType">
<xs:complexContent>
<xs:extension base="valueDescriptionType">
<xs:attribute name="minValue" use="required" type="xs:int"/>
<xs:attribute name="maxValue" use="required" type="xs:int"/>
<xs:attribute name="defaultValue" use="required" type="xs:int"/>
<xs:attribute name="readOnly" use="optional" type="xs:boolean" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="returnValueDescriptionType">
<xs:complexContent>
<xs:extension base="valueDescriptionType">
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="argumentValueDescriptionType">
<xs:complexContent>
<xs:extension base="valueDescriptionType">
<xs:attribute name="optional" use="optional" type="xs:boolean" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="variableArgumentValueDescriptionType">
<xs:complexContent>
<xs:extension base="argumentValueDescriptionType">
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="argumentValueDescriptionCollectionType">
<xs:sequence>
<xs:element name="argument" type="argumentValueDescriptionType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="variableArgument" type="variableArgumentValueDescriptionType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<!-- keys -->
<xs:complexType name="keyType">
<xs:attribute name="alias" type="keyAliasType" use="required"/>
<xs:attribute name="name" type="nameType" use="optional"/>
<xs:attribute name="description" type="descriptionType" use="optional"/>
</xs:complexType>
<xs:complexType name="keyCollectionType">
<xs:sequence>
<xs:element name="key" type="keyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- references -->
<xs:complexType name="referenceType">
<xs:attribute name="name" use="optional" type="nameType"/>
</xs:complexType>
<xs:complexType name="identifierReferenceType">
<xs:complexContent>
<xs:extension base="referenceType">
<xs:attribute name="identifier" use="required" type="nameType" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="webReferenceType">
<xs:complexContent>
<xs:extension base="referenceType">
<xs:attribute name="url" use="required" type="urlType"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="wikiReferenceType">
<xs:complexContent>
<xs:extension base="referenceType">
<xs:attribute name="article" use="required" type="urlType"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="referenceCollectionType">
<xs:sequence>
<xs:element name="identifierReference" type="identifierReferenceType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="webReference" type="webReferenceType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- remarks -->
<xs:complexType name="remarkCollectionType">
<xs:sequence>
<xs:element name="remark" type="remarkType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- examples -->
<xs:complexType name="exampleType">
<xs:sequence>
<xs:element name="code" type="codeType" minOccurs="1" maxOccurs="1"/>
<xs:element name="explanation" type="descriptionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="exampleCollectionType">
<xs:sequence>
<xs:element name="example" type="exampleType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- identifiers -->
<xs:complexType name="identifierType" abstract="true">
<xs:choice maxOccurs="unbounded">
<xs:element name="description" type="descriptionType" minOccurs="1" maxOccurs="1"/>
<xs:element name="remarks" type="remarkCollectionType" minOccurs="0" maxOccurs="1"/>
<xs:element name="examples" type="exampleCollectionType" minOccurs="0" maxOccurs="1"/>
<xs:element name="references" type="referenceCollectionType" minOccurs="0" maxOccurs="1"/>
<xs:element name="defaultKeys" type="keyCollectionType" minOccurs="0" maxOccurs="1"/>
</xs:choice>
<xs:attribute name="name" use="required" type="nameType"/>
</xs:complexType>
<xs:complexType name="identifierCollectionType">
<xs:sequence>
<xs:element name="command" type="commandType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="variable" type="variableType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="scriptalias" type="scriptaliasType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="sort" type="xs:boolean" default="true"/>
</xs:complexType>
<xs:complexType name="commandType">
<xs:complexContent>
<xs:extension base="identifierType">
<xs:choice maxOccurs="unbounded">
<xs:element name="arguments" type="argumentValueDescriptionCollectionType" minOccurs="0" maxOccurs="1"/>
<xs:element name="return" type="returnValueDescriptionType" minOccurs="0" maxOccurs="1"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="variableType">
<xs:complexContent>
<xs:extension base="identifierType">
<xs:sequence>
<xs:element name="value" type="intVariableValueDescriptionType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="scriptaliasType">
<xs:complexContent>
<xs:extension base="identifierType">
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- sections -->
<xs:complexType name="sectionType">
<xs:sequence>
<xs:element name="description" type="descriptionType" minOccurs="0" maxOccurs="1"/>
<xs:element name="identifiers" type="identifierCollectionType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="nameType"/>
<xs:attribute name="sortindex" use="optional" type="xs:int"/>
</xs:complexType>
<xs:complexType name="sectionCollectionType">
<xs:sequence>
<xs:element name="section" type="sectionType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="sort" type="xs:boolean" default="true"/>
</xs:complexType>
<!-- document root -->
<xs:complexType name="cuberefType">
<xs:sequence>
<xs:element name="description" type="descriptionType" minOccurs="0" maxOccurs="1"/>
<xs:element name="sections" type="sectionCollectionType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="name" type="nameType" use="required"/>
<xs:attribute name="version" type="nameType" use="optional"/>
</xs:complexType>
<xs:element name="cuberef" type="cuberefType"/>
</xs:schema>