8.1 The Core XMI Specification of the AADL Meta Model
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http:///AADL/core" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xmi="http://www.omg.org/XMI" xmlns:property="http:///AADL/property" xmlns:flow="http:///AADL/flow" xmlns:feature="http:///AADL/feature" xmlns:core="http:///AADL/core" xmlns:connection="http:///AADL/connection">
      <xsd:import namespace="http:///AADL/property" schemaLocation="property.xsd"/>
      <xsd:import namespace="http:///AADL/feature" schemaLocation="feature.xsd"/>
      <xsd:import namespace="http:///AADL/connection" schemaLocation="connection.xsd"/>
      <xsd:import namespace="http:///AADL/flow" schemaLocation="flow.xsd"/>
      <xsd:import namespace="http://www.omg.org/XMI" schemaLocation="XMI.xsd"/>
      <xsd:simpleType name="ModeState">
            <xsd:restriction base="xsd:NCName">
                  <xsd:enumeration value="NORMAL"/>
                  <xsd:enumeration value="INITIAL"/>
            </xsd:restriction>
      </xsd:simpleType>
      <xsd:complexType name="AadlSpec">
            <xsd:complexContent>
                  <xsd:extension base="core:NamedElement">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="contents" type="xsd:string" nillable="true"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="AadlSpec" type="core:AadlSpec"/>
      <xsd:complexType name="AadlPackage">
            <xsd:complexContent>
                  <xsd:extension base="core:NamedElement">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="aadlPublic" type="core:AadlPublic"/>
                              <xsd:element name="aadlPrivate" type="core:AadlPrivate"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="AadlPackage" type="core:AadlPackage"/>
      <xsd:complexType name="AadlPrivate">
            <xsd:complexContent>
                  <xsd:extension base="core:AadlPackageSection"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="AadlPrivate" type="core:AadlPrivate"/>
      <xsd:complexType name="AadlPublic">
            <xsd:complexContent>
                  <xsd:extension base="core:AadlPackageSection"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="AadlPublic" type="core:AadlPublic"/>
      <xsd:complexType name="AadlPackageSection">
            <xsd:complexContent>
                  <xsd:extension base="core:PropertyHolder">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="contents" type="xsd:string" nillable="true"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="AadlPackageSection" type="core:AadlPackageSection"/>
      <xsd:complexType name="ComponentClassifier">
            <xsd:complexContent>
                  <xsd:extension base="core:Classifier"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="ComponentClassifier" type="core:ComponentClassifier"/>
      <xsd:complexType name="ComponentType">
            <xsd:complexContent>
                  <xsd:extension base="core:ComponentClassifier">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="flowSpecs" type="flow:FlowSpecs"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="ComponentType" type="core:ComponentType"/>
      <xsd:complexType name="Feature">
            <xsd:complexContent>
                  <xsd:extension base="core:PropertyHolder"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Feature" type="core:Feature"/>
      <xsd:complexType name="Features">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Features" type="core:Features"/>
      <xsd:complexType name="ComponentImpl">
            <xsd:complexContent>
                  <xsd:extension base="core:ComponentClassifier">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="connections" type="connection:Connections"/>
                              <xsd:element name="modes" type="core:Modes"/>
                              <xsd:element name="refinesType" type="core:RefinesType"/>
                              <xsd:element name="flows" type="flow:Flows"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="ComponentImpl" type="core:ComponentImpl"/>
      <xsd:complexType name="RefinesType">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="contents" type="xsd:string" nillable="true"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="RefinesType" type="core:RefinesType"/>
      <xsd:complexType name="Subcomponents">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Subcomponents" type="core:Subcomponents"/>
      <xsd:complexType name="Subcomponent">
            <xsd:complexContent>
                  <xsd:extension base="core:ModeMember"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Subcomponent" type="core:Subcomponent"/>
      <xsd:complexType name="Connection">
            <xsd:complexContent>
                  <xsd:extension base="core:ModeMember">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="srcContext" type="connection:FeatureContext"/>
                              <xsd:element name="dstContext" type="connection:FeatureContext"/>
                              <xsd:element name="inModeTransitions" type="core:ModeTransition"/>
                        </xsd:choice>
                        <xsd:attribute name="srcContext" type="xsd:string"/>
                        <xsd:attribute name="dstContext" type="xsd:string"/>
                        <xsd:attribute name="inModeTransitions" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Connection" type="core:Connection"/>
      <xsd:complexType name="Modes">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="mode" type="core:Mode"/>
                              <xsd:element name="modeTransition" type="core:ModeTransition"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Modes" type="core:Modes"/>
      <xsd:complexType name="Mode">
            <xsd:complexContent>
                  <xsd:extension base="core:PropertyHolder">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="refines" type="core:Mode"/>
                        </xsd:choice>
                        <xsd:attribute name="state" type="core:ModeState"/>
                        <xsd:attribute name="refines" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Mode" type="core:Mode"/>
      <xsd:complexType name="ModeTransition">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="srcMode" type="core:Mode"/>
                              <xsd:element name="dstMode" type="core:Mode"/>
                              <xsd:element name="triggerEventPort" type="feature:EventPort"/>
                              <xsd:element name="triggerEventPortContext" type="connection:FeatureContext"/>
                        </xsd:choice>
                        <xsd:attribute name="srcMode" type="xsd:string"/>
                        <xsd:attribute name="dstMode" type="xsd:string"/>
                        <xsd:attribute name="triggerEventPort" type="xsd:string"/>
                        <xsd:attribute name="triggerEventPortContext" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="ModeTransition" type="core:ModeTransition"/>
      <xsd:complexType name="AnnexLibrary">
            <xsd:complexContent>
                  <xsd:extension base="core:NamedElement"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="AnnexLibrary" type="core:AnnexLibrary"/>
      <xsd:complexType name="DefaultAnnexLibrary">
            <xsd:complexContent>
                  <xsd:extension base="core:AnnexLibrary">
                        <xsd:attribute name="value" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="DefaultAnnexLibrary" type="core:DefaultAnnexLibrary"/>
      <xsd:complexType name="AnnexSubclause">
            <xsd:complexContent>
                  <xsd:extension base="core:NamedElement"/>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="AnnexSubclause" type="core:AnnexSubclause"/>
      <xsd:complexType name="DefaultAnnexSubclause">
            <xsd:complexContent>
                  <xsd:extension base="core:AnnexSubclause">
                        <xsd:attribute name="value" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="DefaultAnnexSubclause" type="core:DefaultAnnexSubclause"/>
      <xsd:complexType name="AObject">
            <xsd:choice minOccurs="0" maxOccurs="unbounded">
                  <xsd:element name="comment" type="xsd:string" nillable="true"/>
                  <xsd:element ref="xmi:Extension"/>
            </xsd:choice>
            <xsd:attribute ref="xmi:id"/>
            <xsd:attributeGroup ref="xmi:ObjectAttribs"/>
      </xsd:complexType>
      <xsd:element name="AObject" type="core:AObject"/>
      <xsd:complexType name="NamedElement">
            <xsd:complexContent>
                  <xsd:extension base="core:AObject">
                        <xsd:attribute name="name" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="NamedElement" type="core:NamedElement"/>
      <xsd:complexType name="PropertyHolder">
            <xsd:complexContent>
                  <xsd:extension base="core:NamedElement">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="properties" type="property:Properties"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="PropertyHolder" type="core:PropertyHolder"/>
      <xsd:complexType name="ModeMember">
            <xsd:complexContent>
                  <xsd:extension base="core:PropertyHolder">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="inModes" type="core:Mode"/>
                        </xsd:choice>
                        <xsd:attribute name="noMode" type="xsd:boolean"/>
                        <xsd:attribute name="inModes" type="xsd:string"/>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="ModeMember" type="core:ModeMember"/>
      <xsd:complexType name="Classifier">
            <xsd:complexContent>
                  <xsd:extension base="core:PropertyHolder">
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                              <xsd:element name="annexSubclause" type="core:AnnexSubclause"/>
                        </xsd:choice>
                  </xsd:extension>
            </xsd:complexContent>
      </xsd:complexType>
      <xsd:element name="Classifier" type="core:Classifier"/>
</xsd:schema>