Tutoriales de informática - Abrirllave.com

Abrirllave.com

Ejercicio de XSD - Panel de vuelos

Si para representar la siguiente información ficticia:

PANEL DE VUELOS DE SALIDA DEL AEROPUERTO JFK – 20/12/2013
Código Diario Origen Destino Hora salida Hora llegada Estado

V22

SI

New York

Chicago

9:30

11:30

R

V23

NO

New York

Miami

10:15

11:15

C

se ha escrito el siguiente documento XML:

<?xml version="1.0" encoding="UTF-8"?>
<aeropuerto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="aeropuerto.xsd">
   <nombre>JFK</nombre>
   <vuelos>
      <vuelo código="V22" estado="R">
         <diario />
         <origen>New York</origen>
         <destino>Chicago</destino>
         <hora-salida>09:30:00</hora-salida>
         <hora-llegada>11:30:00</hora-llegada>
      </vuelo>
      <vuelo código="V23" estado="C">
         <origen>New York</origen>
         <destino>Miami</destino>
         <hora-salida>10:15:00</hora-salida>
         <hora-llegada>11:15:00</hora-llegada>
      </vuelo>
   </vuelos>
   <fecha>2013-12-20</fecha>
</aeropuerto>

Escribir el código del archivo "aeropuerto.xsd" que permita validarlo, teniendo en cuenta que:

Solución:

"aeropuerto.xsd"

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="aeropuerto">
    <xs:complexType>
      <xs:all>
        <xs:element name="nombre" type="xs:string"/>
        <xs:element name="vuelos">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="vuelo" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="diario" minOccurs="0"/>
                    <xs:element name="origen" type="xs:string"/>
                    <xs:element name="destino" type="xs:string"/>
                    <xs:element name="hora-salida" type="xs:time"/>
                    <xs:element name="hora-llegada" type="xs:time"/>
                  </xs:sequence>
                  <xs:attribute name="código" type="xs:ID" use="required"/>
                  <xs:attribute name="estado" default="E">
                    <xs:simpleType>
                      <xs:restriction base="xs:string">
                        <xs:pattern value="[CER]"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="fecha" type="xs:date"/>
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>