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

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:simpleType name="NombreAnimalType">
        <xs:restriction base="xs:string">
            <xs:minLength value="3"/>
            <xs:maxLength value="8"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="SexoType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="hembra"/>
            <xs:enumeration value="macho"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="MaldadType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="bajo"/>
            <xs:enumeration value="regular"/>
            <xs:enumeration value="alto"/>
            <xs:enumeration value="esclavizar_humano"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="FealdadType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="alta"/>
            <xs:enumeration value="muy_alta"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="AnimalType">
        <xs:sequence>
            <xs:element name="nombre" type="NombreAnimalType"/>
            <xs:element name="sexo" type="SexoType"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="PerroType">
        <xs:complexContent>
            <xs:extension base="AnimalType">
                <xs:sequence>
                    <xs:element name="raza" type="xs:string"/>
                    <xs:element name="vacunas" type="xs:string"/>
                    <xs:element name="alergias" type="xs:string"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="GatoType">
        <xs:complexContent>
            <xs:extension base="AnimalType">
                <xs:sequence>
                    <xs:element name="raza" type="xs:string"/>
                    <xs:element name="vacunas" type="xs:string"/>
                    <xs:element name="maldad" type="MaldadType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:complexType name="TarantulaType">
        <xs:complexContent>
            <xs:extension base="AnimalType">
                <xs:sequence>
                    <xs:element name="fealdad" type="FealdadType"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

    <xs:element name="clinica">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="cliente" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>

                            <xs:element name="nombre" type="xs:string"/>
                            <xs:element name="apellidos" type="xs:string"/>
                            <xs:element name="direccion" type="xs:string"/>
                            <xs:element name="DNI" type="xs:string"/>

                            <xs:choice>
                                <xs:element name="telefono" type="xs:string"/>
                                <xs:element name="movil" type="xs:string"/>
                            </xs:choice>

                            <xs:element name="observaciones" type="xs:string" minOccurs="0"/>

                            <xs:element name="perro" type="PerroType" minOccurs="0" maxOccurs="unbounded"/>
                            <xs:element name="gato" type="GatoType" minOccurs="0" maxOccurs="unbounded"/>
                            <xs:element name="tarantula" type="TarantulaType" minOccurs="0" maxOccurs="1"/>

                        </xs:sequence>

                        <xs:attribute name="id" type="xs:string" use="required"/>
                        <xs:attribute name="fecha" type="xs:string" use="required"/>
                        <xs:attribute name="idioma" type="xs:string" use="optional"/>

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

            <xs:attribute name="nombre" type="xs:string" use="required"/>
            <xs:attribute name="CIF" type="xs:string" use="required"/>

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

</xs:schema>