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>