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).
XML Schema: O que é? (2/2)





É extensível para futuras adições;
É mais rico e mais útil que os DTD’s;
É escrito em XML;
Suporta tipos de dados;
Suporta namespaces.
Introdução (1/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 (2/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.
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>
Elemento Simples



É 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 - exemplo
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 – 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”/>
Atributos – valores default e
fixed
<xs:attribute name=“lang”
type=“xs:string” default=“EN”/>
<xs:attribute name=“lang”
type=“xs:string” fixed=“EN”/>
Atributos – obrigatórios e
opcionais
<xs:attribute name=“lang”
type=“xs:string” use=“optional”/>
<xs:attribute name=“lang”
type=“xs:string” use=“required”/>
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>
Restrições (2/5)

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 (3/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 (4/5)

Sobre uma série de valores – pattern:
<xs:element name=“letter”>
<xs:simpleType>
<xs:restriction base=“xs:string”>
<xs:pattern value=“[0-9][0-9][0-9]”/>
value=“[A-Z][A-Z][A-Z]”/>
value=“[xyz]”/>
value=“[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Restrições (5/5)

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>
Elemento Complexo


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 - Exemplo

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 – Outro
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 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” />
Elemento Complexo Vazio

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 com
apenas elementos

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 texto

<shoesize
Declaraçãocountry="france">35</shoesize>
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
conteúdo misto


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>
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
Download

XML Schema