Tutoriales de informática - Abrirllave.com

Abrirllave.com

Ejercicio de XSD - Longitud mínima y máxima de una clave

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>
      <nombre>Ana Sanz Tin</nombre>
      <clave>G8w2</clave>
   </ficha>
   <ficha>
      <nombre>Iker Rubio Mol</nombre>
      <clave>ag32Ue7AFF</clave>
   </ficha>
</fichas>

Escribir el contenido del archivo "fichas.xsd" que permita validarlo, teniendo en cuenta que el elemento "clave" debe poder tomar por valor un mínimo de cuatro caracteres y un máximo de diez. Dichos caracteres pueden ser indistintamente letras mayúsculas o minúsculas de la "a" a la "z", o dígitos del "0" al "9". La restricción solamente podrá aplicarse al elemento "clave".

Para ello, se debe utilizar xs:pattern y también:

Solución:

<?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="clave">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:pattern value="[a-zA-Z0-9]*"/>
                    <xs:minLength value="4"/>
                    <xs:maxLength value="10"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>