No ponto em que o Esquema XML fornece informações sobre os valores permitidos de um elemento ou atributo (e, portanto, do campo correspondente no modelo), o campo gerado incluirá um script de validação JavaScript que verifica se o valor é permitido pela declaração do esquema. Essas informações podem ser fornecidas por meio do tipo de dados do elemento ou do atributo e também pelos aspectos de restrições aplicados ao tipo de base. Considere o exemplo a seguir:
<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>
O mapeamento resultará em um campo Numérico denominado “Number”, no qual existe um script de validação para validar que qualquer valor corresponde a um número inteiro entre 4 e 9.
Muitos dos aspectos de restrição fornecidos pelo Esquema XML resultam em informações que podem ser usadas para gerar um script de validação. Essas informações apenas serão usadas para gerar scripts de validação nos casos em que elas não puderem ser mapeadas diretamente para uma propriedade, por exemplo, o mapeamento do aspecto maxLength de um tipo de string para <text maxChars=””>.
Scripts de tipo numérico
Todos os tipos numéricos no Esquema XML são mapeados para um campo numérico simples. Entretanto, as restrições adicionais impostas por um tipo numérico do Esquema XML são mantidas por meio da geração de scripts de validação com o objetivo de garantir que o valor de um número seja a faixa permitida para o tipo de Esquema XML original. Um tipo “byte não sinalizado” no Esquema XML gerará um campo numérico com um script para validar se o valor é um valor de byte não sinalizado; ou seja, este será o script gerado:
this.rawValue >= 0 && this.rawValue <= 255;
Scripts de teste para faixas apropriadas serão gerados para os seguintes valores:
integer
positive integer
negative integer
non-positive integer
non-negative integer
long, int
short
byte
unsigned long
unsigned int
unsigned short
unsigned byte datatypes
Scripts de inclusão/exclusão
Quando um tipo numérico especificar valores min ou max de inclusão e/ou exclusão, um script será gerado para testar se o valor digitado está no intervalo definido por esses aspectos de restrições. Para um campo que já possui um script de faixa numérica, conforme definido em Scripts de tipo numérico, o script testará a faixa de acordo com a faixa mais restritiva de tipos de dados ou com a faixa de inclusão/exclusão.
Scripts length, minLength e maxLength
Um tipo de string do Esquema XML pode especificar um aspecto de restrições length ou um aspecto de restrições minLength e/ou maxLength. Se o nó de esquema estiver mapeado para um campo de texto, os valores especificados para os aspectos de restrições length e minLength serão usados para gerar um script de validação com o objetivo de testar se o comprimento do campo de texto corresponde ao valor especificado por length ou se, pelo menos, ao valor especificado por minLength.
Observe que qualquer valor do aspecto maxLength será mapeado como maxChars para o campo de texto.
Quando uma datatype de string mapeia para uma lista pop-up (por causa dos valores enumerados) e o comprimento ou min/maxLength, os valores resultarão no script de validação para verificar se o valor selecionado na lista tem o comprimento válido de acordo com as facetas de comprimento, minLength e maxLength.
Scripts totalDigits/fractionDigits
O aspecto totalDigits especifica o número máximo de dígitos que pode ser usado para um tipo decimal ou qualquer tipo inteiro (ou seja, tipos de dados decimal, integer, positive integer, negative integer, non-positive integer, non-negative integer, long, int, short, byte, unsigned long, unsigned int, unsigned short e unsigned byte). O aspecto fractionDigits é aplicável apenas para o tipo de dados decimal e especifica o número máximo de dígitos fracionais que podem ser usados.
Se totalDigits ou fractionDigits forem especificados para um elemento ou atributo mapeado para um campo numérico, um script de validação será gerado para testar se o número total de dígitos e/ou número de dígitos de fração são permitidos pelos aspectos de restrições.