Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Tutorial XSchema, Esquemas de Informática

XML Schema é uma alternativa ao DTD baseada em XML. Um esquema XML descreve a estrutura de um documento XML. A linguagem XML Schema também é chamada de XML Schema Definition (XSD).

Tipologia: Esquemas

2013

Compartilhado em 06/05/2013

lyncon-lima-1
lyncon-lima-1 🇧🇷

4.8

(12)

10 documentos

1 / 24

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
1
Tutorial XML-Schema
Texto original de Maurício M. Maia que tem como base o tutorial do
W3Schools
, disponível em
http://www.w3schools.com/schema/default.asp
Adaptado por Evandro César Freiberger
XML Schema é uma alternativa ao DTD. Neste tutorial, você vai aprender o que é um XML
Schema, como ele substitui o DTD, e como usá-lo em suas aplicações.
Introdução ao XML Schema
XML Schema é uma alternativa ao DTD baseada em XML. Um esquema XML descreve a estrutura de
um documento XML. A linguagem XML Schema também é chamada de XML Schema Definition
(XSD).
O que você já precisa saber
Antes de estudar a Linguagem XML Schema, você deve ter um entendimento básico de XML e
Namespaces XML. Também é válido um entendimento básico de DTD.
Se você deseja estudar estes assuntos primeiro, visite o
tutorial XML
e o
tutorial DTD
.
O que é um XML Schema?
O propósito de um XML Schema é definir os blocos de construção permitidos em um documento XML,
como um DTD.
Um XML Schema:
define elementos que podem aparecer em um documento
define atributos que podem aparecer em um documento
define que elementos são elementos filhos
define a ordem dos elementos filhos
define o número de elementos filhos
define se um elemento é vazio ou pode incluir texto
define tipos de dados para elementos e atributos
define valores padrão e fixos para elementos e atributos
XML Schemas são sucessores das DTDs
Nós acreditamos que logo XML Schemas vão ser usados na maioria das aplicações Web no lugar de
DTDs. Aqui estão algumas razões:
XML Schemas são extensíveis para adições futuras
XML Schemas são mais ricos e úteis que DTDs
XML Schemas são escritos em XML
XML Schemas suportam tipos de dados
XML Schemas suportam namespaces
XML Schema é uma Recomendação do W3C
XML Schema foi originalmente proposto pela Microsoft, mas se tornou uma recomendação oficial do
W3C em Maio de 2001. A especificação está estável e foi revisada pelos membros do W3C. Para uma
visão geral das atividades e status do W3C,
visite o tutorial W3C
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Pré-visualização parcial do texto

Baixe Tutorial XSchema e outras Esquemas em PDF para Informática, somente na Docsity!

Tutorial XML-Schema

Texto original de Maurício M. Maia que tem como base o tutorial do W3Schools, disponível em http://www.w3schools.com/schema/default.asp Adaptado por Evandro César Freiberger

XML Schema é uma alternativa ao DTD. Neste tutorial, você vai aprender o que é um XML Schema, como ele substitui o DTD, e como usá-lo em suas aplicações.

Introdução ao XML Schema

XML Schema é uma alternativa ao DTD baseada em XML. Um esquema XML descreve a estrutura de um documento XML. A linguagem XML Schema também é chamada de XML Schema Definition (XSD).

O que você já precisa saber

Antes de estudar a Linguagem XML Schema, você deve ter um entendimento básico de XML e Namespaces XML. Também é válido um entendimento básico de DTD.

Se você deseja estudar estes assuntos primeiro, visite o tutorial XML e o tutorial DTD.

O que é um XML Schema?

O propósito de um XML Schema é definir os blocos de construção permitidos em um documento XML, como um DTD.

Um XML Schema:

  • define elementos que podem aparecer em um documento
  • define atributos que podem aparecer em um documento
  • define que elementos são elementos filhos
  • define a ordem dos elementos filhos
  • define o número de elementos filhos
  • define se um elemento é vazio ou pode incluir texto
  • define tipos de dados para elementos e atributos
  • define valores padrão e fixos para elementos e atributos

XML Schemas são sucessores das DTDs

Nós acreditamos que logo XML Schemas vão ser usados na maioria das aplicações Web no lugar de DTDs. Aqui estão algumas razões:

  • XML Schemas são extensíveis para adições futuras
  • XML Schemas são mais ricos e úteis que DTDs
  • XML Schemas são escritos em XML
  • XML Schemas suportam tipos de dados
  • XML Schemas suportam namespaces

XML Schema é uma Recomendação do W3C

XML Schema foi originalmente proposto pela Microsoft, mas se tornou uma recomendação oficial do W3C em Maio de 2001. A especificação está estável e foi revisada pelos membros do W3C. Para uma visão geral das atividades e status do W3C, visite o tutorial W3C

XML Schemas - Por que?

Há muitas razões para XML Schema ser melhor que DTD.

XML Schema tem suporte a tipos de dados

