<?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" 
        targetNamespace="http://docs.oasis-open.org/ns/opencsa/sca/200903" 
        xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200903"
        elementFormDefault="qualified">

   <include schemaLocation="sca-core-1.1-cd03.xsd"/>

   <complexType name="JMSBinding">
      <complexContent>
         <extension base="sca:Binding">
            <sequence>
               <element name="destination" type="sca:JMSDestination"
                        minOccurs="0"/> 
               <choice minOccurs="0" maxOccurs="1"> 
                  <element name="connectionFactory" 
                           type="sca:JMSConnectionFactory"/> 
                  <element name="activationSpec" type="sca:JMSActivationSpec"/> 
               </choice>     
               <element name="response" type="sca:JMSResponse" minOccurs="0"/>
               <element name="headers" type="sca:JMSHeaders" minOccurs="0"/>
               <element name="messageSelection" type="sca:JMSMessageSelection"
                        minOccurs="0"/>
               <element name="resourceAdapter" type="sca:JMSResourceAdapter" 
                        minOccurs="0"/>
               <element name="operationProperties" 
                        type="sca:JMSOperationProperties" 
                        minOccurs="0" maxOccurs="unbounded"/>
               <any namespace="##other" processContents="lax" 
                    minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
            <attribute name="correlationScheme" type="QName"
                       default="sca:messageId"/>
            <attribute name="initialContextFactory" type="anyURI"/>
            <attribute name="jndiURL" type="anyURI"/>
            <attribute name="requestConnection" type="QName"/>
            <attribute name="responseConnection" type="QName"/>
            <attribute name="operationProperties" type="QName"/>
         </extension>
      </complexContent>
   </complexType>

   <simpleType name="JMSCreateResource">
      <restriction base="string">
         <enumeration value="always"/>
         <enumeration value="never"/>
         <enumeration value="ifNotExist"/>
      </restriction>
   </simpleType>

   <complexType name="JMSDestination">
      <sequence>
         <element name="property" type="sca:BindingProperty" 
                  minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <attribute name="jndiName" type="anyURI" use="required"/>
      <attribute name="type" use="optional" default="queue">
         <simpleType>
            <restriction base="string">
               <enumeration value="queue"/>
               <enumeration value="topic"/>
            </restriction>
         </simpleType>
      </attribute>
      <attribute name="create" type="sca:JMSCreateResource" 
                 use="optional" default="ifNotExist"/>
   </complexType>

   <complexType name="JMSConnectionFactory">
      <sequence>          <element name="property" type="sca:BindingProperty" 
                  minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <attribute name="jndiName" type="anyURI" use="required"/>
      <attribute name="create" type="sca:JMSCreateResource" 
                 use="optional" default="ifNotExist"/>
   </complexType>

   <complexType name="JMSActivationSpec">
      <sequence>
         <element name="property" type="sca:BindingProperty" 
                  minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <attribute name="jndiName" type="anyURI" use="required"/>
      <attribute name="create" type="sca:JMSCreateResource"
                 use="optional" default="ifNotExist"/>
   </complexType>

   <complexType name="JMSResponse">
      <sequence>
         <element name="wireFormat" type="sca:WireFormatType" minOccurs="0"/>
         <element name="destination" type="sca:JMSDestination" minOccurs="0"/>
         <choice minOccurs="0"> 
            <element name="connectionFactory" type="sca:JMSConnectionFactory"/> 
            <element name="activationSpec" type="sca:JMSActivationSpec"/> 
         </choice> 
      </sequence>
   </complexType>

   <complexType name="JMSHeaders">
      <sequence>
         <element name="property" type="sca:BindingProperty" 
                  minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <attribute name="type" type="string"/>
      <attribute name="deliveryMode">
         <simpleType>
            <restriction base="string">
               <enumeration value="persistent"/>
               <enumeration value="nonpersistent"/>
            </restriction>
         </simpleType>
      </attribute>
      <attribute name="timeToLive" type="long"/>
      <attribute name="priority">
         <simpleType>
            <restriction base="string">
               <enumeration value="0"/>
               <enumeration value="1"/>
               <enumeration value="2"/>
               <enumeration value="3"/>
               <enumeration value="4"/>
               <enumeration value="5"/>
               <enumeration value="6"/>
               <enumeration value="7"/>
               <enumeration value="8"/>
               <enumeration value="9"/>
            </restriction>
         </simpleType>
      </attribute>
   </complexType>

   <complexType name="JMSMessageSelection"> 
      <sequence> 
         <element name="property" type="sca:BindingProperty" 
                  minOccurs="0" maxOccurs="unbounded"/> 
      </sequence> 
      <attribute name="selector" type="string"/> 
   </complexType>

   <complexType name="JMSResourceAdapter">
      <sequence>
         <element name="property" type="sca:BindingProperty" 
                  minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <attribute name="name" type="string" use="required"/>
   </complexType>

   <complexType name="JMSOperationProperties">
      <sequence>
         <element name="property" type="sca:BindingProperty" 
                  minOccurs="0" maxOccurs="unbounded"/>
         <element name="headers" type="sca:JMSHeaders"/>
      </sequence>
      <attribute name="name" type="string" use="required"/>
      <attribute name="nativeOperation" type="string"/>
   </complexType>

   <complexType name="BindingProperty">
      <simpleContent>
         <extension base="string">
            <attribute name="name" type="NMTOKEN"/>
            <attribute name="type" type="string" use="optional"
                       default="xs:string"/>
         </extension>
      </simpleContent>
   </complexType>

   <element name="binding.jms" type="sca:JMSBinding" 
            substitutionGroup="sca:binding"/>

   <element name="wireFormat.jmsDefault" type="sca:WireFormatType" 
            substitutionGroup="sca:wireFormat"/>

   <element name="operationSelector.jmsDefault" type="sca:OperationSelectorType" 
            substitutionGroup="sca:operationSelector"/>
</schema>
