<?xml version="1.0" encoding="IBM864"?>
<schema
  xmlns='http://www.w3.org/2001/XMLSchema'
  targetNamespace='http://www.w3.org/namespace/'
  xmlns:t='http://www.w3.org/namespace/'>

 <element name='Identification'>
  <complexType>
   <attribute name='Standard' type='string' use='optional'/>
   <attribute name='Classification' type='string' use='optional'/>
   <attribute name='ApplicationDomain' type='string' use='optional'/>
   <attribute name='Function' type='string' use='optional'/>
   <attribute name='Type' type='string' use='optional'/>
   <attribute name='Description' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='VersionInfo'>
  <complexType>
   <attribute name='Organization' type='string' use='required'/>
   <attribute name='Version' type='string' use='required'/>
   <attribute name='Author' type='string' use='required'/>
   <attribute name='Date' type='string' use='required'/>
   <attribute name='Remarks' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='CompilerInfo'>
  <complexType>
   <sequence>
    <element ref='t:Compiler' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='header' type='string' use='optional'/>
   <attribute name='classdef' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='Compiler'>
  <complexType>
   <attribute name='Language' use='required'>
    <simpleType>
     <restriction base='string'>
      <enumeration value='Java'/>
      <enumeration value='Cpp'/>
      <enumeration value='C'/>
      <enumeration value='Other'/>
     </restriction>
    </simpleType>
   </attribute>
   <attribute name='Vendor' type='string' use='required'/>
   <attribute name='Product' type='string' use='required'/>
   <attribute name='Version' type='string' use='required'/>
  </complexType>
 </element>

 <element name='FBNetwork'>
  <complexType>
   <sequence>
    <element ref='t:FB' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:EventConnections' minOccurs='0' maxOccurs='1'/>
    <element ref='t:DataConnections' minOccurs='0' maxOccurs='1'/>
    <element ref='t:AdapterConnections' minOccurs='0' maxOccurs='1'/>
   </sequence>
  </complexType>
 </element>

 <element name='FB'>
  <complexType>
   <sequence>
    <element ref='t:Parameter' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='x' type='string' use='optional'/>
   <attribute name='y' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='EventConnections'>
  <complexType>
   <sequence>
    <element ref='t:Connection' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='DataConnections'>
  <complexType>
   <sequence>
    <element ref='t:Connection' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='AdapterConnections'>
  <complexType>
   <sequence>
    <element ref='t:Connection' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='Connection'>
  <complexType>
   <attribute name='Source' type='string' use='required'/>
   <attribute name='Destination' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='dx1' type='string' use='optional'/>
   <attribute name='dx2' type='string' use='optional'/>
   <attribute name='dy' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='FBType'>
  <complexType>
   <sequence>
    <element ref='t:Identification' minOccurs='0' maxOccurs='1'/>
    <element ref='t:VersionInfo' maxOccurs='unbounded'/>
    <element ref='t:CompilerInfo' minOccurs='0' maxOccurs='1'/>
    <element ref='t:InterfaceList'/>
    <choice minOccurs='0' maxOccurs='1'>
     <element ref='t:BasicFB'/>
     <element ref='t:FBNetwork'/>
    </choice>
    <element ref='t:Service' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='InterfaceList'>
  <complexType>
   <sequence>
    <element ref='t:EventInputs' minOccurs='0' maxOccurs='1'/>
    <element ref='t:EventOutputs' minOccurs='0' maxOccurs='1'/>
    <element ref='t:InputVars' minOccurs='0' maxOccurs='1'/>
    <element ref='t:OutputVars' minOccurs='0' maxOccurs='1'/>
    <element ref='t:Sockets' minOccurs='0' maxOccurs='1'/>
    <element ref='t:Plugs' minOccurs='0' maxOccurs='1'/>
   </sequence>
  </complexType>
 </element>

 <element name='EventInputs'>
  <complexType>
   <sequence>
    <element ref='t:Event' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='EventOutputs'>
  <complexType>
   <sequence>
    <element ref='t:Event' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='InputVars'>
  <complexType>
   <sequence>
    <element ref='t:VarDeclaration' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='OutputVars'>
  <complexType>
   <sequence>
    <element ref='t:VarDeclaration' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='Sockets'>
  <complexType>
   <sequence>
    <element ref='t:AdapterDeclaration' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='Plugs'>
  <complexType>
   <sequence>
    <element ref='t:AdapterDeclaration' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='Event'>
  <complexType>
   <sequence>
    <element ref='t:With' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='optional'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='With'>
  <complexType>
   <attribute name='Var' type='string' use='required'/>
  </complexType>
 </element>

 <element name='VarDeclaration'>
  <complexType>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='required'/>
   <attribute name='ArraySize' type='string' use='optional'/>
   <attribute name='InitialValue' type='string' use='optional'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='AdapterDeclaration'>
  <complexType>
   <sequence>
    <element ref='t:Parameter' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='x' type='string' use='optional'/>
   <attribute name='y' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='BasicFB'>
  <complexType>
   <sequence>
    <element ref='t:InternalVars' minOccurs='0' maxOccurs='1'/>
    <element ref='t:ECC' minOccurs='0' maxOccurs='1'/>
    <element ref='t:Algorithm' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='InternalVars'>
  <complexType>
   <sequence>
    <element ref='t:VarDeclaration' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='ECC'>
  <complexType>
   <sequence>
    <element ref='t:ECState' maxOccurs='unbounded'/>
    <element ref='t:ECTransition' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='ECState'>
  <complexType>
   <sequence>
    <element ref='t:ECAction' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='x' type='string' use='optional'/>
   <attribute name='y' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='ECTransition'>
  <complexType>
   <attribute name='Source' type='string' use='required'/>
   <attribute name='Destination' type='string' use='required'/>
   <attribute name='Condition' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='x' type='string' use='optional'/>
   <attribute name='y' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='ECAction'>
  <complexType>
   <attribute name='Algorithm' type='string' use='optional'/>
   <attribute name='Output' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='Algorithm'>
  <complexType>
   <sequence>
    <element ref='t:VarDeclaration' minOccurs='0' maxOccurs='unbounded'/>
    <choice>
     <element ref='t:FBD'/>
     <element ref='t:ST'/>
     <element ref='t:LD'/>
     <element ref='t:Other'/>
    </choice>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='FBD'>
  <complexType>
   <sequence>
    <element ref='t:FB' maxOccurs='unbounded'/>
    <element ref='t:DataConnections'/>
   </sequence>
  </complexType>
 </element>

 <element name='ST'>
  <complexType mixed='true'>
   <attribute name='Text' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='LD'>
  <complexType>
   <sequence>
    <element ref='t:Rung' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='Rung'>
  <complexType mixed='true'>
   <attribute name='Output' type='string' use='required'/>
   <attribute name='Expression' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='Other'>
  <complexType mixed='true'>
   <attribute name='Language' type='string' use='required'/>
  </complexType>
 </element>

 <element name='Service'>
  <complexType>
   <sequence>
    <element ref='t:ServiceSequence' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='RightInterface' type='string' use='required'/>
   <attribute name='LeftInterface' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='ServiceSequence'>
  <complexType>
   <sequence>
    <element ref='t:ServiceTransaction' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='ServiceTransaction'>
  <complexType>
   <sequence>
    <element ref='t:InputPrimitive' minOccurs='0' maxOccurs='1'/>
    <element ref='t:OutputPrimitive' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='InputPrimitive'>
  <complexType>
   <attribute name='Interface' type='string' use='required'/>
   <attribute name='Event' type='string' use='required'/>
   <attribute name='Parameters' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='OutputPrimitive'>
  <complexType>
   <attribute name='Interface' type='string' use='required'/>
   <attribute name='Event' type='string' use='required'/>
   <attribute name='Parameters' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='AdapterType'>
  <complexType>
   <sequence>
    <element ref='t:Identification' minOccurs='0' maxOccurs='1'/>
    <element ref='t:VersionInfo' maxOccurs='unbounded'/>
    <element ref='t:CompilerInfo' minOccurs='0' maxOccurs='1'/>
    <element ref='t:InterfaceList'/>
    <element ref='t:Service' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='ResourceType'>
  <complexType>
   <sequence>
    <element ref='t:Identification' minOccurs='0' maxOccurs='1'/>
    <element ref='t:VersionInfo' maxOccurs='unbounded'/>
    <element ref='t:CompilerInfo' minOccurs='0' maxOccurs='1'/>
    <element ref='t:FBTypeName' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:VarDeclaration' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:FBNetwork' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='FBTypeName'>
  <complexType>
   <attribute name='Name' type='string' use='required'/>
  </complexType>
 </element>

 <element name='DeviceType'>
  <complexType>
   <sequence>
    <element ref='t:Identification' minOccurs='0' maxOccurs='1'/>
    <element ref='t:VersionInfo' maxOccurs='unbounded'/>
    <element ref='t:CompilerInfo' minOccurs='0' maxOccurs='1'/>
    <element ref='t:VarDeclaration' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:ResourceTypeName' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:Resource' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:FBNetwork' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='ResourceTypeName'>
  <complexType>
   <attribute name='Name' type='string' use='required'/>
  </complexType>
 </element>

 <element name='Resource'>
  <complexType>
   <sequence>
    <element ref='t:Parameter' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:FBNetwork' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='x' type='string' use='optional'/>
   <attribute name='y' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='System'>
  <complexType>
   <sequence>
    <element ref='t:Identification' minOccurs='0' maxOccurs='1'/>
    <element ref='t:VersionInfo' maxOccurs='unbounded'/>
    <element ref='t:CompilerInfo' minOccurs='0' maxOccurs='1'/>
    <element ref='t:Application' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:Device' maxOccurs='unbounded'/>
    <element ref='t:Mapping' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:Segment' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:Link' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='Application'>
  <complexType>
   <sequence>
    <element ref='t:SubAppNetwork'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='Mapping'>
  <complexType>
   <attribute name='From' type='string' use='required'/>
   <attribute name='To' type='string' use='required'/>
  </complexType>
 </element>

 <element name='Device'>
  <complexType>
   <sequence>
    <element ref='t:Parameter' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:Resource' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:FBNetwork' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='x' type='string' use='optional'/>
   <attribute name='y' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='SubAppType'>
  <complexType>
   <sequence>
    <element ref='t:Identification' minOccurs='0' maxOccurs='1'/>
    <element ref='t:VersionInfo' maxOccurs='unbounded'/>
    <element ref='t:CompilerInfo' minOccurs='0' maxOccurs='1'/>
    <element ref='t:SubAppInterfaceList'/>
    <element ref='t:SubAppNetwork' minOccurs='0' maxOccurs='1'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='SubAppInterfaceList'>
  <complexType>
   <sequence>
    <element ref='t:SubAppEventInputs' minOccurs='0' maxOccurs='1'/>
    <element ref='t:SubAppEventOutputs' minOccurs='0' maxOccurs='1'/>
    <element ref='t:InputVars' minOccurs='0' maxOccurs='1'/>
    <element ref='t:OutputVars' minOccurs='0' maxOccurs='1'/>
   </sequence>
  </complexType>
 </element>

 <element name='SubAppEventInputs'>
  <complexType>
   <sequence>
    <element ref='t:SubAppEvent' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='SubAppEventOutputs'>
  <complexType>
   <sequence>
    <element ref='t:SubAppEvent' maxOccurs='unbounded'/>
   </sequence>
  </complexType>
 </element>

 <element name='SubAppEvent'>
  <complexType>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='optional'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='SubAppNetwork'>
  <complexType>
   <sequence>
    <element ref='t:SubApp' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:FB' minOccurs='0' maxOccurs='unbounded'/>
    <element ref='t:EventConnections' minOccurs='0' maxOccurs='1'/>
    <element ref='t:DataConnections' minOccurs='0' maxOccurs='1'/>
    <element ref='t:AdapterConnections' minOccurs='0' maxOccurs='1'/>
   </sequence>
  </complexType>
 </element>

 <element name='SubApp'>
  <complexType>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='x' type='string' use='optional'/>
   <attribute name='y' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='SegmentType'>
  <complexType>
   <sequence>
    <element ref='t:Identification' minOccurs='0'         maxOccurs='1'/>
    <element ref='t:VersionInfo'    maxOccurs='unbounded'/>
    <element ref='t:CompilerInfo'   minOccurs='0'         maxOccurs='1'/>
    <element ref='t:VarDeclaration' minOccurs='0'         maxOccurs='unbounded'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='Segment'>
  <complexType>
   <sequence>
    <element ref='t:Parameter' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Type' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
   <attribute name='x' type='string' use='optional'/>
   <attribute name='y' type='string' use='optional'/>
   <attribute name='dx1' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='Parameter'>
  <complexType>
   <attribute name='Name' type='string' use='required'/>
   <attribute name='Value' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>

 <element name='Link'>
  <complexType>
   <sequence>
    <element ref='t:Parameter' minOccurs='0' maxOccurs='unbounded'/>
   </sequence>
   <attribute name='SegmentName' type='string' use='required'/>
   <attribute name='CommResource' type='string' use='required'/>
   <attribute name='Comment' type='string' use='optional'/>
  </complexType>
 </element>
</schema>