Uma das grandes vantagens de XML Schemas é o suporte a tipos de dados:

  • É mais fácil descrever conteúdo de documentos permissíveis
  • É mais fácil validar os dados
  • É mais fácil trabalhar com dados de um banco de dados
  • É mais fácil definir restrições aos dados
  • É mais fácil definir padrões/formatos de dados
  • É mais fácil converter dados entre diferentes tipos

XML Schemas usa sintaxe XML

Outra grande força do XML Schema é ser escrito em XML.

Por isso:

  • Você não tem que aprender outra linguagem
  • Você pode usar seu editor XML para editar seus arquivos XML Schema
  • Você pode usar seu parser XML para verificar seus arquivos XML Schema
  • Você pode manipular seu XML Schema com XML DOM
  • Você pode usar seu XML Schema com XSLT

Comunicação segura de dados com XML Schemas

Quando um dado é enviado de um ponto para outro é essencial que as duas parte tem a mesma expectativa sobre o conteúdo.

Com XML Schemas, o remetente pode descrever o dado de forma que o receptor vá entender.

Uma data como "03-11-2004" vai, em alguns países, ser interpretada como 3 de Novembro e em outros com 11 de Março, mas um elemento XML com um tipo de dado como esse:

2004-03-11

assegura um entendimento mútuo do conteúdo porque o tipo de dado XML requer o formato YYYY- MM-DD.

XML Schemas são extensíveis

XML Schemas são extensíveis, assim como XML, porque eles são escritos em XML.

Com uma definição extensível você pode:

  • Reutilizar seu Schema em outros Schemas;
  • Criar seus próprios tipos de dados derivados dos tipos padrões;
  • Referenciar múltiplos esquemas em um mesmo documento.

Um XML Schema simples

Este é um arquivo XML Schema chamado "nota.xsd" que define os elementos do documento XML acima ("nota.xml"):

O elemento nota é dito um tipo complexo porque contém outros elementos. Os outros elementos são ditos tipos simples porque não contém outros elementos. Você vai aprender mais sobre tipos simples e complexo nos próximos capítulos.

Uma referência para um DTD

Este documento XML tem uma referência para um DTD:

Uma referência a um XML Schema

Este documento contém uma referência a um XML Schema:

O elemento

O elemento é o elemento raiz de todo XML Schema:

... ...

O elemento pode conter alguns atributos. Uma declaração de Schema geralmente parece com isto:

... ...

O seguinte fragmento:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

indica que os elementos e tipos de dados usados no esquema (schema, element, complexType, sequence, string, boolean, etc.) vêm do namespace "http://www.w3.org/2001/XMLSchema". Ele também especifica que os elementos e tipos de dados que vêm de "http://www.w3.org/2001/XMLSchema" devem ser prefixados com xs: !!

Este fragmento:

targetNamespace="http://www.w3schools.com"

indica que os elementos definidos por este esquema (nota, para, de, cabecalho, texto) são do namespace "http://www.w3schools.com".

Este fragmento:

xmlns="http://www.w3schools.com"

indica que o namespace padrão é "http://www.w3schools.com".

Este fragmento:

elementFormDefault="qualified">

indica que todo elemento usado por uma instância de documento XML que foi declarado neste esquema deve ser qualificado pelo namespace.

E aqui as definições correspondentes:

<xs:element name="sobrenome" type"xs:string"/> <xs:element name="sexo" type="xs:string"/> <xs:element name="datanascimento" 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ões 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

Os atributos são declarados como tipos simples. Apenas elementos complexos possuem 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:

<produto codigo="12345”> Sabão em pedra

E aqui a definição correspondente do atributo:

<xs:attribute name="codigo" type="xs:integer"/>

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ões OU fixos especificados.

Um valor padrão é atribuído automaticamente ao atributo quando nenhum outro valor é especificado. No exemplo seguinte, o valor padrão é "00001":

<xs:attribute name="codigo" type="xs:integer" default="00001">

Um valor fixo é atribuído automaticamente ao atributo. Você não pode especificar outro valor. No exemplo seguinte, o valor fixo é "1":

<xs:attribute name="tipo" type="xs:integer" fixed="1"/>

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="codigo" type="xs:integer" use="optional"/>

Para fazer um atributo obrigatório:

<xs:atrribute name="codigo" type="xs:integer" use="required"/>

O exemplo acima também poderia ser escrito assim:

<xs:element name="carro" type="tipoCarro"/>

<xs:simpleType name="tipoCarro"> <xs:restriction base="xs:string"> <xs:enumeration value="Palio"/> <xs:enumeration value="Gol"/> <xs:enumeration value="Fiesta"/> </xs:restriction> <xs:simpleType>

Nota: Neste caso o tipo "tipoCarro" pode ser usado por outros elementos, porque ele não é parte do elemento "carro".

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 "letra":

<xs:element name="letra"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>

O elemento "letra" é 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 "iniciais":

