<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  -->

<xsd:schema xmlns="http://shardingsphere.apache.org/schema/shardingsphere/database-discovery"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:beans="http://www.springframework.org/schema/beans"
            targetNamespace="http://shardingsphere.apache.org/schema/shardingsphere/database-discovery"
            elementFormDefault="qualified">
    <xsd:import namespace="http://www.springframework.org/schema/beans" schemaLocation="http://www.springframework.org/schema/beans/spring-beans.xsd" />
    
    <xsd:element name="rule">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="data-source-rule" maxOccurs="unbounded" />
                <xsd:element ref="discovery-heartbeat" maxOccurs="unbounded" />
            </xsd:sequence>
            <xsd:attribute name="id" type="xsd:string" use="required" />
        </xsd:complexType>
    </xsd:element>
    
    <xsd:element name="data-source-rule">
        <xsd:complexType>
            <xsd:attribute name="id" type="xsd:string" use="required" />
            <xsd:attribute name="data-source-names" type="xsd:string" use="required" />
            <xsd:attribute name="discovery-heartbeat-name" type="xsd:string" use="required" />
            <xsd:attribute name="discovery-type-name" type="xsd:string" use="required" />
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="discovery-heartbeat">
        <xsd:complexType>
            <xsd:all>
                <xsd:element ref="beans:props" minOccurs="0" />
            </xsd:all>
            <xsd:attribute name="id" type="xsd:string" use="required" />
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="discovery-type">
        <xsd:complexType>
            <xsd:all>
                <xsd:element ref="beans:props" minOccurs="0" />
            </xsd:all>
            <xsd:attribute name="id" type="xsd:string" use="required" />
            <xsd:attribute name="type" type="xsd:string" use="required" />
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
