XSD Limitações / Facetas
- Página Anterior Atributos do XSD
- Próxima Página Elementos do XSD
Restrição (restriction) é usada para definir os valores aceitos para elementos XML ou atributos. A restrição de um elemento XML é chamada de faceta.
Restrição de valores
O exemplo a seguir define um elemento nomeado "age" com restrição. 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 da seguinte forma:
<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>
Notas:Neste caso, o tipo "carType" pode ser usado por outros elementos, pois não faz 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 permitidos, devemos usar restrições de padrão (pattern constraint).
O exemplo a seguir define um elemento nomeado "letter" com restrição. O valor aceito é apenas uma letra minúscula do a ao 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 do A ao 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 do a ao 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 com uma restrição chamada "choice". Os valores aceitáveis são uma das letras 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 com uma restrição chamada "prodid". Os valores aceitáveis são uma sequência de cinco dígitos arábicos, e cada dígito está no intervalo de 0 a 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 restrições para uma série de valores
O exemplo a seguir define um elemento com uma restrição chamada "letter". Os valores aceitáveis são zero ou mais letras da seqüência 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 uma restrição chamada "letter". 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á pela validação dessa padrão, mas "Stop", "STOP" ou "stop" não passarão pela validaçã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 uma restrição chamada "gender". 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 uma restrição chamada "password". 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>
Restrição de caracteres de espaço em branco
Para determinar o modo de tratamento dos caracteres de espaço em branco (whitespace characters), precisamos usar a restrição whiteSpace.
O exemplo a seguir define um elemento com um nome limitado chamado "address". A restriçã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 chamado "address" com uma restrição. Esta restrição whiteSpace está configurada como "replace", o que significa que o processador XML removerá todos os caracteres de espaço em branco (quebras de linha, enter, espaços e tabulações):
<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 chamado "address" com uma restrição. Esta restrição whiteSpace está configurada como "collapse", o que significa que o processador XML removerá todos os caracteres de espaço em branco (quebras de linha, enter, espaços e tabulações serão substituídas por um espaço, os espaços no início e no final serão removidos e os espaços 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 limitar o comprimento do valor do elemento, devemos usar as restrições length, maxLength e minLength.
Este exemplo define um elemento chamado "password" com uma restrição e exata. Seu valor deve ser exatamente 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 chamado "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 a exata quantidade de caracteres permitidos ou itens da lista. Deve ser maior ou igual a 0. |
maxExclusive | Define o limite superior do valor numérico. Os valores permitidos devem ser menores que esse valor. |
maxInclusive | Definir o limite superior do número. Os valores permitidos devem ser menores ou iguais a este valor. |
maxLength | Definir o número máximo de caracteres ou itens da lista permitidos. Deve ser maior ou igual a 0. |
minExclusive | Definir o limite inferior do número. Os valores permitidos devem ser maiores que este valor. |
minInclusive | Definir o limite inferior do número. Os valores permitidos devem ser maiores ou iguais a este valor. |
minLength | Definir o número mínimo de caracteres ou itens da lista 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 dos caracteres em branco (quebra de linha, Enter, espaço e tabulação). |
- Página Anterior Atributos do XSD
- Próxima Página Elementos do XSD