<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                        targetNamespace="http://www.fb10.uni-bremen.de/anglistik/langpro/kpml/README.html"
            xmlns="http://www.fb10.uni-bremen.de/anglistik/langpro/kpml/README.html"
            elementFormDefault="qualified">

    <xsd:element name="INQUIRIES">
        <xsd:complexType>  
            <xsd:sequence>
                <xsd:element name="COMMENTS" type="xsd:string">
                </xsd:element>
                <xsd:element name="IN-REGION" type="xsd:string">
                </xsd:element>
                <xsd:element name="IN-LANGUAGE">
                    <xsd:simpleType>
                        <xsd:list itemType="xsd:string"/>
                    </xsd:simpleType>
                </xsd:element>
                <xsd:choice minOccurs="1" maxOccurs="unbounded">
                    <xsd:element name="ASKOPERATOR" type="askOperatorType"/>
                    <xsd:element name="IDENTIFYOPERATOR" type="identifyOperatorType"/>
                </xsd:choice>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>            
                
    <xsd:complexType name="askOperatorType">
        <xsd:sequence>
            <xsd:element name="NAME" type="xsd:string"/>
            <xsd:element name="DOMAIN">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                            <xsd:enumeration value="KB"/>
                            <xsd:enumeration value="TP"/>
                    </xsd:restriction>
                </xsd:simpleType>    
            </xsd:element>
            <xsd:element name="PARAMETERS">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="p" type="xsd:string"
                            minOccurs="1" maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="ENGLISH" minOccurs="0">
                <xsd:simpleType>                
                    <xsd:list itemType="quotedTextOrRegularString"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="OPERATORCODE" minOccurs="0">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="package" type="xsd:string"/>
                        <xsd:element name="name" type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="PARAMETERASSOCIATIONTYPES">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="t" type="xsd:string"
                            minOccurs="1" maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="ANSWERSET">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="a" type="xsd:string"
                            minOccurs="1" maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>            
            <xsd:element name="PRESELECTIONGUIDANCE" minOccurs="0" maxOccurs="1">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="preselect" type="preselectionExpressionType"
                          minOccurs="0" maxOccurs="unbounded"/>
                    </xsd:sequence>    
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="TRIVIALDEFAULT" type="xsd:string" minOccurs="0"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="identifyOperatorType">
        <xsd:sequence>
            <xsd:element name="NAME" type="xsd:string"/>
            <xsd:element name="DOMAIN">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                            <xsd:enumeration value="KB"/>
                            <xsd:enumeration value="TP"/>
                    </xsd:restriction>
                </xsd:simpleType>    
            </xsd:element>
            <xsd:element name="PARAMETERS">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="p" type="xsd:string"
                            minOccurs="1" maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="ENGLISH" minOccurs="0">
                <xsd:simpleType>
                    <xsd:list itemType="quotedTextOrRegularString"/>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="OPERATORCODE" minOccurs="0">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="package" type="xsd:string"/>
                        <xsd:element name="name" type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="PARAMETERASSOCIATIONTYPES">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="t" type="xsd:string"
                            minOccurs="1" maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="CREATEDASSOCIATIONTYPES">
                <!--Might be a single item only-->
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="t" type="xsd:string"
                            minOccurs="1" maxOccurs="unbounded"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>           
        </xsd:sequence>
    </xsd:complexType>
    
    <xsd:simpleType name="preselectionExpressionType">
        <xsd:restriction>
            <xsd:simpleType>
                <xsd:list itemType="xsd:string"/>
            </xsd:simpleType>    
            <xsd:length value="2"/>
        </xsd:restriction>    
    </xsd:simpleType>
    
    <xsd:simpleType name="quotedText">
        <xsd:restriction base="xsd:string">
            <xsd:pattern value="\[[.]*\]"/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:simpleType name="quotedTextOrRegularString">
        <xsd:union memberTypes="quotedText xsd:string"/>
    </xsd:simpleType>
</xsd:schema>
