<?
X
M
L
?>
XML
Profa. Éverlin Fighera Costa Marques
Programa
“Conhecendo padrões abertos de
interoperabilidade”
<?
X
M
L
?>
<
?
X
M
L
?
>
Conteúdo
z
Histórico de XML
z
XML e opções
z
Objetivos
z
Estratégias
z
Construção de arquivos XML
z
GML
<
?
X
M
L
?
>
<
?
X
M
L
?
>
O que é XML?
z
eXtensive Markup Language
z
linguagem de marcação
z
padrão de representação de dados
z
z
gerenciada pelo W3C
(World Wide Web Consortium)
prover necessidades de comunicação
entre sistemas
fornecendo uma identificação flexível
para todo tipo de informação
<
?
X
M
L
?
>
<
?
X
M
L
?
>
Características
z
Foco no documento
z
Distinção formato X informação
z
Descrição detalhada de um documento
(estrutura)
z
Independência de processador
z
Transmitir, exportar e manipular dados
<
?
X
M
L
?
>
<
?
X
M
L
?
>
Necessidades de
intercâmbio entre sistemas
Desafio nº 1
“Troca de documentos independentemente
dos formatos existentes.”
‘
Necessidade de linguagem de marcação
genérica com
‘ conjunto universal de instruções
‘ estrutura extensível para funcionar
em várias plataformas diferentes
Interoperabilidade !!!
<
?
X
M
L
?
>
<
?
X
M
L
?
>
Histórico
z
z
z
z
Precursores
•GML (Generalized Markup Language)
•SGML (Standard Generalized Markup Language)
Criação de documentos independentes de
sistemas e dos programas usados.
Trocar informações entre usuários em diferentes
sistemas e plataformas sem nenhuma alteração
necessária
SGML: muitas especificações.
<
?
X
M
L
?
>
<
?
X
M
L
?
>
Histórico
Desafio nº 2
“Elaborar uma forma de validação de
documentos mais simples que o SGML !!!”
<
?
X
M
L
?
>
<
?
X
M
L
?
>
Metas de XML
z
Mais simples que SGML
z
Criado para Internet
z
Rapidez de criação de documentos XML
z
z
Fácil construção de interpretadores para
documentos XML
Documento XML é compreensível ao
humano
z
Projeto de XML deve ser formal e conciso
z
Projetado para Internet
z
[1]
Suporte à variedade de aplicações
<
?
X
M
L
?
>
<
?
X
M
L
Objetivos do XML
‘
‘
Atender mudanças de publicações
eletrônicas em grande escala.
Regra de exportação de dados Web/
outros :
‘ Trocas de dados em meio eletrônico
‘
?
>
‘
Armazenamento/organização de
documentos
Descrição de informações de aplicação
(metadados)
<
?
X
M
L
?
>
XML
<
?
X
M
L
?
>
HTML
XML
/ HTML
<h1>Fulano de Tal</h1>
<h2>[email protected]</h2>
<p>
<b>47</b>
<i>431234567</i>
</p>
<nome>Fulano de Tal</nome>
<email>[email protected]</email
>
<telefone>
<ddd>47</ddd>
<numero>431234567</numero>
</telefone>
<
?
X
M
L
?
>
XML
<
?
X
M
L
?
>
z
z
/ HTML
Melhor controle em relação ao layout
Menor esforço do servidor Web para
acessar informações do lado do cliente
z
Uso de vários tipos de links
z
Publicação de qualquer tipo de informação
z
Facilidade para exibir páginas longas
<
?
X
M
L
?
>
Objetivos do XML
<
?
Dados armazenados em XML podem ser
facilmente transformados em outros
formatos!
<
?
X
M
L
X
M
L
?
>
?
>
<
?
X
M
L
?
>
<
?
XML
XML e e-ping
X
M
L
?
>
<
?
X
M
L
?
>
XML e e-ping
• e-PING
• Padrões de Interoperabilidade de
Governo Eletrônico
‘Iniciativa do governo federal
‘Gestão Pública define como diretriz
...
“considerar o cidadão
como
foco da ação pública”.
<
?
X
M
L
?
>
XML e e-ping
<
?
•
X
M
L
?
>
•
Onde ?
‘ no governo federal
Com quem ?
‘ interação com os demais Poderes e
esferas de governo e com a sociedade
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML e e-ping
‘
‘
O que é?
‘Arquitetura com conjunto mínimo de:
‘premissas,
‘políticas e
‘especificações técnicas
Qual o objetivo ?
Regulamentar utilização de TI e
Comunicação
<
?
X
M
L
?
>
<
?
X
M
L
Interoperabilidade para que
serve?
‘
‘
‘
?
>
Transferir e utilizar informações de
maneira uniforme e eficiente entre
organizações e sistemas de informações.
Intercâmbio coerente de informações
entre serviços e sistemas.
Dois ou mais sistemas podem interagir e
intercambiar dados de acordo com um
método definido.
Interoperabilidade é a soma
desses fatores.
<
?
X
M
L
?
>
Interoperabilidade
<
?
X
M
L
?
>
• Levar em conta a existência de:
‘sistemas
legados,
‘plataformas
de Hardware e
‘plataformas
de software instaladas.
<
?
X
M
L
?
>
<
?
X
M
L
XML e e-ping
As áreas cobertas pela e-PING:
z Interconexão;
z
Segurança;
z
Meios de Acesso;
z
?
>
z
Organização e Intercâmbio de
Informações;
Áreas de Integração para Governo
Eletrônico
<
?
X
M
L
?
>
<
?
X
M
L
Organização e Intercâmbio de
informações
Políticas técnicas
• Intercâmbio de dados
z Uso de XML e
z esquemas XML
z
Transformação de dados
z
?
>
z
Uso de XSL
Modelagem de dados para intercâmbio
z
UML
<
?
X
M
L
?
>
<
?
Organização e Intercâmbio de
informações
E-PING : sobre XML e middleware
• Nem todos sistemas necessitam ter
capacidade de se comunicar diretamente
em XML.
X
M
L
• Intercâmbio indireto
• Intercâmbio direto
?
>
X
M
L Logo é possível
?
>
<
?
<
?
Intercâmbio direto
•
Caso 1: apenas middlewares se comunicam
X
M
L
X
M
L
‘
?
>
<
?
‘
XML pode ser usado em sistemas
incompatíveis
Aplicativos podem conversar “XML”
?
>
<
?
Organização e Intercâmbio de
informações
•
Caso 2: middleware se comunica com
outro sistema
X
M
L
?
>
<
?
X
M
L
‘
Compartilhar arquivo
sistemas/plataformas diferentes
?
>
<
?
X
M
L
?
>
Organização e Intercâmbio de
informações
Intercâmbio direto
‘
Estrutura com suporte a XML não é
obrigatório
(é desejável)
<
?
X
M
L
?
>
<
?
X
M
L
?
>
<
?
XML
Construção de documentos XML
X
M
L
?
>
Formação de arquivos XML
<
?
X
M
L
?
>
–
Criar um documento com linguagem de
marcação:
– conteúdo (dado) + marcas (estrutura)
<cadastro>
<nome> José da Silva </nome>
<fone> 3027-1400</fone>
<empresa>X-GAMES S.A.</empresa>
<cargo> DESENVOLVEDOR</cargo>
<endereco>
<rua> XV de novembro</rua>
<num> 2400 </num>
<compl> Perto do Centro
</compl>
<bairro> Centro</bairro>
<cidade> Joinville</cidade>
<estado> SC</estado>
<cep> 89000-120</cep>
</endereco>
</cadastro>
documento com marcas
<
?
X
M
L
?
>
<
?
Formação de arquivos XML
XML VÁLIDOS
X
M
L
?
>
z
se obedecer todas as regras do
esquema
<
?
X
M
L
?
>
<
?
X
M
L
?
>
Formação de arquivos XML
‘
Instância de XML
•não tem definições de suas próprias
marcas
•obedece definição
<nome>Jose da Silva<\nome>
tag-inicial
conteúdo
do elemento
tag-final
<
?
X
M
L
?
>
<
?
Formação de arquivos XML
z
z
X
M
L
?
>
z
z
z
z
Semelhança com XML porém
há regras a seguir
Há um elemento nó raiz
Cada elemento “abre-tag” e “fecha-tag”
Os elementos aninhados
Atributo começa com letra ou “_”
Nome de atributo aparece 1X na tag
Regras sintáticas
Documento bem formado
<
?
X
M
L
?
>
<
?
X
M
L
?
>
Formação de arquivos XML
•
<cadastro>
<nome> José da Silva </nome>
<fone> 3027-1400</fone>
<empresa> X GAMES
S.A.</empresa>
<cargo>
DESENVOLVEDOR</cargo>
<endereco>
<rua> XV de novembro</rua>
<num> 2400 </num>
<compl> Perto do Centro
</compl>
<bairro> Centro</bairro>
<cidade> Joinville
</cidade>
<estado> SC</estado>
<cep> 89000-120</cep>
</endereco>
Um documento XML possui
•
Árvore XML (nó, raiz);
•
Prólogo;
•
Instrução de processamento;
•
Comentários;
•
Referência a entidades;
•
Seções CDATA;
•
Elementos e atributos;
</cadastro>
•
Definição de tipos de
documentos.
<
?
X
M
L
?
>
<
?
X
M
L
?
>
Analisador sintático
z
z
Classificados
• Validadores
• Não validadores
Ler Esquema de cruzar com documento
dados
• Bem–formado
• obedece regras de XML
• Válido
• obedece definição
<
?
X
M
L
?
>
Formação de arquivos XML
<
?
X
M
L
<?xml version="1.0" encoding="iso8859-1" ?>
<!DOCTYPE cadastro
"cadastro.dtd" >
z
Definições (Prólogo)
z
declara as propriedades do
documento informando ao
SYSTEM
[
//ENTIDADES //ELEMENTOS
//ATRIBUTOS
] >
processador XML o necessário <cadastro>.......<\cadastro>
para um parser XML poder interpretar
z
o DTD descreve o tipo de elemento raiz
z
o identificador SYSTEM especifica o local
<
?
X
M
L
da DTD ( ex. um site)
?
>
z
Marca o início do subconjunto interno que
provê um local para declarações especiais
z
Neste conjunto pode haver declaraçoes de entidades
z
O fim de ambos os conjuntos ( ] ) e o do DTD completam o prólogo
?
>
<
?
X
M
L
?
>
Formação de arquivos XML
Regras
•
•
•
Documento completo está contido por um
único “elemento documento” ou “elemento raiz”
Elemento pode
• conter outros documentos
Cada elemento deve
• estar completamente contido em outro
elemento
<endereco>
<rua> Blumenau</rua>
<num> 890 </num>
<bairro>
Centro</bairro>
<cep> 89000120</cep>
<caixa postal> 001
</caixa postal>
</endereco>
certo
<endereco>
<rua> Blumenau</rua>
<num> 890 </e </num>
<bairro>
Centro</bairro>
<cep> 89000-120
<caixapostal>
001 </cep> </caixapostal>
</endereco>
! errado !
<
?
X
M
L
?
>
<
?
X
M
L
?
>
<
?
XML
XML Namespaces
X
M
L
?
>
XML Namespace
<
?
X
M
L
?
>
XML Namespace provê um método
para evitar conflito de nomes de
elementos.
Desde que os nomes de elementos em
XML não são fixados, freqüentemente,
há conflito de nomes quando dois
diferentes documentos usam os
mesmos nomes descrevendo dois
diferentes tipos de elementos
(ilustrar esse caso)
<
?
X
M
L
?
>
XML Namespace
<
?
X
M
L
?
>
z
Exemplo de conflitos de nome
<tabela>
<frutas>
<fruta>maça</fruta>
<fruta>banana
</fruta>
</frutas>
</tabela>
mesmo nome
<tabela>
.....
</tabela>
<tabela>
<nome>fulano</nome>
<idade>65</idade>
</tabela>
<
?
X
M
L
?
>
XML Namespace
<
?
X
M
L
?
>
z
Resolvendo o problema
<h:tabela>
<h:frutas>
<h:fruta>maça
</h:fruta>
<h:fruta>banana
</h:fruta>
</h:frutas>
</h:tabela>
<f:tabela>
<f:nome>fulano
</f:nome>
<f:idade>65</f:idade>
</f:tabela>
Não há conflitos de nomes:
os dois elementos usam
diferentes nomes para os
elementos<tabela>
(<h:tabela> e <f:tabela>)
Usando o prefixo criado
dois diferentes tipos de
elementos <tabela>
<
?
X
M
L
?
>
Usando Namespace
<
?
X
M
L
?
>
z
Ao invés de usar somente prefixo, foi
adicionado um atributo xmlns ao tag
<tabela> para dar ao elemento prefixo
um nome qualificado associado com
um namespace.
<h:tabela xmlns:h=
“http:www.w3schools.co
m/furniture” >
<h:frutas>
<h:fruta>maça
</h:fruta>
<h:fruta>banana
</h:fruta>
</h:frutas>
</h:tabela>
<f:tabela xmlns:f=
“http:www.w3.org/TR/htm
l4/” >
<f:nome>fulano</f:nome>
<f:idade>65</f:idade>
</f:tabela>
<
?
X
M
L
?
>
Default Namespace
<
?
X
M
L
?
>
• Definindo um default namespace para
nos poupar de usar prefixos em todos
os elementos filhos. Como mostra a
seguinte sintaxe:
<element xmlns="namespace">
<
?
X
M
L
?
>
Default Namespace
<
?
X
M
L
?
>
<tabela xmlns=
“http:www.w3schools.com/furniture”>
<frutas>
<fruta>maça</fruta>
<fruta>banana</fruta>
</frutas>
</tabela>
<tabela xmlns= “http:www.w3.org/TR/html4/”>
<nome>fulano</nome>
<idade>65</idade>
</tabela>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
<
?
XML
Construindo documentos XML
X
M
L
?
>
XML Schema
<
?
X
M
L
?
>
• Alternativa ao DTD baseada em XML
• Descreve estrutura de documento
• XML
• XML Schema definition – XS
• Trata das deficiências da DTD
<
?
X
M
L
?
>
XML Schema
• Objetivo:
Objetivo Definir os blocos de construção
permitidos em documento XML, como um
DTD.
• Um XML Schema define :
<
?
X
M
L
?
>
• Elementos que podem aparecer em um
documento;
• Atributos que podem aparecer em um
documento;
• Hierarquia de elementos (elementos filhos);
• Ordem dos elementos filhos;
• Número de elementos filhos;
• Elemento é vazio ou pode incluir texto;
• Tipo de dados para elementos e atributos;
• Valor padrão e fixo para elementos e atributo.
<
?
X
M
L
?
>
XML Schema
XML
<
?
X
M
L
?
>
<?XML version = “1.0” encoding= “UTF8” standalone = “no” ?>
SCHEMA
<! DOCTYPE cadastro SYSTEM
“cadastro.dtd”
<cadastro>
<nome> Luiz F. da Silva </nome>
<fone> 431-7200</fone>
<empresa> Software S.A.</empresa>
<cargo> Gestor de TI</cargo>
<endereco>
<rua> Blumenau</rua>
<num> 890 </num>
<bairro> Centro</bairro>
<cep> 89000-120</cep>
</endereco>
</cadastro>
>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="cadastro">
<xs:complexType>
<xs:sequence>
<xs:element name="nome" type="xs:string"/>
<xs:element name="fone" type="xs:string"/>
<xs:element name="empresa" type="xs:string"/>
<xs:element name="cargo" type="xs:string"/>
<xs:element name="endereco" >
<xs:complexType>
<xs:sequence>
<xs:element name="rua" type="xs:string"/>
<xs:element name="numero" type="xs:string"/>
<xs:element name="bairro" type="xs:string"/>
<xs:element name="cep" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Declaração
Pre-fixo
<?xml version =“1,0” ?>
<pedido xmlns:ped = “http:/ /exemplo.com/pedido”
xmlns:prod = “http: / / exemplo.com/produto”
xmlns= “http:/ /exemplo.com/raiz”>
<ped:numero></ped:numero>
<ped:item>
Default
<prod:produto></produto>
<prod:produto></produto>
</ped:item>
</pedido>
<
?
X
M
L
?
>
XML Schema
Declaração
<
? <?xml version = “1.0” ?>
X <xsd: schema xmlns=
M http:/www.w3.org/200/10/XMLSchema>
L
< /xsd: schema >
?
>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Declaração
No documento Schema:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="faculdade">
<xs:attribute name="nome" type="xs:string" />
</xs:element>
</xs:schema>
Seguindo a estrutura de árvore, um documento XML Schema,
deverá possuir um primeiro elemento, sendo a partir dele que
ocorrerá a inclusão dos demais.
Esse é o elemento raiz do documento, e num XML Schema ele é o
elemento SCHEMA
<
?
X
M
L
?
>
XML Schema
Declaração
< No documento XML- Schema
?
X
M
L
?
>
<?xml version="1.0" encoding="UTF-8" ?>
<faculdade xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
Origem das regras de validação
xsi:noNamespaceSchemaLocation=
"http://espacoxml.webcindario.com/facu.xsd“
nome= “UDESC”
</faculdade>
Origem da estrutura do documento
<
?
X
M
L
?
>
XML Schema
Elemento
<
? • Simples ou composto
X
• Elemento simples não contém elemento(s)
M
L • Elemento simples não contém atributo(s)
?
>
<
?
X
M
L
?
>
XML Schemas
Elemento Simples
<
?
X
M
L
?
>
• É um elemento XML que contém “apenas texto”
• Tipos de dados : string, decimal, integer, boolean, date,
time, criado pelo usuário
• Sintaxe para definir um elemento simples :
– <xs: element name = “xxx” type = “yyy” / >
Elementos XML Schema
<xs:element name = "nome" type ="xs:string"/>
<xs:element name = "fone" type
="xs:string"/>
<xs:element name = "empresa" type
="xs:string"/>
<xs:element name = "cargo" type
="xs:string"/>
<
?
X
M
L
?
>
XML Schema-elemento simples
Default e Constantes
<
?
X
M
L
?
>
• Sintaxe de valor padrão
– <xs: element name = “xxx” type = “yyy”
default=“zzz” / >
• Sintaxe de valor padrão
– <xs: element name = “xxx” type = “yyy”
fixed=“kk” / >
Elementos XML Schema
<xs:element name = "nome" type ="xs:string"/>
<xs:element name = "fone" type ="xs:string"
default=”3431-7070”/>
<xs:element name = "empresa" type ="xs:string"
fixed=”PESSOA SA”/>
<xs:element name = "cargo" type ="xs:string"/>
<xs:element name = "idade" type ="xs:integer"
default=”18” />
<
?
X
M
L
?
>
XML Schema-elemento simples
Ocorrências em Elementos
possível controlar o número de ocorrência de
< • Écada
elemento
?
X
M – minOccurs e maxOccurs
L – Valor default: 1
– maxOccurs = “unbounded” : elemento pode
? aparecer quantas vezes quiser.
>
<nome>Jose Silva </nome>
<fone>3027-1400 </fone>
<fone>431-7200</fone>
<empresa> X-Games S/A</empresa>
<cargo>Desenvolvedor</cargo>
<xs:element name=“nome” type=“xs:string” minOccurs=”1”/>
<xs:element name=“fone” type=“xs:string” minOccurs=”0”
maxOccurs =”2”/>
<xs:element name=“empresa” type =“xs:string”/>
<xs:element name=“cargo” type=“xs:string”
maxOccurs =”unbounded” />
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema-Elemento Simples
Restrições em Elemento Simples
z
z
z
É possível criar restrições nos elementos
e atributos XML.
Facets.
Usadas para controlar valores aceitos
para elementos e atributos
<
?
X
M
L
?
>
XML Schema
Restrições em Elemento Simples
<
?
<xs:element name="seuElemento">
X <xs:simpleType>
M <xs:restriction base="xs:string">
...
L </xs:restriction>
</xs:simpleType>
? </xs:element>
>
• Sintaxe geral
Tipo de dado
pré-existente
<
?
X
M
L
?
>
XML Schema-Elemento simples
Tipos de Restrições
<
? Restrições possíveis para :
X Valores;
M Conjuntos de valores;
L
Série de valores;
?
> Comprimento de elemento.
•
•
•
•
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições-Valores
<
?
X
M
L
?
>
z
Palavras-chave para restringir valores:
− minInclusive
− maxInclusive
− minExclusive
− maxExclusive
Sintaxe
<xs:minInclusive value=”0”/>
* As restrições variam de acordo com o tipo
declarado !
As citadas são para tipos date e numéricos.
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições -Valores
z
Elemento “hora” com uma restrição de
não pode ser menor que 0 ou maior que
23.
<xs:element name=“hora">
<xs:simpleType>
<xs:restriction base=“xs:time”>
<xs:minInclusive value=“0”/>
<xs:maxInclusive value=“23”/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema Tipos de Restrições –
Conjunto de Valores
z
z
Elemento apenas aceitará valores
pré-definidos de um conjunto
Sintaxe
<xs:enumeration value=“valor1"/>
<xs:enumeration value=“valor2"/>
<xs:enumeration value=“valor3"/>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições
z
Elemento “cargo” só deverá aceitar os
valores estagiário, administrador,
secretária.
<xs:element name="cargo">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=“estagiário"/>
<xs:enumeration value=“administrador"/>
<xs:enumeration value=“secretária"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições
z
Escrevendo de forma genérica
<xs:element name="cargo" type="Tcargo"/>
<xs:simpleType name="Tcargo">
<xs:restriction base="xs:string">
<xs:enumeration value=“estagiário"/>
<xs:enumeration value=“administrador"/>
<xs:enumeration value=“secretária"/>
</xs:restriction>
</xs:simpleType>
<
?
X
M
L
?
>
XML Schema Tipos de Restrições
- Serie e comprimento de Valores
<
?
X
M
L
?
>
z
z
z
z
Limitar o conteúdo em uma série de números
ou letras
Sintaxe geral:
<xs: pattern value=”??” />
restrição de dígitos/caracteres:
− <xs:pattern value =”[..] [..]” />
ou
− <xs:pattern value =”[..] {n}” />
restrição de cardinalidade
− <xs:pattern value =”([..] )* ” />
− <xs:pattern value =”([..] )+ ” />
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições
z
O conteúdo o elemento “Cep” deve sempre
possuir cinco caracteres, um hífen e mais
três caracteres.
<xs:element name="Cep">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value=“d{5}-\{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições
<
Só
aceita
duas
letras
maiúsculas
?
<xs:element name=“estado">
X <xs:simpleType>
base="xs:string">
M <xs:restriction
<xs:pattern value=“[A-Z][A-Z]"/>
L </xs:restriction>
</xs:simpleType>
? </xs:element>
>
z
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições
z
Só aceita zero ou mais ocorrências de
letras maiúsculas ou minúsculas
<xs:element name=“nome”>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-zA-Z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições
< Só aceita ‘m’ ou ‘f’
?
<xs:element name="sexo">
X <xs:simpleType>
base="xs:string">
M <xs:restriction
<xs:pattern value="m|f"/>
L </xs:restriction>
</xs:simpleType>
? </xs:element>
>
z
<
?
X
M
L
?
>
XML Schema
Tipos de Restrições
< O valor tem que ter no mínimo 5 e no
? máximo 8
name="password">
X <xs:element
<xs:simpleType>
base="xs:string">
M <xs:restriction
<xs:minLength value="5"/>
L
<xs:maxLength value="8"/>
</xs:restriction>
? </xs:simpleType>
> </xs:element>
z
<
?
X
M
L
?
>
XML Schema
Elementos Complexos
<
?
X
M
L
?
>
z
z
São elementos 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
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Elementos Complexos
z
•
Exemplos de elementos complexos
contendo atributos
<cadastro id = '001'>
ou contendo elementos
<endereco>
<rua>
Blumenau</rua>
<num> 890 </num>
<bairro> Centro</bairro>
<cep> 89000-120</cep>
</endereco>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
Elementos vazios
<cadastro id = '001'>
<xs:element name="cadastro" >
<xs:complexType
<xs:complexContent>
<xs:restricion base = “xs:integer”>
<xs:atribute name= “id” type
=“xs:positiveInteger”/>
</xs:restricion>
</xs:complexContent>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
Declaração de um elemento composto
<xs:element name="endereco">
<xs:complexType>
<xs:sequence>
<xs:element name= “rua”
type =“xs:string”/>
<xs:element name= “num”
type =“xs:string”/>
<xs:element name= “bairro”
type =“xs:string”/>
<xs:element name= “cep”
type =“xs:string”/>
</xs:sequence>
</xs:complexType>
</xs:element>
<endereco>
<rua> Blumenau</rua>
<num> 890 </num>
<bairro> Centro</bairro>
<cep> 89000-120</cep>
</endereco>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
Através de um atributos type
<xs:element name="endereco" type = “Tendereco”>
<xs:complexType = Tendereco>
<xs:sequence>
<xs:element name= “rua”
type =“xs:string”/>
<xs:element name= “num”
type =“xs:string”/>
<xs:element name= “bairro”
type =“xs:string”/>
<xs:element name= “cep”
type =“xs:string”/>
</xs:sequence>
<endereco>
</xs:complexType>
</xs:element>
<rua> Blumenau</rua>
<num> 890 </num>
<bairro> Centro</bairro>
<cep> 89000-120</cep>
</endereco>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
Vários elementos podem ter o mesmo tipo
<xs:element name="endcasa" type = “Tendereco”>
<xs:element name="endescola" type = “Tendereco”>
<xs:element name="endtrabalho" type = “Tendereco”>
<xs:complexType = Tendereco>
<xs:sequence>
<xs:element name= “rua”
type =“xs:string”/>
<xs:element name= “num”
type =“xs:string”/>
<xs:element name= “bairro”
type =“xs:string”/>
<xs:element name= “cep”
type =“xs:string”/>
</xs:sequence>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
Podemos utilizar um mecanismo de
herança (como POO)
<xs:element name="endedereco" type = “Tendereco2”>
<xs:complexType = Tendereco>
<xs:extension base = “Tendereco”>
<xs:sequence>
<xs:element name= “rua” type =“xs:string”/>
<xs:element name= “num”
type =“xs:string”/>
<xs:element name= “bairro” type =“xs:string”/>
<xs:element name= “cep” type =“xs:string”/>
</xs:sequence>
</xs:extension>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
Pode conter atributos e textos
<cadastro id = '001'>
pessoa Fisica </cadastro>
<xs:element name="cadastro" type = “num_cad” >
<xs:complexType name = “num_cad”>
<xs:complexContent>
<xs:extension base = “xs:string”>
<xs:atribute name= “id” type =“xs:Integer”/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
Pode conter atributos elementos e texto
<cadastro id = 001> Pessoa Fisica
<nome>...</nome>
<xs:element name="cadastro">
<xs:complexType mixed= “true”>
<xs:sequence>
<xs:element name= “nome” type = “xs:string”/>
</xs:sequence>
<xs: extension base = “xs:string”>
<xs:attributte name= “id” type = “xs:integer”/>
</xs: extension>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
<
?
X
M
L
?
>
z
Um funcionário(nome, cargo) tem um
chefe(nome, cargo)
<xs:element name="funcionario">
<xs:complexType>
<xs:all>
<xs:element name="nome" type="xs:string"/>
<xs:element name="Tcargo" />
<xs:element name="chefe">
<xs:complexType>
<xs:all>
<xs:element name="nomeChefe"
type="xs:string"/>
<xs:element name="Tcargo" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
<
?
X
M
L
?
>
z
Usados nos elementos complexos
z
Controle de elementos usados
z
Tipos de Indicadores
− Ordem
z All
z Choice
z Sequence
−
Ocorrência
z maxOccurs
z minOccurs
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
all
z
z
z
este indicador especifica que os elementos:
podem aparecer em qualquer ordem e
cada um deve ocorrer apenas uma vez
<xs:element name="endereco">
<xs:complexType>
<xs:all>
<xs:element name=
<xs:element name=
<xs:element name=
<xs:element name=
</xs:all>
</xs:complexType>
</xs:element>
“rua” type =“xs:string”/>
“num” type =“xs:string”/>
“bairro” type =“xs:string”/>
“cep”
type =“xs:string”/>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
<
?
X
M
L
?
>
z
choice
especifica que um elemento filho ou outro pode
ocorrer
<xs:element name="endcasa" type = “Tendereco”>
<xs:element name="endtrabalho" type = “Tendereco”>
<xs:complexType = Tendereco>
<xs:sequence>
<xs:element name=
<xs:element name=
<xs:element name=
<xs:element name=
</xs:sequence>
</xs:complexType>
</xs:element>
“rua”
type =“xs:string”/>
“num”
type =“xs:string”/>
“bairro” type =“xs:string”/>
“cep” type =“xs:string”/>
<xs:element name="endereco" >
<xs:complexType>
<xs:choice>
<xs:element name= “endcasa” type =“Tendereco”/>
<xs:element name= “endtrabalho” type =“Tendereco”/>
</xs:choice>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
sequence
Elementos devem aparecer na ordem
<xs:element
name="cadastro">
<xs:complexType>
<xs:sequence>
<xs:element name= “nome”
=“xs:string”/>
<xs:element name= “fone”
=“xs:string”/>
</xs:sequence>
</xs:complexType>
</xs:element>
type
type
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Exemplo Complexos
z
<
?
Indicadores de Ocorrência
X
minOccurs: especifica o número mínimo de
M
vezes que o elemento ocorre
L
maxOccurs: especifica o número máximo de
?
vezes que o elemento ocorre
>
−
−
<
?
X
M
L
?
>
XML Schema
Elementos Compostos
• É possível controlar o número de ocorrência de cada elemento
<endereco>
<rua> Blumenau</rua>
<num> 890 </num>
<bairro> Centro</bairro>
<cep> 89000-120</cep>
</endereco>
– minOccurs e maxOccurs
– Valor default: 1
– maxOccurs = “unbounded” : elemento pode aparecer quantas
vezes quiser.
<xs:element name="endereco“ maxOccurs=“2” >
<xs:complexType>
<xs:choice>
<xs:element name= “endcasa” type =“Tendereco”/>
<xs:element name= “endtrabalho” type =“Tendereco”/>
</xs:choice>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Atributos
• Todos os atributos são declarados como tipo simples
• Contidos em elemento do tipo complexo.
• Elemento com atributos: elemento do tipo complexo.
XML
<endereco
rua= "XV de novembro"
numero= "2400"
bairro="centro"
cep="89100200"
cidade="Joinville"
complemento="c1 c2"
estado="SC"
>
XML-Schema
<xs:element name ="endereco" >
<xs:complexType>
<xs:attribute name="rua" type="xs:string"
use="optional" default="rua"/>
<xs:attribute name="numero" type="xs:integer" />
<xs:attribute name="bairro" type="xs:string"/>
<xs:attribute name="cep" type="xs:string"/>
<xs:attribute name= "cidade" type="xs:string"/>
<xs:attribute name= "estado" type="xs:string"/>
<xs:attribute name= "complemento"
type="xs:string"/>
</xs:complexType> </xs:element>
<
?
X
M
L
?
>
XML Schema
Atributos
< • Um exemplo
<
?
?
X
X
M Osinteger,
M
tipos de dados podem ser decimal,
boolean, date, time, etc.
L
L
atributo contém um valor padrão quando ?
? • Onenhum
outro valor é especificado
>
>
<xs:attribute name = “lang” type =
“xs:string”>
<xs:attribute name = “lang” type =
“xs:string” default = “nenhum”>
<
?
X
M
L
?
>
XML Schema
Atributos
• Atributos podem ser opcionais ou
obrigatórios
• Opcionais
<xs:attribute name = “lang” type =
“xs:string” use = “optional”>
• Obrigatório
<xs:attribute name = “lang” type =
“xs:string” use = “required”>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Atributos
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name ="endereco" >
<xs:complexType>
<xs:attribute name="rua" type="xs:string" use="optional"
default="rua"/>
<xs:attribute name="numero" type="xs:integer" />
<xs:attribute name="bairro" type="xs:string"/>
<xs:attribute name="cep" type="xs:string"/>
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
<
?
X
M
L
?
>
XML Schema
Atributos
<xs:element name="cadastro">
<xs:complexType>
<xs:attribute name="num_cadastro" type="xs:integer"/>
<xs:attribute name="nome" type="xs:string" />
<xs:attribute name="fone" type="xs:string" />
<xs:attribute name="empresa" type="xs:string"/>
<xs:attribute name ="endereco" />
</xs:complexType>
</xs:element>
<
?
X
M
L
?
>
Referências
z
[1] CARTER, E.F. Hack Proofing XML. Syngress Publishing. 2002
z
[2] DEITEL. et. al. XML Como Programar Bookman.São Paulo, 2003
z
[3] W3C – World Wide Web Consortium. Em <www.w3.org>
z
z
[4] MEGGINSON,D. Imperfect XML: Rants, Raves, Tips and Tricks from an Insider Addison
Wesley.Indiana (USA), 2004
[5] TITTEL, E. Schaum's Outlines of Theory and Problem of XML. McGraw-Hill. USA,
2002
z
[6] W3C Schools. Em: <www.w3cschools.com>
z
Oxigen XML Editor. Em: <http://www.oxygenxml.com>
z
Xpontus. Em: <http://xpontus.sourceforge.net/>
Download

O que é XML? - WWW2