Facetas do XSD
- Página Anterior Atributos do XSD
- Próxima Página Elementos Complexos do XSD
A restrição (restriction) é usada para definir os valores aceitáveis para um elemento XML ou atributo. A restrição de um elemento XML é chamada de faceta.
Restrição de valor
O exemplo a seguir define um elemento com restrição e nome "age". O valor de "age" não pode ser inferior a 0 ou superior a 120:
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>
Restrição de um grupo de valores
Para limitar o conteúdo de um elemento XML a um grupo de valores aceitos, devemos usar restrições de enumeração (enumeration constraint).
O exemplo a seguir define um elemento nomeado "car" com restrição. Os valores aceitos são apenas: Audi, Golf, BMW:
<xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>
O exemplo acima também pode ser escrito como:
<xs:element name="car" type="carType"/> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
Comentário:Neste caso, o tipo "carType" pode ser usado por outros elementos, pois não é parte do elemento "car".
Restrição de uma série de valores
Para limitar o conteúdo de um elemento XML a uma série de números ou letras aceitos, devemos usar restrições de padrão (pattern constraint).
O exemplo a seguir define um elemento nomeado "letter" com restrição. Os valores aceitos são apenas uma letra minúscula a - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
O próximo exemplo define um elemento nomeado "initials" com restrição. Os valores aceitos são três letras maiúsculas A - Z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
O próximo exemplo também define um elemento nomeado "initials" com restrição. Os valores aceitos são três letras maiúsculas ou minúsculas a - z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
O próximo exemplo define um elemento nomeado "choice" com restrição. Os valores aceitos são os caracteres x, y ou z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
O próximo exemplo define um elemento nomeado "prodid" com restrição. Os valores aceitos são uma sequência de cinco dígitos arábicos, com cada número no intervalo de 0-9:
<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>
Outras limitações para uma série de valores
O exemplo a seguir define um elemento com nome "letter" limitado. Os valores aceitáveis são zero ou mais letras de a a z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
O exemplo a seguir define um elemento com nome "letter" limitado. Os valores aceitáveis são um par ou mais pares de letras, onde cada par é composto por uma letra minúscula seguida por uma letra maiúscula. Por exemplo, "sToP" passará por essa verificação, mas "Stop", "STOP" ou "stop" não passarão:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
O exemplo a seguir define um elemento com nome "gender" limitado. Os valores aceitáveis são male ou female:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
O exemplo a seguir define um elemento com nome "password" limitado. Os valores aceitáveis são uma linha de caracteres composta por 8 caracteres, que devem ser letras maiúsculas ou minúsculas a - z ou números 0 - 9:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
Limitação de caracteres de espaço em branco
Para determinar o modo de tratamento dos caracteres de espaço em branco, devemos usar a limitação whiteSpace.
O exemplo a seguir define um elemento com nome "address" limitado. A limitação whiteSpace é configurada como "preserve", o que significa que o processador XML não removerá nenhum caractere de espaço em branco:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Este exemplo também define um elemento com nome "address" limitado. A limitação whiteSpace é configurada como "replace", o que significa que o processador XML removerá todos os caracteres de espaço em branco (quebra de linha, enter, espaço e tabulação):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Este exemplo também define um elemento nomeado "address" com uma restrição. A restrição whiteSpace está configurada como "collapse", o que significa que o processador XML removerá todos os caracteres de espaço em branco (quebra de linha, enter, espaço e tabulação serão substituídos por um espaço, os espaços no início e no final serão removidos e os espaços em branco consecutivos serão reduzidos a um único espaço):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Restrição de comprimento
Para restringir o comprimento do valor de um elemento, devemos usar as restrições length, maxLength e minLength.
Este exemplo define um elemento nomeado "password" com uma restrição e valor exato de 8 caracteres:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Este exemplo também define um elemento nomeado "password" com uma restrição. Seu valor deve ter no mínimo 5 e no máximo 8 caracteres:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Restrição do tipo de dados
Restrição | Descrição |
---|---|
enumeration | Define uma lista de valores aceitáveis |
fractionDigits | Define o número máximo de dígitos decimais permitidos. Deve ser maior ou igual a 0. |
length | Define o número exato de caracteres ou itens de uma lista permitidos. Deve ser maior ou igual a 0. |
maxExclusive | Define o limite superior de um valor numérico. Os valores permitidos devem ser menores que este valor. |
maxInclusive | Define o limite superior de um valor numérico. Os valores permitidos devem ser menores ou iguais a este valor. |
maxLength | Define o número máximo permitido de caracteres ou itens de uma lista. Deve ser maior ou igual a 0. |
minExclusive | Define o limite inferior de um valor numérico. Os valores permitidos devem ser maiores que este valor. |
minInclusive | Definir o limite inferior do valor numérico. Os valores permitidos devem ser maiores ou iguais a este valor. |
minLength | Definir o número mínimo de caracteres ou itens permitidos. Deve ser maior ou igual a 0. |
pattern | Definir a sequência exata de caracteres aceitáveis. |
totalDigits | Definir a precisão do número árabe permitido. Deve ser maior que 0. |
whiteSpace | Definir o tratamento de caracteres de espaço em branco (quebra de linha, Enter, espaço e tabulação). |
- Página Anterior Atributos do XSD
- Próxima Página Elementos Complexos do XSD