En donde el esquema XML proporcione información sobre los valores permitidos de un elemento o atributo (y por tanto del campo correspondiente de la plantilla), el campo generado incluirá una secuencia de comandos de validación JavaScript que compruebe si el valor es uno de los permitidos en la declaración del esquema. Dicha información puede proporcionarse mediante el tipo de datos del elemento o atributo y también mediante las facetas de restricción aplicadas al tipo base. Tenga en cuenta el ejemplo siguiente:
<xsd:element name="Number">
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="4"/>
<xsd:maxInclusive value="9"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
La asignación dará como resultado un campo numérico llamado “Number”, el cual tiene una secuencia de comandos de validación que valida que cualquier valor es un número entero entre 4 y 9.
Muchas de las facetas de restricción del esquema XML proporcionan información que podría utilizarse para generar una secuencia de comandos de validación. Esta información solo se utilizará para generar secuencias de comandos de validación en los casos en que la información no pueda asignarse directamente a una propiedad. Por ejemplo, la asignación de la faceta maxLength para un tipo de cadena <text maxChars=””>.
Secuencias de comandos de tipo numérico
Todos los tipos numéricos en el esquema XML se asignan a un solo campo numérico. Sin embargo, se mantienen las restricciones adicionales impuestas por un tipo numérico en el esquema XML mediante la generación de secuencias de comandos de validación para asegurar que un valor numérico sea el intervalo permitido para el tipo de esquema XML original. Un tipo “unsigned byte” en el esquema XML generará un campo numérico con una secuencia de comandos para validar si el valor corresponde a un byte sin signo. Ésta es la secuencia de comandos generada:
this.rawValue >= 0 && this.rawValue <= 255;
Se generarán secuencias de comandos adecuadas de comprobación de intervalo para los valores siguientes:
integer
positive integer
negative integer
non-positive integer
non-negative integer
long, int
short
byte
unsigned long
unsigned int
unsigned short
unsigned byte datatypes
Secuencias de comandos de inclusión/exclusión
Cuando un tipo numérico indica valores mínimos o máximos de inclusión o exclusión, se generará una secuencia de comandos para que compruebe que el valor introducido está dentro del intervalo definido por estas facetas de restricción. Para un campo que ya tiene una secuencia de comandos de intervalo numérico como se define en Secuencias de comandos de tipo numérico, la secuencia de comandos comprobará el rango de acuerdo con el rango de tipo de datos más restrictivo o el rango de inclusión o exclusión.
Secuencias de comandos length, minLength y maxLength
Un tipo de cadena en el esquema XML puede indicar una faceta de restricción length, o una faceta de restricción minLength o maxLength. Si se asigna el nodo del esquema a un campo de texto, se utilizarán los valores indicados para las facetas de restricción length y minLength para generar una secuencia de comandos de validación que compruebe que la longitud del campo de texto es el valor indicado por length o es al menos el valor indicado por minLength.
Tenga en cuenta que cualquier valor de faceta maxLength se asignará como maxChars para el campo de texto.
Cuando un tipo de datos de cadena corresponde a una lista emergente (debido a los valores enumerados) y a los valores length o min/maxLength dará como resultado la secuencia de comandos de validación para comprobar que el valor seleccionado en la lista tiene una longitud válida de acuerdo con las facetas length, minLength y maxLength.
Secuencias de comandos totalDigits/fractionDigits
La faceta totalDigits indica el número máximo de dígitos que puede utilizarse para un tipo decimal o cualquier tipo de número entero (es decir, de los tipos de datos: decimal, integer, positive integer, negative integer, non-positive integer, non-negative integer, long, int, short, byte, unsigned long, unsigned int, unsigned short y unsigned byte). La faceta fractionDigits solo puede emplearse para el tipo de datos decimal e indica el número máximo de dígitos fraccionarios que pueden utilizarse.
Si se indica totalDigits o fractionDigits para un elemento o atributo que está asignado a un campo numérico, se generará una secuencia de comandos de validación para comprobar que las facetas de restricción permiten el número total de dígitos o el número total de dígitos fraccionarios.