Las restricciones de valores refinan un tipo simple definiendo los límites en los valores que puede representar.
A menudo es útil poder restringir los valores que puede tomar un elemento, quizás para asegurar que los mensajes cumplan las normas empresariales. Este tema describe cómo pueden añadirse restricciones de valores a un tipo simple para poder restringir los valores de todos los elementos basados en el mismo.
La mayoría de las restricciones de valores que se describen aquí están modeladas por facetas de esquema XML y están asociados con un tipo simple. Sin embargo, pueden definirse valores predeterminados y valores fijos para un elemento, y estos están asociados con el elemento en sí mismo.
Si falta un atributo de un mensaje de entrada, se le asignará el valor predeterminado.
Tenga en cuenta que las restricciones de valores predeterminados están asociadas con el elemento en sí mismo y, por lo tanto, no pueden ser heredadas.
Si un atributo está presente en un mensaje de entrada, deberá tener el valor fijo. Si un atributo falta de un mensaje de entrada, se le asignará el valor fijo.
Las restricciones de valor fijo están asociadas con el mismo elemento y, por lo tanto, no pueden ser heredadas.
La restricciones de longitud pueden aplicarse a tipos simples que deriven de xsd:hexBinary, xsd:base64Binary o xsd:string (incluyendo los tipos de esquemas incorporados como xsd:normalisedString).
Las restricciones de longitud se heredan de los tipos ascendentes y cualquier restricción definida para un tipo simple no debe relajar las restricciones impuestas por cualquiera de los tipos ascendentes. Por ejemplo, sería ilegal derivar un tipo 'longString' (Longitud máx=100) de un tipo 'shortString' (Longitud máx=10).
Las restricciones de rango se heredan de los tipos de ancestros, y cualquier restricción de rango definida para un tipo simple no debe relajar las restricciones impuestas por cualquiera de sus tipos de ancestro. Por ejemplo, sería ilegal derivar un tipo 'largeNumber' (Máx inclusivo=100) de un tipo 'smallNumber' (Máx inclusivo=10).
El modelo de mensajes no permite que las restricciones exclusivas se apliquen a tipos no integrales (float, decimal, double, dateTime, etc.).
Las restricciones de enumeración se heredan de los tipos de ancestros, y cualquier conjunto de restricciones de enumeración definido para un tipo simple no debe aumentar el rango de valores permitidos. Por ejemplo, sería ilegal derivar un tipo 'AllColours' (con enumeraciones de todos los colores del arco iris) de un tipo 'MonoColours' (con sólo enumeraciones para 'negro' y 'blanco').
Las restricciones de precisión se heredan de tipos de ancestros y cualquier precisión de precisión definida para un tipo definido para un tipo simple no debe relajar las restricciones impuestas por cualquiera de sus tipos de ancestro. Por ejemplo, sería ilegal derivar un tipo 'veryPrecise' (Fracción de dígitos=10) de un tipo 'notVeryPrecise' (Fracción de dígitos=1).
Como con todas las restricciones de valores, un tipo simple puede heredar restricciones de patrón del tipo simple en el que está basado. En este caso, el conjunto de restricciones de patrones al que contribuye cada tipo de ancestro debe satisfacerse así como el conjunto al que contribuye el mismo tipo simple. En otras palabras, los conjuntos de restricciones de patrón de cada nivel en la jerarquía de tipos se combinan utilizando el booleano AND.
Las restricciones de patrón sólo pueden aplicarse a tipos simples que derivan de xsd:string.