<?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

      https://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 targetNamespace="https://db.apache.org/jdo/xmlns/jdoquery"
           xmlns="https://db.apache.org/jdo/xmlns/jdoquery"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           version="3.2">
    <xs:element name="jdoquery">
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="extension"/>
                <xs:element ref="package"/>
                <xs:element ref="query"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:element name="package">
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="extension"/>
                <xs:element ref="interface"/>
                <xs:element ref="class"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.package"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.package">
        <xs:attribute name="name" default=""/>
    </xs:attributeGroup>
    <xs:element name="interface">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="extension"/>
                <xs:element ref="query"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.interface"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.interface">
        <xs:attribute name="name" use="required"/>
    </xs:attributeGroup>
    <xs:element name="class">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="extension"/>
                <xs:element ref="query"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.class"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.class">
        <xs:attribute name="name" use="required"/>
    </xs:attributeGroup>
    <xs:element name="query">
        <xs:complexType mixed="true">
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
            </xs:sequence>
            <xs:attributeGroup ref="attlist.query"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.query">
        <xs:attribute name="name" use="required"/>
        <xs:attribute name="language"/>
        <xs:attribute name="unmodifiable" default="false">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="unique">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="result-class"/>
        <xs:attribute name="datastore-read-timeout-millis"/>
        <xs:attribute name="datastore-write-timeout-millis"/>
    </xs:attributeGroup>
    <xs:element name="extension">
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="any">
                    <xs:attributeGroup ref="attlist.extension"/>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.extension">
        <xs:attribute name="vendor-name" use="required"/>
        <xs:attribute name="key"/>
        <xs:attribute name="value"/>
    </xs:attributeGroup>
    <xs:complexType name="any" mixed="true">
        <xs:sequence>
            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>
