Elementos XSD Simples
XML Schemas define os elementos de um arquivo XML.Um elemento simples é um elemento XML que contém apenas texto. Ele não pode conter outros elementos ou atributos.
O que é um elemento simples
Um elemento simples é um elemento XML que contém apenas texto. Ele não pode conter outros elementos ou atributos.Entretanto, a restrição "apenas texto" é pouco clara. O texto pode ser de diferentes tipos. Pode ser um dos tipos inclusos na definição de XML Schema (boolean, string, date, etc.), ou um tipo personalizado que você mesmo pode definir.
Como definir um elemento simples
A sintaxe para definir um elemento simples é:<xs:element name="xxx" type="yyy"/>onde xxx é o nome do elemento e yyy é o tipo de dado do elemento.
Aqui está alguns elementos XML:
<lastname>Refsnes</lastname> <age>34</age> <dateborn>1968-03-27</dateborn>E aqui as definições correspondentes:
<xs:element name="lastname" type"xs:string"/> <xs:element name="age" type="xs:integer"/> <xs:element name="dateborn" type="xs:date"/>
Tipos de dados XML Schema comuns
XML Schema tem vários tipos de dados próprios. Aqui está uma lista dos mais comuns:- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
Declare valores padrão e fixos para elementos simples
Elementos simples podem ter um conjunto de valores padrão OU um fixos.Um valor padrão é automaticamente atribuído ao elemento quando nenhum outro valor é especificado. No exemplo seguinte, o valor padrão é "red":
<xs:element name="color" type="xs:string" default="red"/>Um valor fixo também é atribuído automaticamente ao elemento. Você não pode especificar outro valor. No exemplo a seguir, o valor fixo é "red":
<xs:element name="color" type="xs:string" fixed="red"/>
Atributos XSD
Todos atributos são declarados como tipos simples.Apenas elementos complexos tem atributos!
O que é um atributo?
Elementos simples não podem ter atributos. Se um elemento tem atributos, ele é considerado do tipo complexo. Mas atributos são declarados como tipos simples. Isso significa que um elemento com atributos sempre tem uma definição do tipo complexo.Como definir um atributo
A sintaxe para definir um atributo é:<xs:attribute name="xxx" type="yyy"/>onde xxx é o nome do atributo e yyy é o tipo de dado do atributo.
Aqui está um elemento XML com um atributo:
<lastname lang="EN>Smith</lastname>E aqui a definição correspondente do atributo:
<xs:attribute name="lang" type="xs:string"/>
Tipos de dados comuns do XML Schema
XML Schema tem vários tipos de dados próprios. Aqui está uma lista dos mais comuns:- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
Declare valores padrão e fixo para atributos
Atributos podem ter valores padrão OU fixo especificados.Um valor padrão é atribuído automaticamente ao atributo quando nenhum outro valor é especificado. No exemplo seguinte, o valor padrão é "EN":
<xs:attribute name="lang" type="xs:string" default="EN">Um valor fixo é atribuído automaticamente ao atributo. Você não pode especificar outro valor. No exemplo seguinte, o valor fixo é "EN":
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Criando atributos opcionais e obrigatórios
Todos atributos são opcionais por padrão. Para especificar explicitamente que um atributo é opcional, utilize o atributo "use":<xs:attribute name="lang" type="xs:string" use="optional"/>Para fazer um atributo obrigatório:
<xs:atrribute name="lang" type="xs:string" use="required"/>
Restrições de conteúdo
Quando um elemento ou um atributo XML tem um tipo definido, isto cria uma restrição ao conteúdo dele. Se um elemento XML é do tipo "xs:date" e contém um string como "Hello Mother", o elemento não vai ser validado.Mas, há mais... com XML Schemas, você pode adicionar suas próprias restrições aos seus elementos e atributos XML. Estas restrições são chamadas facets. Você pode ler mais sobre facets no próximo capítulo.
Restrições/facets XSD
Restrições são usadas para controlar os valores aceitos para elementos e atributos XML. Restrições em elementos XML são chamados facets.Restrições em valores
Este exemplo define um elemento chamado "age" com um restrição. O valor de age não pode ser menor que 0 ou maior que 100:<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element>
Restrições em conjuntos de valores
Para limitar o conteúdo de um elemento XML em um conjunto de valores aceitáveis, nós podemos usar restrições enumeradas.Este exemplo define um elemento chamado "car":
<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 elemento "carro" é um tipo simples com restrição. Os valores aceitáveis são: Audi, Golf, BMW.
O exemplo acima também poderia ser 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>Nota: Neste caso o tipo "carType" pode ser usado por outros elementos, porque ele não é parte do elemento "car".
Restrições em séries de valores
Para limitar o conteúdo de um elemento XML em uma série de números ou letras, podemos utilizar a restrição de padrão.Este exemplo define o elemento chamado "letter":
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>O elemento "letter" é do tipo simples com uma restrição. O único valor aceitável é UMA das letras MINÚSCULAS de a até z.
O próximo exemplo define um elemento chamado "initials":
<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 elemento "initials" é simples com um restrição. O único valor aceitável são TRÊS letras MAiÚSCULAS de a até z.
Este exemplo também define um elemento chamado "initials":
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:patter value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> <xs:simpleType> <xs:element>O elemento "initials" é do tipo simples com restrição. O único valor aceitável são TRÊS letras MINÚSCULAS ou MAIÚSCULAS de a até z.
Este exemplo define um elemento chamado "choice":
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>O elemento "choice" é um tipo simples com restrição. O único valor aceitável é UMA das seguintes letras: x, y, OU z.
O próximo exemplo define um elemento chamado "prodid":
<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:patter value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>O elemento "prodid" é um tipo simples com restrição. O único valor aceitável são CINCO dígitos em seqüência, e cada dígito deve estar entre 0 e 9.
Outras restrições em séries de valores
Algumas outras restrições que podem ser definidas por restrição de padrão:Este exemplo define um elemento chamado "letter":
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>O elemento "letter" é um tipo simples com restrição. O valor aceitável é zero ou mais ocorrências de letras minúsculas de a até z.
Este exemplo também define um elemento chamado "letter":
<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 elemento "letter" é um tipo simples com um restrição. O valor aceitável é uma ou mais ocorrências de um letra minúscula seguida de uma letra maiúscula de a até z.
Este exemplo define um elemento chamado "gender":
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>O elemento "gender" é um tipo simples com uma restrição. O único valor aceitável é male OU female.
Este exemplo define um elemento chamado "password":
<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>O elemento "password" é um tipo simples com um restrição. Deve haver exatamente oito caracteres e estes caracteres devem ser letras minúsculas ou maiúsculas de a até x, ou um número de 0 a 9.
Restrições em caracteres vazios
Para especificar como um caractere vazio deve ser tratado, devemos usar a restrição whiteSpace.Este exemplo define um elemento chamado "adderess":
<xs:element name="adress"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> <xs:restriction> </xs:simpleType> </xs:element>O elemento "adress" é um tipo simples com um restrição. A restrição whiteSpace é definida como "preserve", qu significa que o processador XML NÂO VAI remover nenhum caractere vazio.
Este exemplo também define um elemento chamado "address":
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>Este elemento "address" é um tipo simples com um restrição. A restrição whiteSpace é definida como "replace", que significa que o processador XML VAI SUBSTITUIR todos caracteres vazios (quebras de linha, tabs, espaços) com espaços.
Este exemplo também define um elemento chamado "address":
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>Este elemento "address" é um tipo simples com uma restrição. A restrição whiteSpace é definida como "collapse", que significa que o processador XML VAI REMOVER todos caracteres vazios (quebras de linha, tabs, espaços são substituídos com espaços, espaços iniciais e finais são removidos, espaços múltiplos são reduzidos a um).
Restrições de comprimento
Para limitar o comprimento de um elemento, nós usamos as restrições de comprimento, maxLength e minLength.Este exemplo define um elemento chamado "password":
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>O elemento "password" é um tipo simples com uma restrição. O valor deve ter exatamente oito caracteres.
Este exemplo define outro elemento chamado "password":
<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>Este elemento "password" é um tipo simples com uma restrição. O valor deve ter no mínimo cinco e no máximo oito caracteres.
Restrições para tipos de dados
Restrição | Descrição |
---|---|
enumeration | Define uma lista de valores válidos |
fractionDigits | Especifica o número máximo casas decimais permitidas. Deve ser igual ou maior que zero |
length | Especifica o número exato de caracteres ou itens permitidos. Deve ser igual ou maior que zero |
maxExclusive | Especifica o valor máximo para valores numéricos (o valor deve ser menor que este valor) |
maxInclusive | Especifica o valor máximo para valores numéricos (o valor deve ser menor ou igual a este valor) |
maxLength | Especifica o número máximo de caracteres ou itens permitidos. Deve ser igual ou maior que zero |
minExclusive | Especifica o valor mínimo para valores numéricos (o valor deve ser maior que este valor) |
minInclusive | Especifica o valor mínimo para valores numéricos (o valor deve ser maior ou igual a este valor) |
minLength | Especifica o número mínimo de caracteres ou itens permitidos. Deve ser igual ou maior que zero |
pattern | Define a seqÜência exata de caracteres permitidos |
totalDigits | Especifica o número exato de digitos permitidos. Deve ser maior que zero |
whiteSpace | Especifica como caracteres vazios (tabs, espaços e retornos de carro) são tratados |
Nenhum comentário:
Postar um comentário