<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->
<xs:schema elementFormDefault="qualified" targetNamespace="org.apache.felix.ipojo"
           xmlns="org.apache.felix.ipojo" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:annotation>
        <xs:documentation>iPOJO Core XML-Schema. This grammars models iPOJO descriptor using core
            features. It provides several extensibility mechanism in order to compose this schema with
            external handlers and other component implementation type such as
            compositions.
        </xs:documentation>
    </xs:annotation>
    <xs:element name="ipojo">
        <xs:complexType>
            <xs:annotation>
                <xs:documentation>iPOJO top level element.</xs:documentation>
            </xs:annotation>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="handler" minOccurs="0" maxOccurs="unbounded">
                    <xs:annotation>
                        <xs:documentation>The handler declarations.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="instance" minOccurs="0" maxOccurs="unbounded">
                    <xs:annotation>
                        <xs:documentation>The instance declarations.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element ref="component" minOccurs="0" maxOccurs="unbounded">
                    <xs:annotation>
                        <xs:documentation>The component type declarations.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"
                        ></xs:any>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="HandlerType">
        <xs:annotation>
            <xs:documentation>Description of the handler.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="RootElementType">
                <xs:sequence maxOccurs="unbounded" minOccurs="0">
                    <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip"
                            ></xs:any>
                </xs:sequence>
                <xs:attribute name="classname" type="xs:string" use="required">
                    <xs:annotation>
                        <xs:documentation>The implementation class of the handler. The specified class must
                            implement (direcly or not) the "org.apache.felix.ipojo.Handler"
                            interface.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="name" type="xs:string" use="required">
                    <xs:annotation>
                        <xs:documentation>The name of the handler.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="namespace" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>The XML namespace of the handler.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="architecture" type="xs:boolean" use="optional" fixed="false">
                    <xs:annotation>
                        <xs:documentation>Enables or disables the architecture exposition. By default, the
                            architecture is not exposed. This allows handler introspection.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="level" type="xs:int" use="optional">
                    <xs:annotation>
                        <xs:documentation>The start level of the handler.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="InstanceType">
        <xs:annotation>
            <xs:documentation>Describes an instance of a component.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="RootElementType">
                <xs:sequence minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="property" type="InstancePropertyType">
                        <xs:annotation>
                            <xs:documentation>The instance props.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="component" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>The name of the instance component type.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="name" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>The (unique) name of the instance.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="version" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>The version of the factory to use.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="InstancePropertyType">
        <xs:annotation>
            <xs:documentation>Defines a property of an instance configuration.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="property" type="InstancePropertyType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Name of the property. Can be optional if a property is inside a structure.
                    The 'instance.name' property has a special semantic as it will be used as the instance
                    name.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Value of the property. Can be null for property containing other
                    props.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="type" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Type of the property, used to create the adequate object. Supported values
                    are list, array, dictionary and map.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="RootElementType"/>
    <xs:complexType name="ComponentType">
        <xs:annotation>
            <xs:documentation>Declares an atomic (i.e. primitive) component type.</xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="callback" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Describes the method(s) to invoke when the component's state
                        changes.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element ref="provides" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Indicates the component provided service(s). By default, all implemented
                        interfaces are published.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element ref="requires" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Indicates the service requirements of the component.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element ref="properties" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Describes the properties of the component.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element ref="controller" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>Lifecycle controller for this component.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"
                    ></xs:any>
        </xs:choice>
        <xs:attribute name="name" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Specifies the name of the component type. This name is used to identify
                    the factory attached to this type. If not specified, the factory name is the
                    implementation class name.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="public" type="xs:boolean" use="optional">
            <xs:annotation>
                <xs:documentation>Determines if the component type is public or private. A public factory
                    (default) can be used from any bundles.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="classname" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>Specifies the implementation class of the component
                    type.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="architecture" type="xs:boolean" use="optional">
            <xs:annotation>
                <xs:documentation>Enables or disables the architecture exposition. By default, the
                    architecture is exposed. This allows instance introspection.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="immediate" type="xs:boolean" use="optional">
            <xs:annotation>
                <xs:documentation>Creates the object of the component implementation type as soon as the
                    component instance becomes valid. The default value is "true" if the component doesn't
                    provide any service, "false" otherwise.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="factory-method" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Factory method called to create POJO objects instead of the constructor.
                    The specified method must be a static method of the implementation class returning an
                    instance of this implementation class. The factory method can receive the bundle context
                    in argument.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="version" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Set the version of this component type</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="RequiresType">
        <xs:annotation>
            <xs:documentation>Description of component services requirements.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="ServiceDependencyType">
                <xs:sequence minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="callback" type="DependencyCallbackType">
                        <xs:annotation>
                            <xs:documentation>Service requirement method invocation description. Here can be
                                specified a bind method called when a service appears and an unbind method called
                                when a service disappears.
                            </xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>

                <xs:attribute name="interface" type="xs:string" use="prohibited">
                    <xs:annotation>
                        <xs:documentation>The interface describing the required service type. This attribute is
                            needed only when using aggregate dependencies with field injection and when the type
                            of this field is a list, vector, collection and set. This attribute is deprecated, use
                            'specification'.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>

                <xs:attribute name="field" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>The name of the field representing the service dependency in the
                            implementation class.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>

                <xs:attribute name="nullable" type="xs:boolean" use="optional">
                    <xs:annotation>
                        <xs:documentation>Enable or disable the Nullable pattern on optional service
                            dependencies. By default, Nullable pattern is enabled. If disabled, iPOJO will inject
                            null instead of a Nullable object.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>

                <xs:attribute name="default-implementation" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>Specifies the default implementation class for an optional service
                            dependency. If no providers are found, iPOJO creates an instance of the
                            default-implementation (nullary constructor) and injects it. The given class must
                            implement the required service interface.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>

                <xs:attribute name="exception" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>Specifies the exception to throw for an optional service
                            dependency. If no providers are found, iPOJO creates an instance of the
                            exception (with either no parameter or a String parameter as constructor argument), and
                            throws it. The given class name must extends RuntimeException.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>

                <xs:attribute name="timeout" type="xs:int" use="optional">
                    <xs:annotation>
                        <xs:documentation>Specifies the timeout after which the 'no service policy' is executed
                            (nullable, null, empty collection, exception...). The value is the time in millisecond to
                            wait. -1 is used to indicate an infinite wait, 0 executes the no service policy
                            immediately.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>

                <xs:attribute name="from" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>Specific service provider. The dependency can only be fulfilled by the
                            component with the matching name, or by the service with a matching
                            PID.
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>

                <xs:attribute name="proxy" type="xs:boolean" use="optional">
                    <xs:annotation>
                        <xs:documentation>Enables or Disable the proxy injection (on field
                            injection)
                        </xs:documentation>
                    </xs:annotation>
                </xs:attribute>

                <xs:attribute name="scope" use="optional">
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="global"/>
                            <xs:enumeration value="composite"/>
                            <xs:enumeration value="composite+global"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>

            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="DependencyCallbackType">
        <xs:annotation>
            <xs:documentation>Dependency callbacks are used to receive notification when service providers
                arrive and leave.
            </xs:documentation>
        </xs:annotation>
        <xs:attribute name="method" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>Method to call</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="type" use="required">
            <xs:annotation>
                <xs:documentation>Type of callback (bind, unbind, or updated). Bind means that the method
                    will be called when a provider arrives. Unbind means that the method will be called when a
                    provider leaves. Updated means that a service was modified but is still valid for the
                    service dependency.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="bind"/>
                    <xs:enumeration value="unbind"/>
                    <xs:enumeration value="modified"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="CallbackType">
        <xs:annotation>
            <xs:documentation>Lifecycle Callback. Allows a POJO to be notified when the instance becomes
                valid or invalid.
            </xs:documentation>
        </xs:annotation>
        <xs:attribute name="method" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>Specifies the method to call on the transition.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="transition" use="required">
            <xs:annotation>
                <xs:documentation>Specifies the transition when the callback needs to be
                    invoked.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:annotation>
                    <xs:documentation>Lifecycle transition state. "validate" means that the component's
                        instance was invalid and becomes valid, "invalidate" means that the component's intance
                        was valid and becomes invalid.
                    </xs:documentation>
                </xs:annotation>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="validate"/>
                    <xs:enumeration value="invalidate"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:element name="provides" type="ProvidesType" id="provides"/>
    <xs:complexType name="ProvidesType">
        <xs:annotation>
            <xs:documentation>Provided service(s) description.</xs:documentation>
        </xs:annotation>
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:choice>
                <xs:element name="property" type="PropertyType">
                    <xs:annotation>
                        <xs:documentation>List of service specific props.</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="controller" minOccurs="0" maxOccurs="1" type="ServiceControllerType">
                    <xs:annotation>
                        <xs:documentation>Service Controller impacting the current provided
                            service
                        </xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:choice>
        </xs:sequence>
        <xs:attribute name="interface" type="xs:string" use="prohibited">
            <xs:annotation>
                <xs:documentation>Deprecated attribute, use 'specifications' instead of
                    'interface'
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="specifications" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>The list of service specifications (i.e. interfaces) to expose. By
                    default, all interfaces implemented by the component implementation class are
                    published.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="factory" type="xs:string" use="prohibited">
            <xs:annotation>
                <xs:documentation>Use 'strategy' instead of 'factory'</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="strategy" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>POJO creation strategy. By default, the POJO object is created once
                    (singleton). If the factory is set to "SERVICE", the creation policy follows the OSGi
                    service factory policy (one object object per asking bundle). INSTANCE allows creating one
                    different POJO object per asking instance. Finally, a custom strategy can be used by
                    specifying the qualified name of the class extending CreationPolicy
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="post-registration" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Defines a callback called after the service registration. The callback takes a
                    ServiceReference
                    as parameter
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="post-unregistration" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Defines a callback called after the service unregistration. The callback takes a
                    ServiceReference
                    as parameter
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="ServiceControllerType">
        <xs:annotation>
            <xs:documentation>Defines a service controller.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="field" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>Field of the controller</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Intiail value of the controller</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="PropertyType">
        <xs:annotation>
            <xs:documentation>Defines a component property.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="field" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Field of the property</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="method" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Setter method of the property. This method is called to inject property
                    value.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="name" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Name of the property.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="value" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Default value of the property.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="type" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Type of the property.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="mandatory" type="xs:boolean" use="optional" default="false">
            <xs:annotation>
                <xs:documentation>Set the property as mandatory. A mandatory property MUST receive a value
                    either in the component type description or in the instance configuration. Properties are
                    optional by default.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="immutable" type="xs:boolean" use="optional" default="false">
            <xs:annotation>
                <xs:documentation>Set the property as immutable. An immutable property is inherited by the component
                    instance but the value cannot be overridden.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:element name="callback" type="CallbackType" id="callback"/>
    <xs:element name="controller" type="ControllerType" id="controller">
        <xs:annotation>
            <xs:documentation/>
        </xs:annotation>
    </xs:element>
    <xs:element name="requires" type="RequiresType" id="requires"/>
    <xs:element name="component" type="ComponentType" id="component"/>
    <xs:element name="handler" type="HandlerType" id="handler"/>
    <xs:element name="instance" type="InstanceType" id="instance"/>

    <xs:element name="properties" type="PropertiesType" id="properties"/>
    <xs:complexType name="PropertiesType">
        <xs:annotation>
            <xs:documentation>List of component, instance or service props. This field will receive
                the property value.
            </xs:documentation>
        </xs:annotation>
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="property" type="PropertyType">
                <xs:annotation>
                    <xs:documentation>The list of props.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="propagation" type="xs:boolean" use="optional">
            <xs:annotation>
                <xs:documentation>Propagation of the component properties to the provided services. If this
                    parameter is set to "true", each time properties are reconfigured, they are propagated to
                    each service published by the component.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="pid" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Unique identifier used to reconfigure components properties (via Managed
                    Services) with the Configuration Admin.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="updated" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Method called when a reconfiguration is done</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>

    <xs:complexType name="ServiceDependencyType">
        <xs:attribute name="specification" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>The specification describing the required service type. This attribute is
                    needed only when using aggregate dependencies with field injection and when the type of
                    this field is a list, vector, collection and set.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="optional" type="xs:boolean" use="optional">
            <xs:annotation>
                <xs:documentation>Sets the service dependency optionality</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="aggregate" type="xs:boolean" use="optional">
            <xs:annotation>
                <xs:documentation>Sets the service dependency cardinality.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="policy" use="optional">
            <xs:annotation>
                <xs:documentation>Sets the binding policy of the dependency. Three policies are supported.
                    The dynamic policy supports service providers dynamism. The static policy freezes the
                    provider set as soon as the dependency is used. The dynamic-priority policy is an
                    extension of the dynamic policy, but providers are ranked.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="dynamic"/>
                    <xs:enumeration value="static"/>
                    <xs:enumeration value="dynamic-priority"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="comparator" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>The comparator attribute allows specifying the class used to compare
                    providers. This class must implemented the java.util.Comparator class and must support the
                    comparison of service references.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="filter" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>LDAP filter used to filter providers</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="id" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>id of the service dependency. The id allows to indentify and to refert to
                    this dependency.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>

    <xs:complexType name="ControllerType">
        <xs:annotation>
            <xs:documentation>Specifies the lifecycle controller of a component, which allows to validate
                or invalidate component instances.
            </xs:documentation>
        </xs:annotation>
        <xs:attribute name="field" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>The name of the component lifecycle controller field. The type of the
                    specified field must be boolean. Setting the value of the specified field to "true" means
                    the validation of the component instance while setting it to "false" means the
                    invalidation of the component instance.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
</xs:schema>
