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

<!--
  Document   : domain-suffixes.xsd
  Author     : Enis Soztutar - enis.soz.nutch@gmail.com
  Description: This document is the schema for valid domain-suffixes
  definitions. For successful parsing of domain-suffixes xml files, 
  the xml file should be validated with this xsd. 
  See        : org.apache.nutch.util.domain.DomainSuffixesReader.java
-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="http://lucene.apache.org/nutch"
  xmlns="http://lucene.apache.org/nutch"
  elementFormDefault="qualified">

  <xs:element name="domains">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="tlds">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="itlds">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="tld" maxOccurs="unbounded"
                      type="gtld" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

              <xs:element name="gtlds">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="tld" maxOccurs="unbounded"
                      type="gtld" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

              <xs:element name="cctlds">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="tld" maxOccurs="unbounded"
                      type="cctld" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <xs:element name="suffixes">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="suffix" maxOccurs="unbounded"
                type="sldType" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="gtld">
    <xs:sequence>
      <xs:element name="status" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="INFRASTRUCTURE" />
            <xs:enumeration value="SPONSORED" />
            <xs:enumeration value="UNSPONSORED" />
            <xs:enumeration value="STARTUP" />
            <xs:enumeration value="PROPOSED" />
            <xs:enumeration value="DELETED" />
            <xs:enumeration value="PSEUDO_DOMAIN" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="boost" type="xs:float" minOccurs="0" />
      <xs:element name="description" type="xs:string" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="domain" type="xs:string" />
  </xs:complexType>

  <xs:complexType name="cctld">
    <xs:sequence>
      <xs:element name="country" type="xs:string" />
      <xs:element name="status" type="statusType" minOccurs="0" />
      <xs:element name="boost" type="xs:float" minOccurs="0" />
      <xs:element name="description" type="xs:string" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="domain" type="xs:string" />
  </xs:complexType>

  <xs:complexType name="sldType">
    <xs:sequence>
      <xs:element name="status" type="statusType" minOccurs="0" />
      <xs:element name="boost" type="xs:float" minOccurs="0" />
      <xs:element name="description" type="xs:string" minOccurs="0" />
    </xs:sequence>
    <xs:attribute name="domain" type="xs:string" />
  </xs:complexType>

  <xs:simpleType name="statusType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="IN_USE" />
      <xs:enumeration value="NOT_IN_USE" />
      <xs:enumeration value="DELETED" />
    </xs:restriction>
  </xs:simpleType>

</xs:schema>
