XML SCHEMA Vnia Maria Ponte Vidal vvidallia ufc

  • Slides: 37
Download presentation
XML SCHEMA Vânia Maria Ponte Vidal vvidal@lia. ufc. br

XML SCHEMA Vânia Maria Ponte Vidal vvidal@lia. ufc. br

XML Schema n n Linguagem de esquemas XML prosposta pela W 3 C para

XML Schema n n Linguagem de esquemas XML prosposta pela W 3 C para descrever a estrutura de um documento XML Schema define: n Tipo de dados de elementos e atributos n Elementos e atributos contidos no documento; n elementos filhos de um elemento; n A ordem dos elementos filhos; n O número de filhos de um elemento; n Se um elemento é ou não vazio; n Valores fixos e default para elementos e atributos.

XML Schema-Vantagens n Esquemas XML Schema são escritos em XML. n Não é necessário

XML Schema-Vantagens n Esquemas XML Schema são escritos em XML. n Não é necessário aprender outra lingagem. n Esquemas XML Schema são extensíveis. n XML Schema é mais abrangente que DTD. n XML Schema suporta namespaces. n n Pode-se definir vários elementos com mesmo nome, mas com contextos diferentes. Reuso de esquemas em outros esquemas.

XML Schema-Vantagens n Pode-se referenciar múltiplos esquemas em um mesmo documento n Possuem mais

XML Schema-Vantagens n Pode-se referenciar múltiplos esquemas em um mesmo documento n Possuem mais de 44 tipos de dados predefinidos; n Suportam criação de tipos definidos pelo usuário; n n Suportam criação de tipos de dados derivados de tipos padrão; Define restrições e padrões para dados; Pode-se usar os mesmos editores e parsers para XML com XML Schema; Pode-se manipular esquemas com XML DOM

Documento XML - Exemplo <? xml version = “ 1. 0”? > <Livros> <livro

