tutoriais mais recente desenvolvimento web
 

Restrições XSD / Facetas


Restrições são usadas para definir valores aceitáveis ​​para elementos XML ou atributos. Restrições sobre elementos XML são chamados facetas.


Restrições sobre valores

O exemplo a seguir define um elemento chamado "age" com uma restrição. O valor de idade não pode ser menor do que 0 ou maior do que 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ções sobre um conjunto de valores

Para limitar o conteúdo de um elemento XML para um conjunto de valores aceitáveis, usaríamos a restrição enumeração.

O exemplo a seguir define um elemento chamado "car" com uma restrição. Os únicos valores aceitáveis são: 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 poderia ter sido escrito assim:

<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>

Note: Neste caso, o tipo de "carType" pode ser utilizada por outros elementos, porque não é uma parte do "car" elemento.


Restrições sobre uma série de valores

Para limitar o conteúdo de um elemento XML para definir uma série de números ou letras, que podem ser usados, que se utilize o padrão de restrição.

O exemplo a seguir define um elemento chamado "letter" com uma restrição. O único valor aceitável é UMA das letras minúsculas 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 próximo exemplo define um elemento chamado "initials" com uma restrição. O único valor aceitável é TRÊS das letras MAIÚSCULAS de A 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 chamado "initials" com uma restrição. O único valor aceitável é TRÊS das minúsculas ou maiúsculas letras de A 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 chamado "choice" com uma restrição. O único valor aceitável é uma das seguintes 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 chamado "prodid" com uma restrição. O único valor aceitável é cinco dígitos numa sequência, e cada dígito deve estar numa gama 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 de uma série de valores

O exemplo a seguir define um elemento chamado "letter" com uma restrição. O valor aceitável é zero ou mais ocorrências de letras minúsculas 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 próximo exemplo também define um elemento chamado "letter" com uma restrição. O valor aceitável é um ou mais pares de letras, cada par constituído por uma letra minúscula seguido por uma letra maiúscula. Por exemplo, "sToP" será validado por esse padrão, mas não "Stop" ou "STOP" ou "stop" :

<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 próximo exemplo define um elemento chamado "gender" com uma restrição. O único valor aceitável é masculino ou feminino:

<xs:element name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="male|female"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

O próximo exemplo define um elemento chamado "password" com uma restrição. Deve haver exatamente oito caracteres em uma linha e esses caracteres devem ser letras minúsculas ou maiúsculas de A a Z, ou um número de 0 a 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ções sobre caracteres espaços em branco

Para especificar como os caracteres espaços em branco devem ser manuseados, usaríamos a restrição de espaço em branco.

Este exemplo define um elemento chamado "address" com uma restrição. A restrição whiteSpace está definido para "preserve" , o que significa que o processador XML não remove quaisquer caracteres 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. A restrição whiteSpace está definido para "replace" , o que significa que o processador XML substituirá todos os caracteres brancos espaciais (avanços de linha, tabulações, espaços e retornos de carro) com espaços:

<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. A restrição de espaço em branco é definida como "collapse" , o que significa que o processador XML irá remover todos os espaços em branco (avanços de linha, tabulações, espaços, retornos de carro são substituídas por espaços, espaços à esquerda e à direita são removidos, e vários espaços sã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ções quanto ao comprimento

Para limitar o comprimento de um valor em um elemento, que usaria o comprimento, maxLength e restrições minLength.

Este exemplo define um elemento chamado "password" com uma restrição. O valor deve ser exatamente oito caracteres:

<xs:element name="password">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:length value="8"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Este exemplo define um outro elemento chamado "password" com uma restrição. O valor deve ser de no mínimo cinco caracteres e um máximo de oito 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ções para Datatypes

Limitação Descrição
enumeration Define uma lista de valores aceitáveis
fractionDigits Especifica o número máximo de casas decimais permitidas. Deve ser igual ou maior que zero
length Especifica o número exato de caracteres ou lista de itens permitidos. Deve ser igual ou maior que zero
maxExclusive Especifica os limites superiores para valores numéricos (o valor deve ser inferior a este valor)
maxInclusive Especifica os limites superiores para valores numéricos (o valor deve ser menor ou igual a esse valor)
maxLength Especifica o número máximo de caracteres ou lista de itens permitidos. Deve ser igual ou maior que zero
minExclusive Especifica os limites inferiores para valores numéricos (o valor deve ser superior a este valor)
minInclusive Especifica os limites inferiores para valores numéricos (o valor deve ser maior do que ou igual a este valor)
minLength Especifica o número mínimo de caracteres ou lista de itens permitidos. Deve ser igual ou maior que zero
pattern Define a seqüência exata de caracteres que são aceitáveis
totalDigits Especifica o número exacto de dígitos desejados. Deve ser maior que zero
whiteSpace Especifica como o espaço em branco (linha feeds, tabs, espaços e retornos de carro) é manuseado