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>