xml schema renata pontin de mattos fortes sce-225 hipermídia 2°semestre 2003 material elaborado...
TRANSCRIPT
XML Schema
Renata Pontin de Mattos Fortes
SCE-225 Hipermídia2°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).
É 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)
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)
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)
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>
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>
É 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
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
Elemento Simples – valores default e fixed
<xs:element name=“color” type=“xs:string” default=“red”/>
<xs:element name=“color” type=“xs:string” fixed=“red”/>
Tipos de dados comuns em XML Schema
xs:string xs:decimal xs:integer xs:boolean xs:date xs:time
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”/>
<xs:attribute name=“lang” type=“xs:string” default=“EN”/>
<xs:attribute name=“lang” type=“xs:string” fixed=“EN”/>
Atributos – valores default e fixed
<xs:attribute name=“lang” type=“xs:string” use=“optional”/>
<xs:attribute name=“lang” type=“xs:string” use=“required”/>
Atributos – obrigatórios e opcionais
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>
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)
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)
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]”/>
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)
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
Elementos complexos XML: <employee>
<firstname>Smith</firstname>
<lastname> John </lastname>
<employee>
Elemento Complexo - Exemplo
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
<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
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” />
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
De forma mais compacta: <xs:element name="product">
<xs:complexType>
<xs:attribute name="prodid"
type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
Elemento Complexo Vazio
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
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>
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
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
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
Indicadores de Tipos Complexos
Ordem: All Choice Sequence
Ocorrência: maxOccurs minOccurs
Grupo: Group name AttributeGroup name
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>
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>
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>
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>
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>
Element Group
Attribute Group