233 lines
8.3 KiB
XML
233 lines
8.3 KiB
XML
<!--
|
|
Copyright (C) 2025 Michael Becker <alcexhim@gmail.com>
|
|
|
|
This file is part of mocha-suv.
|
|
|
|
mocha-suv is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
mocha-suv is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with mocha-suv. If not, see <https://www.gnu.org/licenses/>.
|
|
-->
|
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="https://schemas.mochapowered.com/MochaX" xmlns:mx="https://schemas.mochapowered.com/MochaX" elementFormDefault="qualified">
|
|
<xs:group name="attributeDefinitionsGroup">
|
|
<xs:sequence>
|
|
<xs:element name="attributes" minOccurs="0" maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="attributeReference">
|
|
<xs:complexType>
|
|
<xs:attribute name="attributeInstanceId" use="required" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:group>
|
|
<xs:group name="attributeValuesGroup">
|
|
<xs:sequence>
|
|
<xs:element name="attributes" minOccurs="0" maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="attribute">
|
|
<xs:complexType>
|
|
<xs:attribute name="id" use="required" type="xs:string" />
|
|
<xs:attribute name="value" type="xs:string" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:element name="relationships" minOccurs="0" maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="relationship">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="targetInstances" type="mx:instanceReferenceOrDefinitionList">
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute name="id" use="required" type="xs:string" />
|
|
<xs:attribute name="value" type="xs:string" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:group>
|
|
<xs:complexType name="referenceList">
|
|
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
<!--
|
|
<xs:element name="tenantReference">
|
|
<xs:complexType>
|
|
<xs:attribute name="tenantId" use="required"></xs:attribute>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
-->
|
|
<xs:element name="libraryReference">
|
|
<xs:complexType>
|
|
<xs:attribute name="libraryId" use="required"></xs:attribute>
|
|
<xs:attribute name="filename" use="optional"></xs:attribute>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:choice>
|
|
</xs:complexType>
|
|
<xs:complexType name="instanceReferenceList">
|
|
<xs:group ref="mx:instanceReferenceGroup" />
|
|
</xs:complexType>
|
|
<xs:complexType name="instanceReferenceOrDefinitionList">
|
|
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
<xs:group ref="mx:instanceReferenceGroup" />
|
|
<xs:group ref="mx:instanceDefinitionGroup" />
|
|
</xs:choice>
|
|
</xs:complexType>
|
|
<xs:simpleType name="tenantType">
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="production" />
|
|
<xs:enumeration value="sandbox" />
|
|
<xs:enumeration value="implementation" />
|
|
<xs:enumeration value="sandbox-preview" />
|
|
<xs:enumeration value="implementation-preview" />
|
|
<xs:enumeration value="development" />
|
|
<xs:enumeration value="quality-preview" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
<xs:simpleType name="attributeType">
|
|
<xs:restriction base="xs:string">
|
|
<xs:enumeration value="text" />
|
|
<xs:enumeration value="boolean" />
|
|
<xs:enumeration value="numeric" />
|
|
<xs:enumeration value="date" />
|
|
<xs:enumeration value="xml" />
|
|
<xs:enumeration value="file" />
|
|
</xs:restriction>
|
|
</xs:simpleType>
|
|
<xs:group name="instanceReferenceGroup">
|
|
<xs:sequence>
|
|
<xs:element name="instanceReference">
|
|
<xs:complexType>
|
|
<xs:attribute name="instanceId" use="required" type="xs:string" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:group>
|
|
<xs:group name="instanceDefinitionGroup">
|
|
<xs:choice>
|
|
<xs:element name="instance">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:group ref="mx:attributeValuesGroup" />
|
|
</xs:sequence>
|
|
<xs:attribute name="classId" use="required" />
|
|
<xs:attribute name="instanceId" use="required" />
|
|
<xs:attribute name="classIndex" />
|
|
<xs:attribute name="instanceIndex" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:element name="class">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:group ref="mx:attributeDefinitionsGroup"></xs:group>
|
|
<xs:element name="instances" minOccurs="0" maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="instance" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:group ref="mx:attributeValuesGroup" />
|
|
<xs:attribute name="id" use="required" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
<xs:attribute name="id" use="required" />
|
|
<xs:attribute name="index" />
|
|
<xs:attribute name="name" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:element name="attribute">
|
|
<xs:complexType>
|
|
<xs:attribute name="id" use="required" />
|
|
<xs:attribute name="index" type="xs:positiveInteger" use="required" />
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
|
<xs:attribute name="type" type="mx:attributeType" use="required" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:element name="relationship">
|
|
<xs:complexType>
|
|
<xs:attribute name="id" use="required" />
|
|
<xs:attribute name="sourceClassId" type="xs:string" use="required" />
|
|
<xs:attribute name="type" type="xs:string" use="required" />
|
|
<xs:attribute name="targetClassId" type="xs:string" use="required" />
|
|
<xs:attribute name="singular" type="xs:boolean" />
|
|
|
|
<xs:attribute name="siblingType" type="xs:string" />
|
|
<xs:attribute name="siblingInstanceId" type="xs:string" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:choice>
|
|
</xs:group>
|
|
|
|
<xs:complexType name="instanceList">
|
|
<xs:group ref="mx:instanceDefinitionGroup" minOccurs="0" maxOccurs="unbounded" />
|
|
</xs:complexType>
|
|
<xs:element name="mocha">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="library" minOccurs="0" maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="baseAddress" minOccurs="0" maxOccurs="1">
|
|
<!--
|
|
Defines the initial index values used for classes, attributes, and relationships.
|
|
-->
|
|
<xs:complexType>
|
|
<xs:attribute name="classIndex" type="xs:positiveInteger" />
|
|
<xs:attribute name="attributeIndex" type="xs:positiveInteger" />
|
|
<xs:attribute name="relationshipIndex" type="xs:positiveInteger" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:element name="references" minOccurs="0" maxOccurs="1" type="mx:referenceList" />
|
|
<xs:element name="instances" minOccurs="0" maxOccurs="1" type="mx:instanceList" />
|
|
</xs:sequence>
|
|
<xs:attribute name="id" use="required" />
|
|
<xs:attribute name="name" />
|
|
<xs:attribute name="filename" type="xs:string" />
|
|
</xs:complexType>
|
|
</xs:element>
|
|
<xs:element name="application" minOccurs="0" maxOccurs="1">
|
|
<xs:complexType>
|
|
<xs:choice>
|
|
<xs:element name="tenants">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="tenant" minOccurs="1" maxOccurs="unbounded">
|
|
<xs:complexType>
|
|
<xs:sequence>
|
|
<xs:element name="references" minOccurs="0" maxOccurs="1" type="mx:referenceList" />
|
|
<xs:element name="instances" minOccurs="0" maxOccurs="1" type="mx:instanceList" />
|
|
</xs:sequence>
|
|
<xs:attribute name="name" use="required" />
|
|
<xs:attribute name="type" use="required" type="mx:tenantType"></xs:attribute>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:choice>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:sequence>
|
|
</xs:complexType>
|
|
</xs:element>
|
|
</xs:schema> |