<xs:element name="iniciais"> <xs:simpleType> <xs: restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> <xs:restriction> </xs:simpleType> <xs:element>

O elemento "iniciais" é 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 "iniciais":

<xs:element name="iniciais">

<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 "iniciais" é 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 "escolha":

<xs:element name="escolha">

<xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType>

</xs:element>

O elemento "escolha" é 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 "idProduto":

<xs:element name="idProduto">

<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 "idProduto" é 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.

<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 uma restrição. Deve haver exatamente oito caracteres e estes caracteres devem ser letras minúsculas ou maiúsculas de a até z, 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 "endereco":

<xs:element name="endereco">

<xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> <xs:restriction> </xs:simpleType>

</xs:element>

O elemento "endereco" é um tipo simples com uma restrição. A restrição whiteSpace é definida como "preserve", que significa que o processador XML não vai remover nenhum caractere vazio.

Este exemplo também define um elemento chamado "endereco":

<xs:element name="endereco">

<xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType>

</xs:element>

Este elemento "endereco" é um tipo simples com uma 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 "endereco":

<xs:element name="endereco">

<xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType>

</xs:element>

Este elemento "endereco" é 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

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 oumaior 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 queeste valor)

maxInclusive Especifica o valor máximo para valores numéricos (o valor deve ser menor ouigual 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 queeste valor)

minInclusive Especifica o valor mínimo para valores numéricos (o valor deve ser maior ouigual a este valor)

minLength Especifica o número mínimo de caracteres ou itens permitidos. Deve ser igualou 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ãotratados

Elementos XSD complexos

Um elemento complexo é um elemento XML que contém outros elementos e/ou atributos.

Há quatro tipos de elementos complexos:

  • elementos vazios
  • elementos que contém apenas outros elementos
  • elementos que contém apenas texto
  • elementos que contém tanto outros elementos quanto texto

Nota: Cada um desses tipos de elementos pode conter atributos também!

Exemplos de elementos XML complexos

Um elemento XML complexo, "produto", que é vazio:

Um elemento XML complexo, "empregado", que contém apenas outros elementos:

Fulano Quantas

Um elemento XML complexo, "produto", que contém atributo e texto:

Sabão Barras

Um elemento XML complexo, "mensagem", que contém outros elementos e texto:

Texto da mensagem 03/03/2008

Como definir um elemento complexo

<xs:element name="empregado" type="tipoPessoa"/> <xs:element name="estudante" type="tipoPessoa"/> <xs:element name="cliente" type="tipoPessoa"/>

<xs:complexType name="tipoPessoa"> <xs:sequence> <xs:element name="primeiroNome" type="xs:string"/> <xs:element name="ultimoNome" type="xs:string/"> </xs:sequence> </xs:complexType>

Você também pode basear um elemento do tipo complexo em um tipo complexo existente e adicionar alguns elementos, assim:

<xs:element name="empregado" type="tipoPessoaCompleto"/>

<xs:complexType name="tipoPessoa"> <xs:sequence> <xs:element name="primeiroNome" type="xs:string"/> <xs:element name="ultimoNome" type="xs:string/"> </xs:sequence> </xs:complexType>

<xs:complexType name="tipoPessoaCompleto"> <xs:complexContent> <xs:extension base="tipoPessoa"> <xs:sequence> <xs:element name="endereco" type="xs:string"/> <xs:element name="cidade" type="xs:string"/> <xs:element name="estado" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> <xs:complexType>

Elementos complexos vazios

Um elemento complexo vazio pode conter atributos; mas não pode ter nenhum conteúdo entre as tags de abertura e fechamento.

Um elemento XML vazio:

O elemento "produto" acima não tem conteúdo. Para definir um tipo sem conteúdo, nós devemos definir um tipo que permita apenas elementos em seu conteúdo, mas nós não declaramos nenhum elemento realmente, assim:

<xs:element name="produto"> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:integer"> <xs:attribute name="codigo" type="xs:positiveInteger"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element>

No exemplo acima, nós definimos um complexType contendo um complexContent, e apenas elementos. O elemento complexContent diz que queremos restringir ou estender o modelo de conteúdo de um tipo complexo, e a restrição de inteiros declara um atributo mas não cria nenhum elemento.

Entretanto, é possível declarar o elemento produto de forma mais compacta, assim:

<xs:element name="produto"> <xs:complexType> <xs:attribute name="codigo" type="xs:positiveInteger"/> </xs:complexType> </xs:element>

Ou você pode dar um nome ao complexType, e fazer o elemento "produto" ter um tipo que faz referência ao nome do complexType (se você usar este método, vários elementos podem referenciar o mesmo tipo complexo):

<xs:element name="produto" type="tipoProduto"/>

<xs:complexType name="tipoProduto"> <xs:atrribute name="codigo" type="xs:positiveInteger"/> </xs:complexType>

Tipos complexos apenas elementos