Documento XML - Exemplo <? xml version = “ 1. 0”? > <Livros> <livro categoria =“Informática” > <titulo>INSIDE XML </titulo> <autor> Steven Holzner</autor> <ISBN>0735710201 </ISBN> </livro> <livro categoria =“Informática” > <titulo> XML`S GUIDE </titulo> <autor>John Cowan </autor> <ISBN> 0071351248 </ISBN> </livro> </Livros>

DTD • Este é um simples DTD chamado catalogo. dtd que define os elementos

DTD • Este é um simples DTD chamado catalogo. dtd que define os elementos do documento XML DTD define o elemento Livros que tem uma coleção de Livro <! Catalogo de livros --> <!ELEMENT Livros (Livro)*> define o elemento livro que tem três elementos: Titulo, <!ELEMENT Livro (Titulo, Autor, ISBN)> Autor, ISBN. <!ELEMENT Titulo (#PCDATA)> <!ELEMENT Autor (#PCDATA)> Definem os subelementos de Livro <!ELEMENT ISBN (#PCDATA)> <!ATTLIST Livro categoria CDATA #REQUIRED)>

<? Xml version "1. 0"? > <xs: schema xmlns: xs=http: //www. w 3. org/2000/10/

<? Xml version "1. 0"? > <xs: schema xmlns: xs=http: //www. w 3. org/2000/10/ XMLSchema/> target. Namespace=“http: //www. livros. com” xmlns = Declaração do “http: //www. livros. com”> elemento raiz <xs: element name= "Livros“ type= “Livros. Type“ /> <complex. Type name= “Livros. Type“ > Definição do tipo <xs: element name= "livro" type= “Livro. Type“Livros. Type max. Occurs="*"> </ complex. Type > <complex. Type name= “Livro. Type“ > < xs: sequence> Definição do tipo <xs: element name="titulo" type="xs: string"/> Livro. Type <xs: element name="autor" type="xs: string"/> <xs: element name="ISBN" type="xs: string"/> <xs: attribute name= "categoria" type="xs: string"> < /xs: sequence> XML Schema - Exemplo

XML Schema – Tipos n Tipo Simples ( Simple Type ): : n n

XML Schema – Tipos n Tipo Simples ( Simple Type ): : n n n Não podem conter elementos ou atributos São os tipos básicos como string, date, float. . . Como também podem ser tipos definidos pelo usuário. Tipo Complexo ( Complex Type ): n Descrevem estruturas complexas, podendo conter subelementos e atributos

XML Schema - Tipos Simples n XML Schema possui 44 tipos predefinidos. – string

XML Schema - Tipos Simples n XML Schema possui 44 tipos predefinidos. – string – g. Year. Month – boolean – decimal – float – double – duration – date. Time – time – date – g. Year – g. Month. Day – g. Month – hex. Binary – base 64 Binary – any. URI – NOTATION

Definindo Tipos Simples n Um novo tipo simples pode ser definido a partir de

Definindo Tipos Simples n Um novo tipo simples pode ser definido a partir de um tipo simples já existente(tipo base) especificando restrições (“facetas”) no tipo base. <simple. Type name= “telefone_Ty” base= “strin <length value= “ 8”/> <pattern value= “d{3} -d{4}”/}> <simple. Type> Elementos do tipo telefone são strings de tamanho 8 que devem ter o padrão ddd-dddd, onde d reresenta um dígito.

Definindo Tipos Simples n Exemplos de restrições que podem ser usadas para definir tipos

Definindo Tipos Simples n Exemplos de restrições que podem ser usadas para definir tipos simples: n enumeration: define uma lista de valores aceitáveis. <simple. Type name=“fase. Lua_ty” base=“string”> <enumeration value=“nova"/> <enumeration value=“crescente"/> <enumeration value=“cheia"/> <enumeration value=“minguante"/> </simple. Type> Os valores aceitáveis para um elemento do tipo fase. Lua são: nova, crescente, cheia, minguante.

Definindo Tipos Simples n min. Exclusive, max. Exclusive: especificam os limites inferior e superior

Definindo Tipos Simples n min. Exclusive, max. Exclusive: especificam os limites inferior e superior para valores numéricos. <simple. Type name=“idade_ty” base=“integer”> <min. Exclusive value="0"/> <max. Exclusive value="100"/> </simple. Type> O valor dos elementos do tipo idade devem ser maior que zero e menor que cem.

Definindo Tipos Simples n min. Inclusive e max. Inclusive: especificam os limites inferior e

Definindo Tipos Simples n min. Inclusive e max. Inclusive: especificam os limites inferior e superior para valores numéricos. <simple. Type name=“idade_ty” base=“integer”> <min. Inclusive value="0"/> <max. Inclusive value="100"/> </simple. Type> O valor dos elementos do tipo idade devem ser maior ou igual a zero e menor ou igual a cem.

Declarando Elementos de Tipos Simples n Um elemento de tipo simples pode ser declarado

Declarando Elementos de Tipos Simples n Um elemento de tipo simples pode ser declarado usando um tipo predefinido ou tipo já definido anteriormente <element name=“idade" type=“idade_ty"/> Se o tipo não for básico, ele deve ser anteriormente definido.

Declarando Elementos de Tipos Simples n Um elemento de tipo simples pode ser declarado

Declarando Elementos de Tipos Simples n Um elemento de tipo simples pode ser declarado usando um tipo anônimo. Um tipo anônimo é definido na declaração do elemento e só poderá ser usados na declaração deste elemento. <element name = “senha ”> <simple. Type> <restriction base=“string”> <min. Length value=“ 6"/> <max. Length value=“ 8"/> </restriction> tipos anônimos não podem ser reusado.

Declarando Atributos n n Todos os atributos são de tipos simples. (atributos não possuem

Declarando Atributos n n Todos os atributos são de tipos simples. (atributos não possuem estrutura) Atributos podem ser dec. Larados especificando o nome do atributo e o seu tipo. <attribute name=“nome" type=“string"/>

Declarando Atributos n Atributos também podem ser declarados definindo tipos anônimos: <attribute name =

Declarando Atributos n Atributos também podem ser declarados definindo tipos anônimos: <attribute name = “senha ”> <simple. Type> <restriction base=“string”> <min. Length value=“ 6"/> <max. Length value=“ 8"/> </restriction> </simple. Type> </attribute>

Declarando Atributos n Restrições podem ser definidas usando o atributo use: n required: o

Declarando Atributos n Restrições podem ser definidas usando o atributo use: n required: o atributo é obrigatório e pode ter qualquer valor. <attribute name=“cor” type=“string” use=“required”/> optional: o atributo é opcional e pode ter qualquer valor. n <attribute name=“cor” type=“string” use=“optional”/> fixed: o valor do atributo é fixo. n <attribute name=“cor” type=“string” use=“fixed” value=“azul”/> default: define um valor default. n <attribute name=“cor” type=“string” use=“default” value=“azul”/> prohibited: o atributo não deve aparecer. n <attribute name=“cor” type=“string” use=“prohibited”/> n n n

Definindo Tipos Complexos n n Tipos complexos são tipos que possuem estrutura, podendo conter

Definindo Tipos Complexos n n Tipos complexos são tipos que possuem estrutura, podendo conter elementos e atributos. A declaração de um tipo complexo define os subelementos e atributos que compõem a estrutura do tipo. <complex. Type name= “Tendereco” > <element name=“rua“ type=” string“> <element name=“cidade “ type=”string “> <element name=“ estado“ type=”string “>

Declarando Elemento de Tipo Complexo <element name=“endereco" type=“Tendereco"/> O tipo definido anteriormente. <element name=“endereco"

Declarando Elemento de Tipo Complexo <element name=“endereco" type=“Tendereco"/> O tipo definido anteriormente. <element name=“endereco" > <complex. Type > <element name=“rua“ type=” string“/> <element name=“cidade “ type=”string “/> <element name=“ estado“ type=”string “/>Tipo anônimo <attribute name = “ telefone“ type= “ string“/> </complex. Type> <element />

Atributo content n n O atributo content define o tipo do conteúdo. Os possíveis

Atributo content n n O atributo content define o tipo do conteúdo. Os possíveis valores do atributo content são: n Empty, mixed, element. Only, text. Only empty: <complex. Type name=“Timagem” content= “empty”> <attribute name=“largura” type = “decimal”/> <attribute name=“altura” type = “decimal”/> </complex. Type > <imagem largura=“ 10” altura=“ 20”/>

Atributo content n mixed: os elementos podem conter atributos, sub-elementos e textos <complex. Type

Atributo content n mixed: os elementos podem conter atributos, sub-elementos e textos <complex. Type name=“Tpedido" content = “mixed“ > <element name=“cliente“ type=” string“/> <element name= “codigo. Pedido” type=“string”> <element name=“produto “ type=”string “/> </complex. Type> <pedido>Sr. <cliente>Fernado Costa</cliente> seu pedido de número <codigo. Pedido>1027</codigo. Pedido>do produto <produto>Livro de XMl </produto> será enviado do o mais breve possível.

Atributo content n element. Only: os elementos podem conter apenas sub-elementos e atributos (

Atributo content n element. Only: os elementos podem conter apenas sub-elementos e atributos ( é o default ) <complex. Type name=“Tendereço“ content=“elemnt. Only <element name=“rua“ type=” string“/> <element name=“cidade “ type=”string “/> <element name=“ estado“ type=”string “/> <attribute name = “ telefone“ type= “ string“/> </complex. Type> <endereco telefone= “ 2672159”> <rua>Av. Santos Dumont </rua> <cidade> Fortaleza </cidade> <estado>CE</estado> </endereco>

Atributo content n text. Only: o elemento pode conter atributos e texto, mas não

Atributo content n text. Only: o elemento pode conter atributos e texto, mas não sub-elementos. <complex. Type name= “Tcodigo > <simple. Content> <extension base = “integer”> <attribute name = “pais” type=“string”> </extension> </simple. Content> </complex. Type> <codigo pais = “Brasil”>51</codigo>1

Restrições de Ocorrência n n n O número máximo e mínimo de ocorrências de

Restrições de Ocorrência n n n O número máximo e mínimo de ocorrências de um elemento é especificado através dos atributos min. Occurs e max. Occurs. Os atributos min. Occurs e max. Occurs podem ser usados tanto em tipos simples e complexos. Através do atributo min. Occurs podemos determinar se um elemento é obrigatório ou não: n min. Occurs=0: elemento opcional. n min. Occurs>0: elemento obrigatório. <element name= “telenofe” type=“string” min. Occurs=“ 1” max. Occurs=“ 2”>

Restrições de Ordem n <all>: especifica que os sub-elementos podem aparecer em qualquer ordem

Restrições de Ordem n <all>: especifica que os sub-elementos podem aparecer em qualquer ordem e que cada um deve ocorrer única vez <element name= “pessoa”> <complex. Type> <all> <element name=“nome” type = “string”/> <element name=“sobrenome” type= “string”/> </all> </complex. Type> </element>

Restrições de Ordem n <choice>: especifica que apenas um dos subelementos pode ocorrer. <element

Restrições de Ordem n <choice>: especifica que apenas um dos subelementos pode ocorrer. <element name= “pessoa”> <complex. Type> <choice> <element name=“empregado” type = “tempregado”/> <element name=“estudante” type= “testudante”/> </choice> </complex. Type> </element> Também é possível especificar restrição de ocorrência : <choice min. Ocurrs= “ 0” max. Occurs= “unbounded”>

Restrições de Ordem n <sequence>: especifica que os subelementos devem aparecer na mesma ordem

Restrições de Ordem n <sequence>: especifica que os subelementos devem aparecer na mesma ordem em que são declarados e nenhum elemento pode ser omitido. <element name= “pessoa”> <complex. Type> <sequence> <element name=“nome” type = “string”/> <element name=“sobrenome” type= “string”/> </sequence> </complex. Type> </element>

Derivando Tipos Complexos n Derivação por extensão: estende um tipo complexo adicionando elementos ou

Derivando Tipos Complexos n Derivação por extensão: estende um tipo complexo adicionando elementos ou atributos. <complex. Type name= “Tendereco” > <element name=“rua“ type=” string“/> <element name=“cidade “ type=”string “/> <element name=“ estado“ type=”string “/> <complex. Type name= <attribute name = “ telefone“ type= “ “Tendereco. Completo”> string“/> <extension base = “ endereco”> </complex. Type> <element name=“cep” type= “string”/>

Derivando Tipos Complexos n Derivação por restrição: restringe o tipo base <complex. Type name=

Derivando Tipos Complexos n Derivação por restrição: restringe o tipo base <complex. Type name= “Tendereco” > <element name=“rua“ type=” string“/> <element name=“cidade “ type=”string “/> <element name=“ estado“ type=”string “ min. Occurs =“ 0“ max. Occurs= “ <attribute name = “ telefone“ type= “ string”/> </complex. Type> <complex. Type name= “Tendereco. Obrigatorio” > <restriction base = “ endereco”> <element name=“rua“ type=” string“/> <element name=“cidade “ type=”string “/> <element name=“ estado“ type=”string “ min. Occurs =“ 1“ max. Occurs= <attribute name = “ telefone“ type= “ string“/> </restriction> </complex. Type>

Derivando Tipos Complexos n n Na derivação por restrição todos os atributos e elementos

Derivando Tipos Complexos n n Na derivação por restrição todos os atributos e elementos do tipo base devem ser declarados no tipo derivado. A vantagem de derivação por restrição é que o conteúdo de um elemento do tipo derivado pode substituir o conteúdo de um elemento do tipo base. Por exemplo, um elemento do tipo endereco. Obrigatorio pode ser uma instância de um elemento do tipo endereço.

Restrições de Integridade n n XML tem se tornado um formato universal para representação

Restrições de Integridade n n XML tem se tornado um formato universal para representação e troca de informações na WEB. Em muitas aplicações, os dados XML são gerados de fontes já existentes ( isto é, relacional, orientada a objeto, sistemas de arquivos, etc). XML deve especificar algumas restrições de integridade sobre os dados para manter as restrições especificadas nas fontes de origem. Restrições de integridade são muito importantes para a especificação da semântica, controle de consistência, preservação da informação e integração de fontes de informação.

Restrições de Integridade- DTDs n n n As restrições de integridade são definidas pelos

Restrições de Integridade- DTDs n n n As restrições de integridade são definidas pelos atributos ID(identificadores), IDREF e IDREFS(referenciais). Os valores de todos os atributos identificadores têm que ser distintos em todo o documento. Não permite especificar o tipo do elemento referenciado.

Restrições de Integridade – XML Schema n Mecanismos de restrições de integridade: n n

Restrições de Integridade – XML Schema n Mecanismos de restrições de integridade: n n n Unique Key- keyref vantagens: n n n Podem ser aplicadas tanto em elementos como em atributos. Podem ser aplicadas a mais de um elemento ou atributo. Permitem limitar o escopo, no qual o valor do elemento ou do atributo deve ser único, ou o qual o escopo dos elementos referenciados.

Restrições de Integridade n Unique n n XML Schema permite especificar que o valor

Restrições de Integridade n Unique n n XML Schema permite especificar que o valor de qualquer elemento ou atributo deve ser único dentro de um determinado escopo (restrição de unicidade). Key n XML Schema permite especificar que o valor de qualquer elemento ou atributo deve ser único e pode ser referênciado dentro de um determinado escopo (restrição de unicidade).

Restrições de Integridade n Exemplo: expressão de caminho especifica o escopo Identifica unicamente a

Restrições de Integridade n Exemplo: expressão de caminho especifica o escopo Identifica unicamente a restrição <key name=“chave_livro”> <selector xpath=“livaria/livro”/> <field xpath=“titulo”/> <field xpath=“autor”/> </key> expressões de caminho (relativas a cada elemento selecionado pelo selector) a qual especifica um elemento mono ocorrência ou atributo monovalorado, do tipo simples

Restrições de Integridade n Restrição referencial (KEYREF) nome da restrição de chave referenciada Nome

Restrições de Integridade n Restrição referencial (KEYREF) nome da restrição de chave referenciada Nome da restrição expressão de caminho especifica o escopo dos elementos em que a restrição se aplica. <keyref name=“autor refer=“chave_livro”> <selector xpath=“livaria/autor”/> <field xpath=“nome”/> <field xpath=“autor”/> </keyref> Expressões de caminho relativas aos elemento selecionado pelo selector. Cada expressão deve identificar um elemento mono ocorrência ou atributo monovalorado do tipo simples.