<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  ~  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 xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
           targetNamespace="http://ws.apache.org/ns/synapse"
           xmlns="http://ws.apache.org/ns/synapse">

    <xs:include schemaLocation="sequence.xsd"/>
    <xs:include schemaLocation="endpoint.xsd"/>
    <xs:include schemaLocation="proxy.xsd"/>
    <xs:include schemaLocation="event_source.xsd"/>
    <xs:include schemaLocation="local_entry.xsd"/>
    <xs:include schemaLocation="registry.xsd"/>
    <xs:include schemaLocation="task.xsd"/>
    <xs:include schemaLocation="priority_executor.xsd"/>

    <xs:element name="definitions" type="Definition">
        <xs:annotation>
            <xs:documentation source="description">
                The complete Synapse Configuration is enclosed within the &lt;definitions&gt;
                element.
            </xs:documentation>
        </xs:annotation>
    </xs:element>

    <xs:complexType name="Definition">
        <xs:annotation>
            <xs:documentation source="description">
                This complex type denotes the top level elements that can be there in a
                &lt;definitions&gt; tag, basically all top level constructs of the synapse
                configuration
            </xs:documentation>
        </xs:annotation>
        <xs:choice maxOccurs="unbounded" minOccurs="1">
            <xs:element ref="registry" minOccurs="0" maxOccurs="1"/>
            <xs:element ref="localEntry" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="priorityExecutor" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="endpoint" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="sequence" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="proxy" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="eventSource" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="task" minOccurs="0" maxOccurs="unbounded"/>
        </xs:choice>
    </xs:complexType>

</xs:schema>