<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright(C) OASIS(R) 2005,2010. All Rights Reserved. 
     OASIS trademark, IPR and other policies apply.  -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://docs.oasis-open.org/ns/opencsa/sca/200912"
	xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912"
	xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
	elementFormDefault="qualified">

	<include schemaLocation="sca-core-1.1-cd06.xsd"/>	
	<import namespace="http://www.w3.org/ns/ws-policy"
		schemaLocation="http://www.w3.org/2007/02/ws-policy.xsd"/>

	<element name="intent" type="sca:Intent"/>
	<complexType name="Intent">
		<sequence>
			<element name="description" type="string" minOccurs="0"
			   maxOccurs="1" />
			<element name="qualifier" type="sca:IntentQualifier" 
			   minOccurs="0" maxOccurs="unbounded" />
			<any namespace="##other" processContents="lax" 
			   minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
		<attribute name="name" type="NCName" use="required"/>
		<attribute name="constrains" type="sca:listOfQNames" 
		   use="optional"/>
		<attribute name="requires" type="sca:listOfQNames" 
		   use="optional"/>
		<attribute name="excludes" type="sca:listOfQNames" 
		   use="optional"/>
		<attribute name="mutuallyExclusive" type="boolean" 
		   use="optional" default="false"/>
		<attribute name="intentType" 
			type="sca:InteractionOrImplementation" 
			use="optional" default="interaction"/>
		<anyAttribute namespace="##other" processContents="lax"/>
	</complexType>

	<complexType name="IntentQualifier">
		<sequence>
			<element name="description" type="string" minOccurs="0" 
			   maxOccurs="1" />
			<any namespace="##other" processContents="lax" minOccurs="0"
			   maxOccurs="unbounded"/> 
		</sequence>
  		<attribute name="name" type="NCName" use="required"/>
  		<attribute name="default" type="boolean" use="optional" 
  		   default="false"/>
	</complexType>

	<element name="requires"> 
		<complexType>
			<sequence minOccurs="0" maxOccurs="unbounded">
				<any namespace="##other" processContents="lax"/>
			</sequence>		
			<attribute name="intents" type="sca:listOfQNames" use="required"/>
			<anyAttribute namespace="##other" processContents="lax"/>
		</complexType>
	</element>

	<element name="externalAttachment">
		<complexType>
			<sequence minOccurs="0" maxOccurs="unbounded">
				<any namespace="##other" processContents="lax"/>
			</sequence>
			<attribute name="intents" type="sca:listOfQNames" use="optional"/>
			<attribute name="policySets" type="sca:listOfQNames" use="optional"/>	
			<attribute name="attachTo" type="string" use="required"/>
			<anyAttribute namespace="##other" processContents="lax"/>
		</complexType>
	</element>

	<element name="policySet" type="sca:PolicySet"/>
	<complexType name="PolicySet">
		<choice minOccurs="0" maxOccurs="unbounded">
  			<element name="policySetReference" 
  			   type="sca:PolicySetReference"/>
  			<element name="intentMap" type="sca:IntentMap"/>
  			<any namespace="##other" processContents="lax"/>
		</choice>
		<attribute name="name" type="NCName" use="required"/>
		<attribute name="provides" type="sca:listOfQNames"/>
		<attribute name="appliesTo" type="string" use="optional"/>
		<attribute name="attachTo" type="string" use="optional"/>
		<anyAttribute namespace="##other" processContents="lax"/>
	</complexType>

	<element name="policySetAttachment">
		<complexType>
			<sequence minOccurs="0" maxOccurs="unbounded">
				<any namespace="##other" processContents="lax"/>
			</sequence>
			<attribute name="name" type="QName" use="required"/>
			<anyAttribute namespace="##other" processContents="lax"/>
		</complexType>
	</element>

	<complexType name="PolicySetReference">
		<attribute name="name" type="QName" use="required"/>
		<anyAttribute namespace="##other" processContents="lax"/>
	</complexType>

	<complexType name="IntentMap">
		<choice minOccurs="1" maxOccurs="unbounded">
			<element name="qualifier" type="sca:Qualifier"/>
			<any namespace="##other" processContents="lax"/>
		</choice>
		<attribute name="provides" type="QName" use="required"/>
		<anyAttribute namespace="##other" processContents="lax"/>
	</complexType>

	<complexType name="Qualifier">
		<sequence minOccurs="0" maxOccurs="unbounded">
			<any namespace="##other" processContents="lax"/>
		</sequence>
		<attribute name="name" type="string" use="required"/>
		<anyAttribute namespace="##other" processContents="lax"/>
	</complexType>

	<simpleType name="listOfNCNames">
		<list itemType="NCName"/>
	</simpleType>

	<simpleType name="InteractionOrImplementation">
		<restriction base="string">
			<enumeration value="interaction"/>
			<enumeration value="implementation"/>
		</restriction>
	</simpleType>

</schema>