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>
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.