Las restricciones se utilizan para definir reglas específicas sobre los valores que pueden tomar los elementos y atributos en un documento XML, más allá de los simples tipos de datos como string, integer, etc. Estas restricciones permiten validar que los datos en un documento XML cumplan con criterios más detallados, asegurando así la calidad y consistencia de los datos. Las restricciones se aplican principalmente mediante el uso de <xs:simpleType> junto con <xs:restriction>.
<xs:element name="edad">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Este ejemplo limita el valor de un elemento a estar entre 1 y 100.
xs:maxInclusive >>Especifica que el valor debe ser menor o igual que el indicado.
xs:maxExclusive >>Especifica que el valor debe ser menor que el indicado.
xs:minExclusive >>Especifica que el valor debe ser mayor que el indicado.
xs:minInclusive >>Especifica que el valor debe ser mayor o igual que el indicado.
<xs:element name="codigoPostal">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Aquí se restringe la longitud de una cadena a exactamente 10 caracteres.
También es posible utilizar:
xs:minLength Especifica una longitud mínima.
xs:maxLength Especifica una longitud máxima.
<xs:element name="colorPreferido">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Rojo"/>
<xs:enumeration value="Verde"/>
<xs:enumeration value="Azul"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Este ejemplo permite que el elemento solo tenga uno de los valores específicos listados.
<xs:element name="email">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z0-9._%+-]+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Se utiliza para restringir el valor de un elemento a aquellos que coinciden con un patrón específico, como un formato de correo electrónico.
<xs:element name="porcentaje">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0.0"/>
<xs:maxInclusive value="100.0"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Este ejemplo define un elemento que debe tener un valor decimal entre 0.0 y 100.0.
<xs:element name="texto">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
El elemento <xs:whiteSpace> dentro de una definición de esquema XML (XSD) se utiliza para controlar cómo los espacios en blanco (espacios, tabulaciones, nuevas líneas) son manejados por el procesador XML para los valores de elementos o atributos. Este control se realiza en el contexto de una restricción de tipo simple mediante <xs:restriction>.
El elemento <xs:whiteSpace> puede tomar uno de los tres valores siguientes:
preserve: Indica que los espacios en blanco deben conservarse tal como vienen en el documento XML. Esto significa que los espacios, tabulaciones y saltos de línea no se modifican ni eliminan.
replace: Significa que todos los espacios en blanco deben ser reemplazados por espacios. Por ejemplo, las tabulaciones y los saltos de línea se convertirán en espacios.
collapse: Este valor indica que los espacios en blanco deben ser colapsados a un solo espacio. Esto significa que las secuencias de espacios en blanco (incluyendo espacios, tabulaciones y nuevas líneas) se reemplazan por un único espacio. Además, cualquier espacio en blanco al inicio o al final del valor del elemento o atributo se elimina.