UT4.2 Mail

Mail
XMLMail
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mail SYSTEM "01.dtd">
<mail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="01.xsd">
    <remitente>pepe@mail.com</remitente>
    <destinatarios>
        <destinatario>maria@mail.com</destinatario>
        <destinatario>sofia@mail.com</destinatario>
    </destinatarios>
    <fecha_mensaje>
        <dia>---25</dia>
        <mes>--11</mes>
        <anyo>2024</anyo>
    </fecha_mensaje>
    <asunto>Cena Navidad 2024</asunto>
    <mensaje>
        <h2>Invitación a la Cena de Navidad</h2>
        <p>Querido/a compañero/a:</p>
        <p>Nos complace invitarte a compartir una noche especial en nuestra <strong>Cena de Navidad</strong>, que se celebrará en el encantador Parador de Benavente.</p>
        <h3>Detalles del evento:</h3>
        <ul>
            <li><strong>Fecha:</strong> Jueves, 21 de diciembre de 2023</li>
            <li><strong>Hora:</strong> 21:00</li>
            <li><strong>Lugar:</strong> Parador de Benavente</li>
        </ul>
        <p>Ven a disfrutar de una velada inolvidable llena de buena compañía, deliciosa gastronomía y el espíritu navideño que tanto nos une.</p>
        <p>Por favor, confirma tu asistencia antes del <strong>15 de diciembre de 2023</strong> respondiendo a este correo o contactando al [teléfono/email de contacto].</p>
        <p>Esperamos contar contigo para hacer de esta cena un momento aún más especial. <strong>¡No faltes!</strong></p>
        <p>Con cariño,</p>
        <p>Director</p>
    </mensaje>
    <ficheros_adjuntos>
        <fichero>
            <nombre>documento.pdf</nombre>
            <tipo_MIME>application/pdf</tipo_MIME>
        </fichero>
        <fichero>
            <nombre>imagen.png</nombre>
            <tipo_MIME>image/png</tipo_MIME>
        </fichero>
    </ficheros_adjuntos>
</mail>
DTDMail
<!-- Elemento raíz mail-->
<!ELEMENT mail (remitente,destinatarios,fecha_mensaje,asunto?,mensaje?,ficheros_adjuntos?)>
<!ATTLIST mail  xmlns:xsi CDATA #IMPLIED
                xsi:noNamespaceSchemaLocation CDATA #IMPLIED>
<!-- Atributo de correo id obligatorio de tipo ID -->
<!-- elemento remitente -->
<!ELEMENT remitente (#PCDATA)>
<!-- destinatario que pueden ser 1 o varios-->
<!ELEMENT destinatarios (destinatario+) >
<!ELEMENT destinatario (#PCDATA)>
<!ELEMENT fecha_mensaje (dia,mes,anyo)>
<!ELEMENT dia (#PCDATA)>
<!ELEMENT mes (#PCDATA)>
<!ELEMENT anyo (#PCDATA)>
<!-- Atributos asunto y mensaje opcional  
<!ATTLIST correo asunto CDATA #IMPLIED>
<!ATTLIST correo mensaje CDATA #IMPLIED>-->
<!ELEMENT asunto (#PCDATA)>
 
<!ELEMENT mensaje (#PCDATA | h2 | h3 | p| ul  )*>
<!ELEMENT h2 (#PCDATA)>
<!ELEMENT h3 (#PCDATA)>
<!ELEMENT p (#PCDATA | strong)*>
<!ELEMENT strong (#PCDATA)>
<!ELEMENT ul (li+)>
<!ELEMENT li (#PCDATA | strong)*>
 
<!ELEMENT ficheros_adjuntos (fichero*)>
<!ELEMENT fichero (nombre,tipo_MIME)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT tipo_MIME (#PCDATA)>
XSDMail
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="mail">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="remitente" type="xs:string" />
                <xs:element name="destinatarios">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="destinatario" type="xs:string" maxOccurs="unbounded" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="fecha_mensaje">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="dia" type="xs:gDay" />
                            <xs:element name="mes" type="xs:gMonth" />
                            <xs:element name="anyo" type="xs:gYear" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <!-- minocu por defecto es 1 -->
                <xs:element name="asunto" type="xs:string" minOccurs="0" />
                <xs:element name="mensaje">
                    <xs:complexType mixed="true">
                        <xs:choice minOccurs="0" maxOccurs="unbounded">
                            <xs:element name="h2" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                            <xs:element name="h3" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
                            <xs:element name="p" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType mixed="true">
                                    <!-- este choice es el que da los fallos de p en xml por no tener min/max ocu -->
                                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                                        <xs:element name="strong" type="xs:string" />
                                    </xs:choice>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="ul">
                                <xs:complexType mixed="true">
                                    <xs:sequence>
                                        <xs:element name="li" minOccurs="0" maxOccurs="unbounded">
                                            <xs:complexType mixed="true">
                                                <xs:choice>
                                                    <xs:element name="strong" type="xs:string" />
                                                </xs:choice>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:choice>
                    </xs:complexType>
                </xs:element>

                <xs:element name="ficheros_adjuntos" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="fichero" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="nombre" type="xs:string" />
                                        <xs:element name="tipo_MIME" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>

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