Ejercicio de XSD - Edad entre 0 y 130 años
Dado el siguiente documento XML:
<?xml version="1.0" encoding="UTF-8"?>
<fichas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="fichas.xsd">
<ficha numero="1">
<nombre>Ana Sanz Tin</nombre>
<edad>22</edad>
</ficha>
<ficha numero="2">
<nombre>Iker Rubio Mol</nombre>
<edad>23</edad>
</ficha>
</fichas>
Escribir el contenido del archivo "fichas.xsd" que permita validarlo, teniendo en cuenta que se debe definir la "edad" con la restricción de que el valor que tome no pueda ser menor que 0 ni mayor que 130. Además, en vez de xs:minInclusive y xs:maxInclusive, se debe utilizar:
- xs:minExclusive que sirve para especificar que el valor debe ser mayor que el indicado.
- xs:maxExclusive que sirve para especificar que el valor debe ser menor que el indicado.
Solución 1: la restricción solamente debe poder ser utilizada por el elemento "edad"
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="fichas">
<xs:complexType>
<xs:sequence>
<xs:element name="ficha" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="edad">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minExclusive value="-1"/>
<xs:maxExclusive value="131"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="numero" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Solución 2: la restricción debe poder ser utilizada por "edad" y otros elementos
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="fichas">
<xs:complexType>
<xs:sequence>
<xs:element name="ficha" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="edad" type="edadPersona"/>
</xs:sequence>
<xs:attribute name="numero" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="edadPersona">
<xs:restriction base="xs:integer">
<xs:minExclusive value="-1"/>
<xs:maxExclusive value="131"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>