Tutoriales de informática - Abrirllave.com

Abrirllave.com

Ejercicio de XSD - Información de ubicaciones

Dado el archivo "ubicaciones.xsd":

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="ubicaciones">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ubicacion" type="direccion" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:simpleType name="direccion">
    <xs:restriction base="xs:string">
      <xs:enumeration value="norte"/>
      <xs:enumeration value="sur"/>
      <xs:enumeration value="este"/>
      <xs:enumeration value="oeste"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>

Añadir, al archivo "ubicaciones.xsd", la definición de un nuevo elemento complexType llamado "infoUbicacion" que amplíe la definición de "direccion", permitiendo validar el siguiente documento XML:

<?xml version="1.0" encoding="UTF-8"?>
<ubicaciones xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ubicaciones.xsd">
   <ubicacion metros="32">norte</ubicacion>
   <ubicacion metros="25">este</ubicacion>
   <ubicacion metros="64">este</ubicacion>
</ubicaciones>

Solución:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="ubicaciones">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ubicacion" type="infoUbicacion" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="infoUbicacion">
    <xs:simpleContent>
      <xs:extension base="direccion">
        <xs:attribute name="metros" type="xs:integer"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="direccion">
    <xs:restriction base="xs:string">
      <xs:enumeration value="norte"/>
      <xs:enumeration value="sur"/>
      <xs:enumeration value="este"/>
      <xs:enumeration value="oeste"/>
    </xs:restriction>
  </xs:simpleType>

</xs:schema>