Saltar al contenido principal

Ejercicio 420

Elabora un documento XSD que permita validar el siguiente documento XML:

<matricula>
<personal>
<dni>99223366M</dni>
<nombre>Juan Pardo Martín</nombre>
<titulacion>Ingeniería Informática</titulacion>
<curso-academico>1997/1998</curso-academico>
<domicilios>
<domicilio tipo="familiar">
<nombre>C/ Principal nº1</nombre>
</domicilio>
<domicilio tipo="habitual">
<nombre>C/ Secundaria nº2</nombre>
</domicilio>
</domicilios>
</personal>
<pago>
<tipo_matricula>Matrícula Ordinaria</tipo_matricula>
</pago>
</matricula>

Algunas consideraciones:

  • Todos los elementos y atributos son del tipo string.
  • El elemento <domicilio> puede aparecer un número ilimitado de veces.
Solución
XML
<?xml version="1.0" encoding="UTF-8" ?>
<matricula
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="420.xsd">
<personal>
<dni>99223366M</dni>
<nombre>Juan Pardo Martín</nombre>
<titulacion>Ingeniería Informática</titulacion>
<curso-academico>1997/1998</curso-academico>
<domicilios>
<domicilio tipo="familiar">
<nombre>C/ Principal nº1</nombre>
</domicilio>
<domicilio tipo="habitual">
<nombre>C/ Secundaria nº2</nombre>
</domicilio>
</domicilios>
</personal>
<pago>
<tipo_matricula>Matrícula Ordinaria</tipo_matricula>
</pago>
</matricula>
420.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="matricula" type="tMatricula" />

<xs:complexType name="tMatricula">
<xs:sequence>
<xs:element name="personal" type="tPersonal" />
<xs:element name="pago" type="tPago" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="tPersonal">
<xs:sequence>
<xs:element name="dni" type="xs:string" />
<xs:element name="nombre" type="xs:string" />
<xs:element name="titulacion" type="xs:string" />
<xs:element name="curso-academico" type="xs:string" />
<xs:element name="domicilios" type="tDomicilios" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="tPago">
<xs:sequence>
<xs:element name="tipo_matricula" type="xs:string" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="tDomicilios">
<xs:sequence>
<xs:element name="domicilio" type="tDomicilio" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="tDomicilio">
<xs:sequence>
<xs:element name="nombre" type="xs:string" />
</xs:sequence>
<xs:attribute name="tipo" type="xs:string" />
</xs:complexType>
</xs:schema>