xml schema renata pontin de mattos fortes sce-225 hipermídia 2°semestre 2003 material elaborado...

39
XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Upload: internet

Post on 18-Apr-2015

110 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

XML Schema

Renata Pontin de Mattos Fortes

SCE-225 Hipermídia2°Semestre 2003

Material elaborado por Lisandra Cazassa Fumagalli

Page 2: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

XML Schema: O que é? (1/2)

É uma Recomendação W3C (Maio/2001);

É uma alternativa para o DTD baseada em XML;

Descreve a estrutura de um documento XML;

A linguagem XML Schema é também referenciada como XML Schema Definition (XSD).

Page 3: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

É extensível para futuras adições; É mais rico e mais útil que os

DTD’s; É escrito em XML; Suporta tipos de dados; Suporta namespaces.

XML Schema: O que é? (2/2)

Page 4: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Um XML Schema define: elementos que podem aparecer em

um documento; atributos que podem aparecer em

um documento; quais elementos são elementos

filhos; o ordem dos elementos filhos;

Introdução (1/2)

Page 5: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

o número de elementos filhos; se um elemento é vazio ou poder

incluir algum texto; os tipos de dados para elementos

e atributos; valores default e fixos para

elementos e atributos.

Introdução (2/2)

Page 6: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Exemplo<?xml version=“1.0”?>

<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”>

<xs:element name=“note”>

<xs:complexType>

<xs:sequence>

<xs:element name=“to” type=“xs:string”/>

<xs:element name=“from” type=“xs:string”/>

<xs:element name=“heading” type=“xs:string”/>

<xs:element name=“body” type=“xs:string”/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

Page 7: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Elemento <schema>

O elemento <schema> é o elemento raiz de todo XML Schema!

<?xml version=“1.0”?>

<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”>

...

</xs:schema>

Page 8: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

É um elemento XML que pode conter somente texto; não pode conter outros elementos ou atributos.

O texto pode ser de vários tipos diferentes, incluindo tipos customizados.

Sintaxe: <xs:element name=“title” type=“xs:string”/>

Elemento Simples

Page 9: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Elementos XML:<lastname>Smith</lastname>

<age>34</age>

<dateborn>1970-05-26</dateborn>

Definição em XML Schema:<xs:element name=“lastname” type=“xs:string”/>

<xs:element name=“age” type=“xs:integer”/>

<xs:element name=“dateborn” type=“xs:date”/>

Elemento Simples - exemplo

Page 10: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Elemento Simples – valores default e fixed

<xs:element name=“color” type=“xs:string” default=“red”/>

<xs:element name=“color” type=“xs:string” fixed=“red”/>

Page 11: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Tipos de dados comuns em XML Schema

xs:string xs:decimal xs:integer xs:boolean xs:date xs:time

Page 12: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Atributos XSD O atributo é declarado como sendo um

tipo simples. Sintaxe: <xs:attribute name=“id” type=“xs:integer”/> Elemento XML com atributo: <lastnane lang=“EN”>Smith</lastname> Definição em XML Schema: <xs:attribute name=“lang” type=“xs:string”/>

Page 13: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

<xs:attribute name=“lang” type=“xs:string” default=“EN”/>

<xs:attribute name=“lang” type=“xs:string” fixed=“EN”/>

Atributos – valores default e fixed

Page 14: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

<xs:attribute name=“lang” type=“xs:string” use=“optional”/>

<xs:attribute name=“lang” type=“xs:string” use=“required”/>

Atributos – obrigatórios e opcionais

Page 15: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Restrições (1/5)

Restrições são usadas para controlar valores aceitáveis para elementos XML ou atributos.

<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>

Page 16: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Sobre um conjunto de valores – enumeration: <xs:element name=“car”>

<xs:simpleType>

<xs:restriction base=“xs:string”>

<xs:enumeration value=“Audi”/>

<xs:enumeration value=“Ferrari”/>

<xs:enumeration value=“BMW”/>

</xs:restriction>

</xs:simpleType>

</xs:element>

Restrições (2/5)

Page 17: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

O mesmo exemplo poderia ser: <xs:element name="car“ type=“carType”/>

<xs:simpleType name=“carType”>

<xs:restriction base=“xs:string”>

