Files
2020-09-12 16:11:43 +02:00

203 lines
7.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="scada">
<xs:complexType>
<xs:all>
<xs:element name="name" type="xs:string" minOccurs='1' maxOccurs='1'/>
<xs:element name="backgroundImagePath" type="xs:string" minOccurs='1' maxOccurs='1'/>
<xs:element name="isInProductionPage" type="xs:boolean" minOccurs='1' maxOccurs='1'/>
<xs:element name="layers">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="layer" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="buttons">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="button" type="buttonType" minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="images">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="image" type="imageType" minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="labels">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="label" type="labelType" minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="progressBars">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="progressBar" type="progressType" minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="inputs">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="input" type="inputType" minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<!-- Button type-->
<xs:complexType name="buttonType">
<xs:all>
<xs:element name="label" type="subLabelType" minOccurs='0' maxOccurs='1' />
<xs:element name="position" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="size" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="status" minOccurs='1' maxOccurs='1'>
<xs:complexType>
<xs:all>
<xs:element name="memClickIndex" type="xs:string" minOccurs='1' maxOccurs='1'/>
<xs:element name="memEnabledIndex" type="xs:string" minOccurs='1' maxOccurs='1'/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
<!-- Image type-->
<xs:complexType name="imageType">
<xs:all>
<xs:element name="imageName" type="xs:string" minOccurs='1' maxOccurs='1'/>
<xs:element name="position" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="size" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="status" minOccurs='1' maxOccurs='1'>
<xs:complexType>
<xs:all>
<xs:element name="memClickIndex" type="xs:string" minOccurs='1' maxOccurs='1'/>
<xs:element name="memVisibleIndex" type="xs:string" minOccurs='1' maxOccurs='1'/>
</xs:all>
<xs:attribute name="negate" type="xs:boolean"/>
<xs:attribute name="clickEnabled" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
<!-- label type-->
<xs:complexType name="labelType">
<xs:all>
<xs:element name="label" type="subLabelType" minOccurs='1' maxOccurs='1' />
<xs:element name="position" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="size" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="memEnabledIndex" type="xs:string" minOccurs='0' maxOccurs='1'/>
</xs:all>
</xs:complexType>
<!-- progress type-->
<xs:complexType name="progressType">
<xs:all>
<xs:element name="position" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="size" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="memValueIndex" type="xs:string" minOccurs='1' maxOccurs='1'/>
</xs:all>
</xs:complexType>
<!-- input type-->
<xs:complexType name="inputType">
<xs:all>
<xs:element name="label" type="subLabelType" minOccurs='0' maxOccurs='1' />
<xs:element name="position" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="size" type="xyType" minOccurs='1' maxOccurs='1'/>
<xs:element name="status" minOccurs='1' maxOccurs='1'>
<xs:complexType>
<xs:all>
<xs:element name="type" type="inputNumberType" minOccurs='1' maxOccurs='1'/>
<xs:element name="action" type="inputAction" minOccurs='1' maxOccurs='1'/>
<xs:element name="memEnabledIndex" type="xs:string" minOccurs='1' maxOccurs='1'/>
<xs:element name="memValueIndex" type="xs:string" minOccurs='1' maxOccurs='1'/>
<xs:element name="round" type="xs:int" minOccurs='0' maxOccurs='1'/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
<!-- XY type -->
<xs:complexType name="xyType">
<xs:attribute name="x" type="xs:int" use="required"/>
<xs:attribute name="y" type="xs:int" use="required"/>
</xs:complexType>
<!-- subLabel type -->
<xs:complexType name="subLabelType">
<xs:sequence>
<xs:element name="backgroundColor" type="hexcolorType" minOccurs='1' maxOccurs='1'/>
<xs:element name="textAlign" type="alignType" minOccurs='1' maxOccurs='1'/>
<xs:element name="textColor" type="hexcolorType" minOccurs='1' maxOccurs='1'/>
<xs:element name="textContent" type="langType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="textSize" type="xs:int" minOccurs='1' maxOccurs='1'/>
</xs:sequence>
</xs:complexType>
<!-- Language Type -->
<xs:complexType name="langType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="langKey" use="required" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- inputAction simpleType -->
<xs:simpleType name="inputAction" final="restriction" >
<xs:restriction base="xs:string">
<xs:enumeration value="READ" />
<xs:enumeration value="WRITE" />
</xs:restriction>
</xs:simpleType>
<!-- inputNumberType simpleType -->
<xs:simpleType name="inputNumberType" final="restriction" >
<xs:restriction base="xs:string">
<xs:enumeration value="BOOL" />
<xs:enumeration value="BYTE" />
<xs:enumeration value="WORD" />
<xs:enumeration value="INT" />
<xs:enumeration value="REAL" />
</xs:restriction>
</xs:simpleType>
<!-- align simpleType -->
<xs:simpleType name="alignType" final="restriction" >
<xs:restriction base="xs:string">
<xs:enumeration value="left" />
<xs:enumeration value="right" />
<xs:enumeration value="center" />
</xs:restriction>
</xs:simpleType>
<!-- hexcolor simpleType -->
<xs:simpleType name="hexcolorType" final="restriction" >
<xs:restriction base="xs:token">
<xs:pattern value="#[\dA-Fa-f1-9]{6}([\dA-Fa-f1-9][\dA-Fa-f1-9])?" />
</xs:restriction>
</xs:simpleType>
</xs:schema>