Tutoriales de informática - Abrirllave.com

Abrirllave.com

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:

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>