um exemplo XSD
Este capítulo irá demonstrar como escrever um esquema XML. Você também vai aprender que um esquema pode ser escrito de maneiras diferentes.
um documento XML
vamos dar uma olhada neste documento XML chamado ” shiporder.xml”:
Criar um Esquema XML
Agora nós queremos criar um esquema para o documento XML acima.
começamos por abrir um novo arquivo que chamaremos de ” shiporder.xsd”. Para criar o esquema, poderíamos simplesmente seguir a estrutura no documento XML e definir cada elemento à medida que o encontramos. Vamos começar com a declaração XML padrão seguido pelo elemento XS: schema que define um esquema:
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
…
< / xs:esquema>
No esquema acima nós usamos o namespace padrão (xs), e o URI associados a este espaço de nomes é o Esquema de definição de linguagem, que tem o valor padrão de http://www.w3.org/2001/XMLSchema.
A seguir, temos que definir o elemento “shiporder”. Este elemento tem um atributo e contém outros elementos, por isso o consideramos um tipo complexo. Os elementos filhos do elemento” shiporder “estão rodeados por um elemento xs:sequência que define uma sequência ordenada de subelementos:
<xs:complexType>
<xs:sequence>
…
</xs:sequence>
</xs:complexType>
</xs:element>
Then we have to define the “orderperson” element as a simple type (because it does not contain any attributes or other elements). The type (xs:seqüência de caracteres) é prefixado com o prefixo do espaço de nomes associado com o Esquema XML que indica um determinado esquema de tipo de dados:
Seguinte, temos que definir dois elementos que são do tipo complexo: “shipto” e “item”. Começamos por definir o elemento “shipto”:
com esquemas podemos definir o número de ocorrências possíveis para um elemento com os atributos maxOccurs e minOccurs. maxOccurs especifica o número máximo de Ocorrências para um elemento e minOccurs especifica o número mínimo de Ocorrências para um elemento. O valor padrão para maxOccurs e minOccurs é 1!
Agora podemos definir o elemento “item”. Este elemento pode aparecer várias vezes dentro de um elemento” shiporder”. Isto é especificado definindo o atributo maxOccurs do elemento” item “para” não limitado “o que significa que pode haver tantas ocorrências do elemento” item ” como o autor deseja. Observe que o elemento “nota” é opcional. Nós especificamos isso definindo o atributo minOccurs para zero:
agora podemos declarar o atributo do elemento” shiporder”. Uma vez que este é um atributo obrigatório, especificamos o uso=”obrigatório”.
Nota: As declarações de atributo deve sempre vir por último:
Aqui está a listagem completa do arquivo de esquema chamado “shiporder.xsd”:
divida o esquema
o método de projeto anterior é muito simples, mas pode ser difícil de ler e manter quando os documentos são complexos.
o método de projeto seguinte é baseado na definição de todos os elementos e atributos em primeiro lugar, e então referindo-se a eles usando o atributo ref.
Aqui está o novo projeto do arquivo schema (“shiporder.xsd”):
usando tipos nomeados
o terceiro método de design define classes ou tipos, que nos permite reutilizar definições de elementos. Isto é feito nomeando os simpleTypes e elementos complexTypes, e então apontar para eles através do atributo type do elemento.
Aqui está o terceiro projeto do arquivo schema (“shiporder.xsd”):
o elemento de restrição indica que o tipo de dados é derivado de um datatype W3C XML Schema namespace. Assim, o seguinte fragmento significa que o valor do elemento ou atributo deve ser um valor de cadeia:
The restriction element is more often used to apply restrictions to elements. Look at the following lines from the schema above:
<xs:restriction base=”xs:string”>
<xs:pattern value=”{6}”/>
</xs:restriction>
</xs:simpleType>
isto indica que o valor do elemento ou atributo deve ser uma cadeia, deve ser exatamente seis caracteres numa linha, e esses caracteres devem ser um número de 0 a 9.