Author: edwardsmj
Date: Wed Apr 22 09:24:08 2009
New Revision: 767429

URL: http://svn.apache.org/viewvc?rev=767429&view=rev
Log:
Fixes to SCA Core XSD, to match recent Issues resolved in OASIS Assembly TC

Modified:
    
tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core-1.1-cd03.xsd

Modified: 
tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core-1.1-cd03.xsd
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core-1.1-cd03.xsd?rev=767429&r1=767428&r2=767429&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core-1.1-cd03.xsd 
(original)
+++ 
tuscany/java/sca/modules/assembly-xsd/src/main/resources/sca-core-1.1-cd03.xsd 
Wed Apr 22 09:24:08 2009
@@ -1,518 +1,529 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright(C) OASIS(R) 2005,2009. All Rights Reserved. 
-     OASIS trademark, IPR and other policies apply.  -->
-<schema xmlns="http://www.w3.org/2001/XMLSchema"; 
-   xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903"; 
-   targetNamespace="http://docs.oasis-open.org/ns/opencsa/sca/200903"; 
-   elementFormDefault="qualified">
-
-   <import namespace="http://www.w3.org/XML/1998/namespace"; 
-           schemaLocation="http://www.w3.org/2001/xml.xsd"/>
-
-   <!-- Common extension base for SCA definitions -->
-   <complexType name="CommonExtensionBase">
-      <sequence>
-         <element ref="sca:documentation" minOccurs="0" 
-                  maxOccurs="unbounded"/>
-      </sequence>
-      <anyAttribute namespace="##other" processContents="lax"/>
-   </complexType>
-   
-   <element name="documentation" type="sca:Documentation"/>
-   <complexType name="Documentation" mixed="true">
-      <sequence>
-         <any namespace="##other" processContents="lax" minOccurs="0" 
-              maxOccurs="unbounded"/>
-      </sequence>
-      <attribute ref="xml:lang"/>
-   </complexType>
-
-   <!-- Component Type -->
-   <element name="componentType" type="sca:ComponentType"/>
-   <complexType name="ComponentType">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <element ref="sca:implementation" minOccurs="0"/>
-               <choice minOccurs="0" maxOccurs="unbounded">
-                  <element name="service" type="sca:ComponentService"/>
-                  <element name="reference" 
-                     type="sca:ComponentTypeReference"/>
-                  <element name="property" type="sca:Property"/>
-               </choice>
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded"/>
-            </sequence>
-            <attribute name="constrainingType" type="QName" use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Composite -->
-   <element name="composite" type="sca:Composite"/>
-   <complexType name="Composite">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <element name="include" type="anyURI" minOccurs="0" 
-                        maxOccurs="unbounded"/>
-               <choice minOccurs="0" maxOccurs="unbounded">
-                  <element name="service" type="sca:Service"/>
-                  <element name="property" type="sca:Property"/>
-                  <element name="component" type="sca:Component"/>
-                  <element name="reference" type="sca:Reference"/>
-                  <element name="wire" type="sca:Wire"/>
-               </choice>
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded"/>
-            </sequence>
-            <attribute name="name" type="NCName" use="required"/>
-            <attribute name="targetNamespace" type="anyURI" use="required"/>
-            <attribute name="local" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="autowire" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="constrainingType" type="QName" use="optional"/>
-            <attribute name="requires" type="sca:listOfQNames" 
-                       use="optional"/>
-            <attribute name="policySets" type="sca:listOfQNames" 
-                       use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-   
-   <!-- Contract base type for Service, Reference -->
-   <complexType name="Contract" abstract="true">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <element ref="sca:interface" minOccurs="0" maxOccurs="1" />
-               <element ref="sca:binding" minOccurs="0" 
-                        maxOccurs="unbounded" />
-               <element ref="sca:callback" minOccurs="0" maxOccurs="1" />
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded" />
-            </sequence>
-            <attribute name="name" type="NCName" use="required" />
-            <attribute name="requires" type="sca:listOfQNames" 
-                       use="optional" />
-            <attribute name="policySets" type="sca:listOfQNames" 
-                       use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Service -->
-   <complexType name="Service">
-      <complexContent>
-         <extension base="sca:Contract">
-            <attribute name="promote" type="anyURI" use="required"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Interface -->
-   <element name="interface" type="sca:Interface" abstract="true"/>
-   <complexType name="Interface" abstract="true">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <attribute name="remotable" type="boolean" use="optional"/>
-               <attribute name="requires" type="sca:listOfQNames" 
-               use="optional"/>
-               <attribute name="policySets" type="sca:listOfQNames" 
-               use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Reference -->
-   <complexType name="Reference">
-      <complexContent>
-         <extension base="sca:Contract">
-            <attribute name="autowire" type="boolean" use="optional"/>
-            <attribute name="target" type="sca:listOfAnyURIs" 
-                       use="optional"/>
-            <attribute name="wiredByImpl" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="multiplicity" type="sca:Multiplicity" 
-                       use="optional" default="1..1"/>
-            <attribute name="promote" type="sca:listOfAnyURIs" 
-                       use="required"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Property -->
-   <complexType name="SCAPropertyBase" mixed="true">
-      <sequence>
-         <any namespace="##any" processContents="lax" minOccurs="0"/>
-         <!-- NOT an extension point; This any exists to accept
-             the element-based or complex type property
-             i.e. no element-based extension point under "sca:property" -->
-      </sequence>
-      <!-- mixed="true" to handle simple type -->
-      <attribute name="requires" type="sca:listOfQNames" use="optional"/>
-      <attribute name="policySets" type="sca:listOfQNames" use="optional"/>
-   </complexType>
-   
-   <complexType name="Property" mixed="true">
-      <complexContent mixed="true">
-         <extension base="sca:SCAPropertyBase">
-            <attribute name="name" type="NCName" use="required"/>
-            <attribute name="type" type="QName" use="optional"/>
-            <attribute name="element" type="QName" use="optional"/>
-            <attribute name="many" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="mustSupply" type="boolean" use="optional" 
-                       default="false"/>
-            <anyAttribute namespace="##any" processContents="lax"/>
-         </extension>
-         <!-- extension defines the place to hold default value -->
-         <!-- an extension point ; attribute-based only -->
-      </complexContent>
-   </complexType>
-   
-   <!-- ConstrainingProperty is equivalent to the Property type but removes 
-        the capability to contain a value -->
-   <complexType name="ConstrainingProperty" mixed="true">
-      <complexContent mixed="true">
-         <restriction base="sca:Property">
-            <attribute name="name" type="NCName" use="required"/>
-            <attribute name="type" type="QName" use="optional"/>
-            <attribute name="element" type="QName" use="optional"/>
-            <attribute name="many" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="mustSupply" type="boolean" use="optional" 
-                       default="false"/>
-            <anyAttribute namespace="##any" processContents="lax"/>
-         </restriction>
-      </complexContent>
-   </complexType>
-   
-   <complexType name="PropertyValue" mixed="true">
-      <complexContent mixed="true">
-         <extension base="sca:SCAPropertyBase">
-            <attribute name="name" type="NCName" use="required"/>
-            <attribute name="type" type="QName" use="optional"/>
-            <attribute name="element" type="QName" use="optional"/>
-            <attribute name="many" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="source" type="string" use="optional"/>
-            <attribute name="file" type="anyURI" use="optional"/>
-            <anyAttribute namespace="##any" processContents="lax"/>
-         </extension>
-         <!-- an extension point ; attribute-based only -->
-      </complexContent>
-   </complexType>
-
-   <!-- Binding -->
-   <element name="binding" type="sca:Binding" abstract="true"/>
-   <complexType name="Binding" abstract="true">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <element ref="sca:wireFormat" minOccurs="0" maxOccurs="1" />
-               <element ref="sca:operationSelector" minOccurs="0" 
-                        maxOccurs="1" />
-            </sequence>
-            <attribute name="uri" type="anyURI" use="optional"/>
-            <attribute name="name" type="NCName" use="optional"/>
-            <attribute name="requires" type="sca:listOfQNames" 
-                       use="optional"/>
-            <attribute name="policySets" type="sca:listOfQNames" 
-                       use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Binding Type -->
-   <element name="bindingType" type="sca:BindingType"/>
-   <complexType name="BindingType">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded"/>
-            </sequence>
-            <attribute name="type" type="QName" use="required"/>
-            <attribute name="alwaysProvides" type="sca:listOfQNames" 
-                       use="optional"/>
-            <attribute name="mayProvide" type="sca:listOfQNames" 
-                       use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-   
-   <!-- WireFormat Type -->
-   <element name="wireFormat" type="sca:WireFormatType"/>
-   <complexType name="WireFormatType" abstract="true">
-      <sequence>
-         <any namespace="##other" processContents="lax" minOccurs="0" 
-              maxOccurs="unbounded" />
-      </sequence>
-      <anyAttribute namespace="##other" processContents="lax"/>
-   </complexType>
-
-   <!-- OperationSelector Type -->
-   <element name="operationSelector" type="sca:OperationSelectorType"/>
-   <complexType name="OperationSelectorType" abstract="true">
-      <sequence>
-         <any namespace="##other" processContents="lax" minOccurs="0" 
-              maxOccurs="unbounded" />
-      </sequence>
-      <anyAttribute namespace="##other" processContents="lax"/>
-   </complexType>
-   
-   <!-- Callback -->
-   <element name="callback" type="sca:Callback"/>
-   <complexType name="Callback">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <choice minOccurs="0" maxOccurs="unbounded">
-               <element ref="sca:binding"/>
-               <any namespace="##other" processContents="lax"/>
-            </choice>
-            <attribute name="requires" type="sca:listOfQNames" 
-                       use="optional"/>
-            <attribute name="policySets" type="sca:listOfQNames" 
-                       use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Component -->
-   <complexType name="Component">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <element ref="sca:implementation" minOccurs="0"/>
-               <choice minOccurs="0" maxOccurs="unbounded">
-                  <element name="service" type="sca:ComponentService"/>
-                  <element name="reference" type="sca:ComponentReference"/>
-                  <element name="property" type="sca:PropertyValue"/>
-               </choice>
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded"/>
-            </sequence>
-            <attribute name="name" type="NCName" use="required"/>
-            <attribute name="autowire" type="boolean" use="optional"/>
-            <attribute name="constrainingType" type="QName" use="optional"/>
-            <attribute name="requires" type="sca:listOfQNames" 
-                       use="optional"/>
-            <attribute name="policySets" type="sca:listOfQNames" 
-                       use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Component Service -->
-   <complexType name="ComponentService">
-      <complexContent>
-         <extension base="sca:Contract">
-         </extension>
-      </complexContent>
-   </complexType>
-   
-   <!-- Constraining Service -->
-   <complexType name="ConstrainingService">
-      <complexContent>
-         <restriction base="sca:ComponentService">
-            <sequence>
-               <element ref="sca:interface" minOccurs="0" maxOccurs="1" />
-               <element ref="sca:callback" minOccurs="0" maxOccurs="1" />
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded" />
-            </sequence>
-            <attribute name="name" type="NCName" use="required" />
-         </restriction>
-      </complexContent>
-   </complexType>
-   
-
-   <!-- Component Reference -->
-   <complexType name="ComponentReference">
-      <complexContent>
-         <extension base="sca:Contract">
-            <attribute name="autowire" type="boolean" use="optional"/>
-            <attribute name="target" type="sca:listOfAnyURIs" 
-                       use="optional"/>
-            <attribute name="wiredByImpl" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="multiplicity" type="sca:Multiplicity" 
-                       use="optional" default="1..1"/>
-            <attribute name="nonOverridable" type="boolean" use="optional" 
-                       default="false"/>
-         </extension>
-      </complexContent>
-   </complexType>
-   
-   <!-- Constraining Reference -->
-   <complexType name="ConstrainingReference">
-      <complexContent>
-         <restriction base="sca:ComponentReference">
-            <sequence>
-               <element ref="sca:interface" minOccurs="0" maxOccurs="1" />
-               <element ref="sca:callback" minOccurs="0" maxOccurs="1" />
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded" />
-            </sequence>
-            <attribute name="name" type="NCName" use="required" />
-            <attribute name="autowire" type="boolean" use="optional"/>
-            <attribute name="wiredByImpl" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="multiplicity" type="sca:Multiplicity" 
-                       use="optional" default="1..1"/>
-         </restriction>
-      </complexContent>
-   </complexType>   
-   
-   <!-- Component Type Reference -->
-   <complexType name="ComponentTypeReference">
-      <complexContent>
-         <restriction base="sca:ComponentReference">
-            <sequence>
-               <element ref="sca:documentation" minOccurs="0" 
-                        maxOccurs="unbounded"/>
-               <element ref="sca:interface" minOccurs="0"/>
-               <element ref="sca:binding" minOccurs="0" 
-                        maxOccurs="unbounded"/>
-               <element ref="sca:callback" minOccurs="0"/>
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded"/>
-            </sequence>
-            <attribute name="name" type="NCName" use="required"/>
-            <attribute name="autowire" type="boolean" use="optional"/>
-            <attribute name="wiredByImpl" type="boolean" use="optional" 
-                       default="false"/>
-            <attribute name="multiplicity" type="sca:Multiplicity" 
-                       use="optional" default="1..1"/>
-            <attribute name="requires" type="sca:listOfQNames" 
-                       use="optional"/>
-            <attribute name="policySets" type="sca:listOfQNames" 
-                       use="optional"/>
-            <anyAttribute namespace="##other" processContents="lax"/>
-         </restriction>
-      </complexContent>
-   </complexType>
-   
-
-   <!-- Implementation -->
-   <element name="implementation" type="sca:Implementation" abstract="true"/>
-   <complexType name="Implementation" abstract="true">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <attribute name="requires" type="sca:listOfQNames" 
-                       use="optional"/>
-            <attribute name="policySets" type="sca:listOfQNames" 
-                       use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Implementation Type -->
-   <element name="implementationType" type="sca:ImplementationType"/>
-   <complexType name="ImplementationType">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded"/>
-            </sequence>
-            <attribute name="type" type="QName" use="required"/>
-            <attribute name="alwaysProvides" type="sca:listOfQNames" 
-                       use="optional"/>
-            <attribute name="mayProvide" type="sca:listOfQNames" 
-                       use="optional"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Wire -->
-   <complexType name="Wire">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded"/>
-            </sequence>
-            <attribute name="source" type="anyURI" use="required"/>
-            <attribute name="target" type="anyURI" use="required"/>
-            <attribute name="replace" type="boolean" use="optional" 
-               default="false"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Include -->
-   <element name="include" type="sca:Include"/>
-   <complexType name="Include">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <attribute name="name" type="QName"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Constraining Type -->
-   <element name="constrainingType" type="sca:ConstrainingType"/>
-   <complexType name="ConstrainingType">
-      <complexContent>
-         <extension base="sca:CommonExtensionBase">
-            <sequence>
-               <choice minOccurs="0" maxOccurs="unbounded">
-                  <element name="service" type="sca:ConstrainingService"/>
-                  <element name="reference" 
-                           type="sca:ConstrainingReference"/>
-                  <element name="property" type="sca:ConstrainingProperty"/>
-               </choice>
-               <any namespace="##other" processContents="lax" minOccurs="0" 
-                    maxOccurs="unbounded"/>
-            </sequence>
-            <attribute name="name" type="NCName" use="required"/>
-            <attribute name="targetNamespace" type="anyURI"/>
-         </extension>
-      </complexContent>
-   </complexType>
-
-   <!-- Intents within WSDL documents -->
-   <attribute name="requires" type="sca:listOfQNames"/>
-
-   <!-- Global attribute definition for @callback to mark a WSDL port type    
-        as having a callback interface defined in terms of a second port 
-        type. -->
-   <attribute name="callback" type="anyURI"/>
-
-   <!-- Miscellaneous simple type definitions -->
-   <simpleType name="Multiplicity">
-      <restriction base="string">
-         <enumeration value="0..1"/>
-         <enumeration value="1..1"/>
-         <enumeration value="0..n"/>
-         <enumeration value="1..n"/>
-      </restriction>
-   </simpleType>
-   
-   <simpleType name="OverrideOptions">
-      <restriction base="string">
-         <enumeration value="no"/>
-         <enumeration value="may"/>
-         <enumeration value="must"/>
-      </restriction>
-   </simpleType>
-   
-   <simpleType name="listOfQNames">
-      <list itemType="QName"/>
-   </simpleType>
-   
-   <simpleType name="listOfAnyURIs">
-      <list itemType="anyURI"/>
-   </simpleType>
-
-       <simpleType name="CreateResource">
-               <restriction base="string">
-                       <enumeration value="always" />
-                       <enumeration value="never" />
-                       <enumeration value="ifnotexist" />
-               </restriction>
-       </simpleType>
-</schema>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright(C) OASIS(R) 2005,2009. All Rights Reserved. 
+     OASIS trademark, IPR and other policies apply.  -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"; 
+   xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903"; 
+   targetNamespace="http://docs.oasis-open.org/ns/opencsa/sca/200903"; 
+   elementFormDefault="qualified">
+
+   <import namespace="http://www.w3.org/XML/1998/namespace"; 
+           schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+   <!-- Common extension base for SCA definitions -->
+   <complexType name="CommonExtensionBase">
+      <sequence>
+         <element ref="sca:documentation" minOccurs="0" 
+                  maxOccurs="unbounded"/>
+      </sequence>
+      <anyAttribute namespace="##other" processContents="lax"/>
+   </complexType>
+   
+   <element name="documentation" type="sca:Documentation"/>
+   <complexType name="Documentation" mixed="true">
+      <sequence>
+         <any namespace="##other" processContents="lax" minOccurs="0" 
+              maxOccurs="unbounded"/>
+      </sequence>
+      <attribute ref="xml:lang"/>
+   </complexType>
+
+   <!-- Component Type -->
+   <element name="componentType" type="sca:ComponentType"/>
+   <complexType name="ComponentType">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <element ref="sca:implementation" minOccurs="0"/>
+               <choice minOccurs="0" maxOccurs="unbounded">
+                  <element name="service" type="sca:ComponentService"/>
+                  <element name="reference" 
+                     type="sca:ComponentTypeReference"/>
+                  <element name="property" type="sca:Property"/>
+               </choice>
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded"/>
+            </sequence>
+            <attribute name="constrainingType" type="QName" use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Composite -->
+   <element name="composite" type="sca:Composite"/>
+   <complexType name="Composite">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <element ref="sca:include" minOccurs="0" 
+                        maxOccurs="unbounded"/>
+               <choice minOccurs="0" maxOccurs="unbounded">
+                  <element name="service" type="sca:Service"/>
+                  <element name="property" type="sca:Property"/>
+                  <element name="component" type="sca:Component"/>
+                  <element name="reference" type="sca:Reference"/>
+                  <element name="wire" type="sca:Wire"/>
+               </choice>
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded"/>
+            </sequence>
+            <attribute name="name" type="NCName" use="required"/>
+            <attribute name="targetNamespace" type="anyURI" use="required"/>
+            <attribute name="local" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="autowire" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="constrainingType" type="QName" use="optional"/>
+            <attribute name="requires" type="sca:listOfQNames" 
+                       use="optional"/>
+            <attribute name="policySets" type="sca:listOfQNames" 
+                       use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+   
+   <!-- Contract base type for Service, Reference -->
+   <complexType name="Contract" abstract="true">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <element ref="sca:interface" minOccurs="0" maxOccurs="1" />
+               <element ref="sca:binding" minOccurs="0" 
+                        maxOccurs="unbounded" />
+               <element ref="sca:callback" minOccurs="0" maxOccurs="1" />
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded" />
+            </sequence>
+            <attribute name="name" type="NCName" use="required" />
+            <attribute name="requires" type="sca:listOfQNames" 
+                       use="optional" />
+            <attribute name="policySets" type="sca:listOfQNames" 
+                       use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Service -->
+   <complexType name="Service">
+      <complexContent>
+         <extension base="sca:Contract">
+            <attribute name="promote" type="anyURI" use="required"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Interface -->
+   <element name="interface" type="sca:Interface" abstract="true"/>
+   <complexType name="Interface" abstract="true">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <attribute name="remotable" type="boolean" use="optional"/>
+               <attribute name="requires" type="sca:listOfQNames" 
+               use="optional"/>
+               <attribute name="policySets" type="sca:listOfQNames" 
+               use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Reference -->
+   <complexType name="Reference">
+      <complexContent>
+         <extension base="sca:Contract">
+            <attribute name="autowire" type="boolean" use="optional"/>
+            <attribute name="target" type="sca:listOfAnyURIs" 
+                       use="optional"/>
+            <attribute name="wiredByImpl" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="multiplicity" type="sca:Multiplicity" 
+                       use="optional" default="1..1"/>
+            <attribute name="promote" type="sca:listOfAnyURIs" 
+                       use="required"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Property -->
+   <complexType name="SCAPropertyBase" mixed="true">
+      <sequence>
+         <any namespace="##any" processContents="lax" minOccurs="0" 
+              maxOccurs="unbounded"/>
+         <!-- NOT an extension point; This any exists to accept
+             the element-based or complex type property
+             i.e. no element-based extension point under "sca:property" -->
+      </sequence>
+      <!-- mixed="true" to handle simple type -->
+      <attribute name="requires" type="sca:listOfQNames" use="optional"/>
+      <attribute name="policySets" type="sca:listOfQNames" use="optional"/>
+   </complexType>
+   
+   <complexType name="Property" mixed="true">
+      <complexContent mixed="true">
+         <extension base="sca:SCAPropertyBase">
+            <attribute name="name" type="NCName" use="required"/>
+            <attribute name="type" type="QName" use="optional"/>
+            <attribute name="element" type="QName" use="optional"/>
+            <attribute name="many" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="mustSupply" type="boolean" use="optional" 
+                       default="false"/>
+            <anyAttribute namespace="##any" processContents="lax"/>
+         </extension>
+         <!-- extension defines the place to hold default value -->
+         <!-- an extension point ; attribute-based only -->
+      </complexContent>
+   </complexType>
+   
+   <!-- ConstrainingProperty is equivalent to the Property type but removes 
+        the capability to contain a value -->
+   <complexType name="ConstrainingProperty" mixed="true">
+      <complexContent mixed="true">
+         <restriction base="sca:Property">
+            <attribute name="name" type="NCName" use="required"/>
+            <attribute name="type" type="QName" use="optional"/>
+            <attribute name="element" type="QName" use="optional"/>
+            <attribute name="many" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="mustSupply" type="boolean" use="optional" 
+                       default="false"/>
+            <anyAttribute namespace="##any" processContents="lax"/>
+         </restriction>
+      </complexContent>
+   </complexType>
+   
+   <complexType name="PropertyValue" mixed="true">
+      <complexContent mixed="true">
+         <extension base="sca:SCAPropertyBase">
+            <attribute name="name" type="NCName" use="required"/>
+            <attribute name="type" type="QName" use="optional"/>
+            <attribute name="element" type="QName" use="optional"/>
+            <attribute name="many" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="source" type="string" use="optional"/>
+            <attribute name="file" type="anyURI" use="optional"/>
+            <anyAttribute namespace="##any" processContents="lax"/>
+         </extension>
+         <!-- an extension point ; attribute-based only -->
+      </complexContent>
+   </complexType>
+
+   <!-- Binding -->
+   <element name="binding" type="sca:Binding" abstract="true"/>
+   <complexType name="Binding" abstract="true">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <element ref="sca:wireFormat" minOccurs="0" maxOccurs="1" />
+               <element ref="sca:operationSelector" minOccurs="0" 
+                        maxOccurs="1" />
+            </sequence>
+            <attribute name="uri" type="anyURI" use="optional"/>
+            <attribute name="name" type="NCName" use="optional"/>
+            <attribute name="requires" type="sca:listOfQNames" 
+                       use="optional"/>
+            <attribute name="policySets" type="sca:listOfQNames" 
+                       use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Binding Type -->
+   <element name="bindingType" type="sca:BindingType"/>
+   <complexType name="BindingType">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded"/>
+            </sequence>
+            <attribute name="type" type="QName" use="required"/>
+            <attribute name="alwaysProvides" type="sca:listOfQNames" 
+                       use="optional"/>
+            <attribute name="mayProvide" type="sca:listOfQNames" 
+                       use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+   
+   <!-- WireFormat Type -->
+   <element name="wireFormat" type="sca:WireFormatType"/>
+   <complexType name="WireFormatType" abstract="true">
+      <sequence>
+         <any namespace="##other" processContents="lax" minOccurs="0" 
+              maxOccurs="unbounded" />
+      </sequence>
+      <anyAttribute namespace="##other" processContents="lax"/>
+   </complexType>
+
+   <!-- OperationSelector Type -->
+   <element name="operationSelector" type="sca:OperationSelectorType"/>
+   <complexType name="OperationSelectorType" abstract="true">
+      <sequence>
+         <any namespace="##other" processContents="lax" minOccurs="0" 
+              maxOccurs="unbounded" />
+      </sequence>
+      <anyAttribute namespace="##other" processContents="lax"/>
+   </complexType>
+   
+   <!-- Callback -->
+   <element name="callback" type="sca:Callback"/>
+   <complexType name="Callback">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <choice minOccurs="0" maxOccurs="unbounded">
+               <element ref="sca:binding"/>
+               <any namespace="##other" processContents="lax"/>
+            </choice>
+            <attribute name="requires" type="sca:listOfQNames" 
+                       use="optional"/>
+            <attribute name="policySets" type="sca:listOfQNames" 
+                       use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Component -->
+   <complexType name="Component">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <element ref="sca:implementation" minOccurs="0"/>
+               <choice minOccurs="0" maxOccurs="unbounded">
+                  <element name="service" type="sca:ComponentService"/>
+                  <element name="reference" type="sca:ComponentReference"/>
+                  <element name="property" type="sca:PropertyValue"/>
+               </choice>
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded"/>
+            </sequence>
+            <attribute name="name" type="NCName" use="required"/>
+            <attribute name="autowire" type="boolean" use="optional"/>
+            <attribute name="constrainingType" type="QName" use="optional"/>
+            <attribute name="requires" type="sca:listOfQNames" 
+                       use="optional"/>
+            <attribute name="policySets" type="sca:listOfQNames" 
+                       use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Component Service -->
+   <complexType name="ComponentService">
+      <complexContent>
+         <extension base="sca:Contract">
+         </extension>
+      </complexContent>
+   </complexType>
+   
+   <!-- Constraining Service -->
+   <complexType name="ConstrainingService">
+      <complexContent>
+         <restriction base="sca:ComponentService">
+            <sequence>
+               <element ref="sca:interface" minOccurs="0" maxOccurs="1" />
+               <element ref="sca:callback" minOccurs="0" maxOccurs="1" />
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded" />
+            </sequence>
+            <attribute name="name" type="NCName" use="required" />
+         </restriction>
+      </complexContent>
+   </complexType>
+   
+
+   <!-- Component Reference -->
+   <complexType name="ComponentReference">
+      <complexContent>
+         <extension base="sca:Contract">
+            <attribute name="autowire" type="boolean" use="optional"/>
+            <attribute name="target" type="sca:listOfAnyURIs" 
+                       use="optional"/>
+            <attribute name="wiredByImpl" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="multiplicity" type="sca:Multiplicity" 
+                       use="optional" default="1..1"/>
+            <attribute name="nonOverridable" type="boolean" use="optional" 
+                       default="false"/>
+         </extension>
+      </complexContent>
+   </complexType>
+   
+   <!-- Constraining Reference -->
+   <complexType name="ConstrainingReference">
+      <complexContent>
+         <restriction base="sca:ComponentReference">
+            <sequence>
+               <element ref="sca:interface" minOccurs="0" maxOccurs="1" />
+               <element ref="sca:callback" minOccurs="0" maxOccurs="1" />
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded" />
+            </sequence>
+            <attribute name="name" type="NCName" use="required" />
+            <attribute name="autowire" type="boolean" use="optional"/>
+            <attribute name="wiredByImpl" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="multiplicity" type="sca:Multiplicity" 
+                       use="optional" default="1..1"/>
+         </restriction>
+      </complexContent>
+   </complexType>   
+   
+   <!-- Component Type Reference -->
+   <complexType name="ComponentTypeReference">
+      <complexContent>
+         <restriction base="sca:ComponentReference">
+            <sequence>
+               <element ref="sca:documentation" minOccurs="0" 
+                        maxOccurs="unbounded"/>
+               <element ref="sca:interface" minOccurs="0"/>
+               <element ref="sca:binding" minOccurs="0" 
+                        maxOccurs="unbounded"/>
+               <element ref="sca:callback" minOccurs="0"/>
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded"/>
+            </sequence>
+            <attribute name="name" type="NCName" use="required"/>
+            <attribute name="autowire" type="boolean" use="optional"/>
+            <attribute name="wiredByImpl" type="boolean" use="optional" 
+                       default="false"/>
+            <attribute name="multiplicity" type="sca:Multiplicity" 
+                       use="optional" default="1..1"/>
+            <attribute name="requires" type="sca:listOfQNames" 
+                       use="optional"/>
+            <attribute name="policySets" type="sca:listOfQNames" 
+                       use="optional"/>
+            <anyAttribute namespace="##other" processContents="lax"/>
+         </restriction>
+      </complexContent>
+   </complexType>
+   
+
+   <!-- Implementation -->
+   <element name="implementation" type="sca:Implementation" abstract="true"/>
+   <complexType name="Implementation" abstract="true">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <attribute name="requires" type="sca:listOfQNames" 
+                       use="optional"/>
+            <attribute name="policySets" type="sca:listOfQNames" 
+                       use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Implementation Type -->
+   <element name="implementationType" type="sca:ImplementationType"/>
+   <complexType name="ImplementationType">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded"/>
+            </sequence>
+            <attribute name="type" type="QName" use="required"/>
+            <attribute name="alwaysProvides" type="sca:listOfQNames" 
+                       use="optional"/>
+            <attribute name="mayProvide" type="sca:listOfQNames" 
+                       use="optional"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Wire -->
+   <complexType name="Wire">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded"/>
+            </sequence>
+            <attribute name="source" type="anyURI" use="required"/>
+            <attribute name="target" type="anyURI" use="required"/>
+            <attribute name="replace" type="boolean" use="optional" 
+               default="false"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Include -->
+   <element name="include" type="sca:Include"/>
+   <complexType name="Include">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <attribute name="name" type="QName"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Constraining Type -->
+   <element name="constrainingType" type="sca:ConstrainingType"/>
+   <complexType name="ConstrainingType">
+      <complexContent>
+         <extension base="sca:CommonExtensionBase">
+            <sequence>
+               <choice minOccurs="0" maxOccurs="unbounded">
+                  <element name="service" type="sca:ConstrainingService"/>
+                  <element name="reference" 
+                           type="sca:ConstrainingReference"/>
+                  <element name="property" type="sca:ConstrainingProperty"/>
+               </choice>
+               <any namespace="##other" processContents="lax" minOccurs="0" 
+                    maxOccurs="unbounded"/>
+            </sequence>
+            <attribute name="name" type="NCName" use="required"/>
+            <attribute name="targetNamespace" type="anyURI"/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <!-- Intents within WSDL documents -->
+   <attribute name="requires" type="sca:listOfQNames"/>
+
+   <!-- Global attribute definition for @callback to mark a WSDL port type    
+        as having a callback interface defined in terms of a second port 
+        type. -->
+   <attribute name="callback" type="anyURI"/>
+   
+   <!-- Value type definition for property values -->
+   <element name="value" type="sca:ValueType"/> 
+   <complexType name="ValueType" mixed="true">
+      <sequence> 
+         <any namespace="##any" processContents="lax" minOccurs="0" 
maxOccurs='unbounded'/> 
+      </sequence> 
+      <!-- mixed="true" to handle simple type --> 
+      <anyAttribute namespace="##any" processContents="lax"/> 
+   </complexType> 
+
+   <!-- Miscellaneous simple type definitions -->
+   <simpleType name="Multiplicity">
+      <restriction base="string">
+         <enumeration value="0..1"/>
+         <enumeration value="1..1"/>
+         <enumeration value="0..n"/>
+         <enumeration value="1..n"/>
+      </restriction>
+   </simpleType>
+   
+   <simpleType name="OverrideOptions">
+      <restriction base="string">
+         <enumeration value="no"/>
+         <enumeration value="may"/>
+         <enumeration value="must"/>
+      </restriction>
+   </simpleType>
+   
+   <simpleType name="listOfQNames">
+      <list itemType="QName"/>
+   </simpleType>
+   
+   <simpleType name="listOfAnyURIs">
+      <list itemType="anyURI"/>
+   </simpleType>
+
+       <simpleType name="CreateResource">
+               <restriction base="string">
+                       <enumeration value="always" />
+                       <enumeration value="never" />
+                       <enumeration value="ifnotexist" />
+               </restriction>
+       </simpleType>
+</schema>


Reply via email to