<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.w3.org/2001/XMLSchema XMLSchema.xsd"
            xmlns:Deployment="http://www.omg.org/Deployment"
            targetNamespace="http://www.omg.org/Deployment">

            <xsd:include schemaLocation="cid.xsd" />
            <xsd:include schemaLocation="ccd.xsd" />

  <xsd:complexType name="PackagedComponentImplementation">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string"/>
      <!-- @@ recursive CPD->PCI->CID->CAD->SID->CPD -->
      <xsd:element name="referencedImplementation" type="Deployment:ComponentImplementationDescription"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ComponentPackageDescription">
    <xsd:choice minOccurs="0" maxOccurs="1">
      <xsd:sequence>
        <xsd:element name="label" type="xsd:string" minOccurs="0" />
        <xsd:element name="UUID" type="xsd:string" minOccurs="0" />
        <!-- @@MAJO - This is a hack, realizes is required. -->
        <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0" />
        <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="implementation" type="Deployment:PackagedComponentImplementation" maxOccurs="unbounded" />
        <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
      </xsd:sequence>
    </xsd:choice>
    <xsd:attribute name="href" type="xsd:string" use="optional"/>
  </xsd:complexType>

  <xsd:complexType name="ConnectorPackageDescription">
    <xsd:choice minOccurs="0" maxOccurs="1">
      <xsd:sequence>
        <xsd:element name="label" type="xsd:string" minOccurs="0" />
        <xsd:element name="UUID" type="xsd:string" minOccurs="0" />
        <!-- @@MAJO - This is a hack, realizes is required. -->
        <xsd:element name="realizes" type="Deployment:ComponentInterfaceDescription" minOccurs="0" />
        <xsd:element name="configProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="implementation" type="Deployment:ConnectorImplementationDescription" maxOccurs="unbounded" />
        <xsd:element name="infoProperty" type="Deployment:Property" minOccurs="0" maxOccurs="unbounded" />
      </xsd:sequence>
    </xsd:choice>
    <xsd:attribute name="href" type="xsd:string" use="optional"/>
  </xsd:complexType>

</xsd:schema>

