Saltar al contenido principal

Restricciones

En XML Schema, las restricciones se denominan facetas y se refieren a restricciones que podemos aplicar sobre los valores de los datos de un elemento o atributo.

Las restricciones se definen mendiante el elemento restriction:

<xs:restriction base="xs:integer">
<!-- Restricciones -->
</xs:restriction>

Donde el atributo base es el tipo de dato base sobre el cual se aplica la restricción, es decir, partimos de un tipo de dato y vamos acotando la posibilidad de valores que puede tomar. Dicho de otro modo, pasamos de un validación más permisiva a una menos permisiva. En el atributo base solo se pueden indicar tipos de datos simples.

El elemento restriction debe ir dentro de otros elementos XSD y las restricciones se expresan como elementos hijo. Veamos un ejemplo con una restricción aplicada:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="temperatura">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
Ejemplos completos

En los ejemplos de esta sección se mostrarán los documentos XSD completos, donde se utiliza el elemento simpleType, el cual será presentado más adelante. El elemento simpleType es necesario definirlo para aplicar restricciones.

En el ejemplo anterior se está partiendo de un tipo integer, al cual se le aplica la restricción de que su valor mínimo es 10. Es decir, se parte de un tipo de dato que contempla cualquier valor entero a un tipo de dato donde solo se contemplan valores enteros a partir del 10 (incluido).

Se pueden combinar para conseguir una restricción más estricta. Por ejemplo:

<xs:restriction base="xs:integer">
<xs:minInclusive value="10"/>
<xs:maxInclusive value="30"/>
</xs:restriction>

En este ejemplo, podemos ver que hay dos elementos XSD dentro de restriction. Estos elementos restringen el valor que puede tomar el entero a un valor entre 10 y 30, ambos inclusive.