<xs:enumeration value=“Audi”/>

<xs:enumeration value=“Ferrari”/>

<xs:enumeration value=“BMW”/>

</xs:restriction>

</xs:simpleType>

Restrições (3/5)

Page 18: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Sobre uma série de valores – pattern: <xs:element name=“letter”>

<xs:simpleType>

<xs:restriction base=“xs:string”>

<xs:pattern value=“[a-z]"/>

</xs:restriction>

</xs:simpleType>

</xs:element>

Restrições (4/5)

<xs:pattern value=“[A-Z][A-Z][A-Z]”/><xs:pattern value=“[xyz]”/><xs:pattern value=“[0-9][0-9][0-9]”/>

Page 19: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Sobre tamanho – lenght: <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>

Restrições (5/5)

Page 20: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

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

Há quatro tipos: Elementos vazios (empty) Elementos que contêm somente outros

elementos Elementos que contêm somente texto Elementos que contêm tanto outros

elementos quanto texto

Elemento Complexo

Page 21: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Elementos complexos XML: <employee>

<firstname>Smith</firstname>

<lastname> John </lastname>

<employee>

Elemento Complexo - Exemplo

Page 22: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Definição em XML Schema: <xs:element name=“employee”> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

Elemento Complexo - Exemplo

Page 23: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

<xs:element name="employee" type="personinfo"/><xs:element name="student" type="personinfo"/> <xs:element name="member“ type="personinfo"/>

<xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence></xs:complexType>

Elemento Complexo – Outro exemplo

Page 24: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Elemento Complexo Vazio Pode conter atributos mas não pode ter

qualquer conteúdo entre as tags de abertura e fechamento.

Elemento XML vazio: <product prodid = “1345” />

Page 25: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Definição em XML Schema: <xs:element name="product"> <xs:complexType> <xs:complexContent> <xs:restriction base="xs:integer"> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:element>

Elemento Complexo Vazio

Page 26: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

De forma mais compacta: <xs:element name="product">

<xs:complexType>

<xs:attribute name="prodid"

type="xs:positiveInteger"/>

</xs:complexType>

</xs:element>

Elemento Complexo Vazio

Page 27: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Definição em XML Schema: <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

Elemento Complexo com apenas elementos

Page 28: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Declaração em XML Schema: <xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

Elemento Complexo com apenas texto

<shoesize country="france">35</shoesize>

Page 29: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Um elemento complexo misto pode conter atributos, elementos e texto.

Elemento XML: <letter> Dear Mr.<name>John Smith</name>. Your order <orderid>1032</orderid> will be shipped on <shipdate>2001-07-13</shipdate>. </letter>

Elemento Complexo com conteúdo misto

Page 30: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Definição em XML Schema: <xs:element name="letter"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>

Elemento Complexo com conteúdo misto

Page 31: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Indicadores de Tipos Complexos

Pode-se controlar como os elementos serão usados nos documentos com indicadores.

Há sete tipos de indicadores: 3 de Ordem 2 de Ocorrência 2 de Grupos

Page 32: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Indicadores de Tipos Complexos

Ordem: All Choice Sequence

Ocorrência: maxOccurs minOccurs

Grupo: Group name AttributeGroup name

Page 33: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

All Especifica que os elementos filhos podem aparecer

em qualquer ordem e devem ocorrer uma e apenas uma vez.

<xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>

Page 34: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Choice Especifica que tanto um elemento filho quanto o

outro podem ocorrer. <xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element>

Page 35: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Sequence Especifica que os elementos filhos devem

aparecer em um ordem espeçífica. <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

Page 36: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

maxOccurs minOccurs Especificam o número máximo e mínimo,

respectivamente, que um elemento pode ocorrer. <xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element>

Page 37: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Group Indicadores de grupo são usados para definir

conjuntos de elementos relacionados. Elementos: <xs:group name=“groupname”> ... </xs:group>

Atributos: <xs:attributeGroup name=“groupname”> ... </xs:attributeGroup>

Page 38: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Element Group

Page 39: XML Schema Renata Pontin de Mattos Fortes SCE-225 Hipermídia 2°Semestre 2003 Material elaborado por Lisandra Cazassa Fumagalli

Attribute Group