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

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:simpleType name="DNIType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{8}[a-z]"/>
        </xs:restriction>
    </xs:simpleType>

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

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

    <xs:simpleType name="ObservacionesType">
        <xs:restriction base="xs:string">
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="IdiomaType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="català"/>
            <xs:enumeration value="español"/>
            <xs:enumeration value="inglés"/>
            <xs:enumeration value="francés"/>
            <xs:enumeration value="alemán"/>
        </xs:restriction>
    </xs:simpleType>

    <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="IDType">
        <xs:restriction base="xs:string">
            <xs:pattern value="00[1-9]|0[1-9][0-9]|[1-9][0-9][0-9]"/>
        </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:element name="clinica">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="cliente" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>

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

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

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

                            <xs:element name="perro" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="nombre" type="NombreAnimalType"/>
                                        <xs:element name="raza" type="xs:string"/>
                                        <xs:element name="sexo" type="SexoType"/>
                                        <xs:element name="vacunas" type="xs:string"/>
                                        <xs:element name="alergias" type="xs:string"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>

                            <xs:element name="gato" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="nombre" type="NombreAnimalType"/>
                                        <xs:element name="raza" type="xs:string"/>
                                        <xs:element name="sexo" type="SexoType"/>
                                        <xs:element name="vacunas" type="xs:string"/>
                                        <xs:element name="maldad" type="MaldadType"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>

                            <xs:element name="tarantula" minOccurs="0" maxOccurs="1">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="nombre" type="NombreAnimalType"/>
                                        <xs:element name="sexo" type="SexoType"/>
                                        <xs:element name="fealdad" type="FealdadType"/>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>

                        </xs:sequence>
						
                        <xs:attribute name="id" type="IDType" use="required"/>
                        <xs:attribute name="fecha" type="xs:string" use="required"/>
                        <xs:attribute name="idioma" type="IdiomaType" 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>