Ejercicio 425
En un centro educativo se guarda la información del alumnado en un documento XML y se utiliza un XSD para validarlo.
Crea un documento XML válido para el siguiente XML Schema:
425.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="alumnado" type="alumnado" />
<xs:complexType name="alumnado">
<xs:sequence>
<xs:choice minOccurs="2" maxOccurs="unbounded">
<xs:element name="alumno" type="alumno" />
<xs:element name="alumna" type="alumno" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="alumno">
<xs:sequence>
<xs:element name="nombre" type="xs:string" />
<xs:element name="apellidos" type="apellidos" />
<xs:element name="direccion" type="direccion" />
<xs:element name="contacto" type="contacto" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" />
</xs:complexType>
<xs:complexType name="apellidos">
<xs:sequence>
<xs:element name="apellido" minOccurs="1" maxOccurs="2" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="direccion">
<xs:sequence>
<xs:element name="domicilio" type="xs:string" />
<xs:element name="codigo-postal">
<xs:complexType>
<xs:attribute name="cp" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="localidad" type="xs:string" />
<xs:element name="provincia" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="contacto">
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="telefono" type="telefono" />
<xs:element name="email" type="email" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="telefono">
<xs:simpleContent>
<xs:extension base="tel">
<xs:attribute name="tipo" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="tel">
<xs:restriction base="xs:string">
<xs:pattern value="[679][0-9]{8}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="email">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="tipo" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
Solución
XML
<?xml version="1.0" encoding="UTF-8" ?>
<alumnado
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="425.xsd">
<alumna>
<nombre>Ana</nombre>
<apellidos>
<apellido>Martínez</apellido>
<apellido>Pérez</apellido>
</apellidos>
<direccion>
<domicilio>C/ Rosalía de Castro 12</domicilio>
<codigo-postal cp="15001" />
<localidad>Santiago de Compostela</localidad>
<provincia>A Coruña</provincia>
</direccion>
<contacto>
<telefono tipo="casa">966778899</telefono>
<email tipo="personal">correo@hotmail.com</email>
</contacto>
</alumna>
<alumno>
<nombre>Jose</nombre>
<apellidos>
<apellido>López</apellido>
<apellido>Pérez</apellido>
</apellidos>
<direccion>
<domicilio>Avenida Fragoso 45</domicilio>
<codigo-postal cp="36002" />
<localidad>Vigo</localidad>
<provincia>Pontevedra</provincia>
</direccion>
<contacto>
<telefono tipo="personal">666777999</telefono>
<email tipo="instituto">correo@edu.xunta.gal</email>
</contacto>
</alumno>
</alumnado>