blob: 8ada1db6c658f905ef6538d8193629dd8f614d6f [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
* $Revision: 7533 $
*
* Copyright (c) OSGi Alliance (2005, 2009). All Rights Reserved.
*
* Licensed 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.
*/
-->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"
targetNamespace="http://www.osgi.org/xmlns/scr/v1.1.0"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="1.1.0">
<annotation>
<documentation xml:lang="en">
This is the XML Schema for component descriptions used by
the Service Component Runtime (SCR). Component description
documents may be embedded in other XML documents. SCR will
process all XML documents listed in the Service-Component
manifest header of a bundle. XML documents containing
component descriptions may contain a single, root component
element or one or more component elements embedded in a
larger document. Use of the namespace for component
descriptions is mandatory. The attributes and subelements
of a component element are always unqualified.
</documentation>
</annotation>
<element name="component" type="scr:Tcomponent" />
<complexType name="Tcomponent">
<sequence>
<annotation>
<documentation xml:lang="en">
Implementations of SCR must not require component
descriptions to specify the subelements of the component
element in the order as required by the schema. SCR
implementations must allow other orderings since
arbitrary orderings do not affect the meaning of the
component description. Only the relative ordering of
property and properties element have meaning.
</documentation>
</annotation>
<choice minOccurs="0" maxOccurs="unbounded">
<element name="property" type="scr:Tproperty" />
<element name="properties" type="scr:Tproperties" />
</choice>
<element name="service" type="scr:Tservice" minOccurs="0"
maxOccurs="1" />
<element name="reference" type="scr:Treference"
minOccurs="0" maxOccurs="unbounded" />
<element name="implementation" type="scr:Timplementation"
minOccurs="1" maxOccurs="1" />
<any namespace="##any" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute name="enabled" type="boolean" default="true"
use="optional" />
<attribute name="name" type="token" use="optional">
<annotation>
<documentation xml:lang="en">
The default value of this attribute is the value of
the class attribute of the nested implementation
element. If multiple component elements use the same
value for the class attribute of their nested
implementation element, then using the default value
for this attribute will result in duplicate names.
In this case, this attribute must be specified with
a unique value.
</documentation>
</annotation>
</attribute>
<attribute name="factory" type="string" use="optional" />
<attribute name="immediate" type="boolean" use="optional" />
<attribute name="configuration-policy"
type="scr:Tconfiguration-policy" default="optional" use="optional" />
<attribute name="activate" type="token" use="optional"
default="activate" />
<attribute name="deactivate" type="token" use="optional"
default="deactivate" />
<attribute name="modified" type="token" use="optional" />
<anyAttribute />
</complexType>
<complexType name="Timplementation">
<sequence>
<any namespace="##any" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute name="class" type="token" use="required" />
<anyAttribute />
</complexType>
<complexType name="Tproperty">
<simpleContent>
<extension base="string">
<attribute name="name" type="string" use="required" />
<attribute name="value" type="string" use="optional" />
<attribute name="type" type="scr:Tjava-types"
default="String" use="optional" />
<anyAttribute />
</extension>
</simpleContent>
</complexType>
<complexType name="Tproperties">
<sequence>
<any namespace="##any" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute name="entry" type="string" use="required" />
<anyAttribute />
</complexType>
<complexType name="Tservice">
<sequence>
<element name="provide" type="scr:Tprovide" minOccurs="1"
maxOccurs="unbounded" />
<!-- It is non-deterministic, per W3C XML Schema 1.0:
http://www.w3.org/TR/xmlschema-1/#cos-nonambig
to use name space="##any" below. -->
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute name="servicefactory" type="boolean" default="false"
use="optional" />
<anyAttribute />
</complexType>
<complexType name="Tprovide">
<sequence>
<any namespace="##any" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute name="interface" type="token" use="required" />
<anyAttribute />
</complexType>
<complexType name="Treference">
<sequence>
<any namespace="##any" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute name="name" type="token" use="optional">
<annotation>
<documentation xml:lang="en">
The default value of this attribute is the value of
the interface attribute of this element. If multiple
instances of this element within a component element
use the same value for the interface attribute, then
using the default value for this attribute will result
in duplicate names. In this case, this attribute
must be specified with a unique value.
</documentation>
</annotation>
</attribute>
<attribute name="interface" type="token" use="required" />
<attribute name="cardinality" type="scr:Tcardinality"
default="1..1" use="optional" />
<attribute name="policy" type="scr:Tpolicy" default="static"
use="optional" />
<attribute name="target" type="string" use="optional" />
<attribute name="bind" type="token" use="optional" />
<attribute name="unbind" type="token" use="optional" />
<anyAttribute />
</complexType>
<simpleType name="Tjava-types">
<restriction base="string">
<enumeration value="String" />
<enumeration value="Long" />
<enumeration value="Double" />
<enumeration value="Float" />
<enumeration value="Integer" />
<enumeration value="Byte" />
<enumeration value="Character" />
<enumeration value="Boolean" />
<enumeration value="Short" />
</restriction>
</simpleType>
<simpleType name="Tcardinality">
<restriction base="string">
<enumeration value="0..1" />
<enumeration value="0..n" />
<enumeration value="1..1" />
<enumeration value="1..n" />
</restriction>
</simpleType>
<simpleType name="Tpolicy">
<restriction base="string">
<enumeration value="static" />
<enumeration value="dynamic" />
</restriction>
</simpleType>
<simpleType name="Tconfiguration-policy">
<restriction base="string">
<enumeration value="optional" />
<enumeration value="require" />
<enumeration value="ignore" />
</restriction>
</simpleType>
<attribute name="must-understand" type="boolean">
<annotation>
<documentation xml:lang="en">
This attribute should be used by extensions to documents
to require that the document consumer understand the
extension. This attribute must be qualified when used.
</documentation>
</annotation>
</attribute>
</schema>