Ejercicio de XSD - Mensaje entre personas
Dado el siguiente archivo "mensaje.xsd":
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.abrirllave.com/mensaje"
xmlns:me="http://www.abrirllave.com/mensaje">
<xs:element name="mensaje">
<xs:complexType>
<xs:sequence>
<xs:element name="origen" type="me:datosOrigenDestino"/>
<xs:element name="destino" type="me:datosOrigenDestino"/>
<xs:element ref="me:asunto"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="asunto" type="xs:string"/>
<xs:complexType name="datosOrigenDestino">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="ciudad" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
- Nótese que, en la definición del elemento "mensaje", se ha referenciado al elemento "asunto" utilizando el atributo ref.
Corregir los errores cometidos en el siguiente documento XML, para que sea válido. Para ello, no modificar la cuarta línea de código:
<?xml version="1.0"?>
<mensaje xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.abrirllave.com/mensaje mensaje.xsd"
xmlns:men="http://www.abrirllave.com/mensaje">
<origen>
<nombre>Ana Sanz Tin</nombre>
<ciudad>Pamplona</ciudad>
</origen>
<destino>
<nombre>Iker Rubio Mol</nombre>
<ciudad>Sevilla</ciudad>
</destino>
<asunto>¡Vuelve pronto!</asunto>
</mensaje>
Solución:
<?xml version="1.0"?>
<men:mensaje xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.abrirllave.com/mensaje mensaje.xsd"
xmlns:men="http://www.abrirllave.com/mensaje">
<origen>
<nombre>Ana Sanz Tin</nombre>
<ciudad>Pamplona</ciudad>
</origen>
<destino>
<nombre>Iker Rubio Mol</nombre>
<ciudad>Sevilla</ciudad>
</destino>
<men:asunto>¡Vuelve pronto!</men:asunto>
</men:mensaje>
- Los elementos "mensaje" y "asunto" son globales; por tanto, hay que calificarlos obligatoriamente.
- Ahora bien, dado que el valor por defecto del atributo elementFormDefault es "unqualified", los elementos locales ("origen", "destino", "nombre" y "ciudad") no se tienen que calificar.