Você está na página 1de 40

L|nguagem para Crgan|zao e 1ransf.

de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
1 rof. Cullherme CassolaLo
L|nguagem para Crgan|zao
e 1ransfernc|a de Dados
para Web
rof. Gu||herme Casso|ato
gulcassolaLo[gmall.com

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
2 rof. Cullherme CassolaLo
L Schema

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
3 rof. Cullherme CassolaLo
squemas L
m esquema xML e uma esLruLura lglca para um documenLo xML
Cuando deflnlmos uma esLruLura lglca, deflnlmos um esquema, lsLo e, o con[unLo
semlesLruLurado de elemenLos, aLrlbuLos, resLrles e enLldades acelLas em
documenLos xML elaborados para um flm deLermlnado
Modelos de represenLao de dados baseados em xML so esquemas xML, e.g.
8SS, MaLhML, SvC, kML, xP1ML, eLc
u1u e uma Lecnologla para deflnlo de esquemas - uLll, porem com forLes
llmlLaes de expresso
C esquema xML mals famoso e a xML Schema ueflnlLlon (xSu), que oferece uma
esLruLura lglca predeflnlda para a escrlLa de documenLos xML que especlflquem a
esLruLura lglca de ouLros documenLos xML de apllcao
nesse senLldo, xSu e uma llnguagem para especlflcao de esLruLuras lglcas xML,
em xML, que concorrem com as u1us

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
4 rof. Cullherme CassolaLo
L Schema Def|n|t|on (SD)
m arqulvo xSu e um arqulvo xML que corresponde a especlflcao xML Schema
ueflnlLlon - deve ser escrlLo usando-se as Lags predeflnldas desLa llnguagem - e
que, por sua vez, consubsLancla um esquema para documenLos xML de apllcao
A xML Schema ueflnlLlon (xSu) e uma recomendao da W3C
xsd.u1u
app1.
xsd
app2.
xsd
appn.
xsd
nasce a llnguagem
xML Schema ueflnlLlon (xSu)
xml
xml
xml
xml
xml
rogramadores passam a
especlflcar a esLruLura
lglca para seus
documenLos xML usando
xSus em vez de u1us
novos valldadores permlLem valldar
xMLs conLra esquemas xSus (que, no
fundo, Lambem so arqulvos xML)

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
3 rof. Cullherme CassolaLo
o Confunda!
|crosoft L Data keduced (Dk)
AnLes dos xML Schemas da W3C (xSu), [ exlsLla um esquema xML para crlao de
esquemas xML, o xML uaLa 8educed (xu8), proposLo pela MlcrosofL
Cs arqulvos xu8 funclonavam asslm como os xSu - ambos posslblllLam deflnlr a
esLruLura lglca de documenLos xML para flns de especlflcao e valldao
A MlcrosofL crlou esLe padro e adoLou lnLernamenLe em seus produLos
MlcrosofL SCL Server 2000 e MlcrosofL Cfflce 2000 o uLlllzam no lugar de xSu
A MlcrosofL e empresa membro do World Wlde Web ConsorLlum (W3C) e a[udou na
especlflcao da xML Schema ueflnlLlon (xSu)
ALualmenLe, a xSu e a recomendao da W3C para a deflnlo de esquemas xML e
e forLemenLe uLlllzada na lndusLrla, lnclulndo a MlcrosofL que abandonou o suporLe
a xu8 e a subsLlLulu pela xSu em seus produLos

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
6 rof. Cullherme CassolaLo
squemas L baseados em SD
C propslLo dos xML Schemas (xSu) e deflnlr a esLruLura lglca de um documenLo
xML, asslm como as u1us
m xML Schema (arqulvo xSu):
ueflne elemenLos que podem aparecer num documenLo
ueflne aLrlbuLos que podem aparecer num documenLo
ueflne quals elemenLos so elemenLos fllhos de quals
ueflne a ordem de aparlo dos elemenLos
ueflne a quanLldade de ocorrnclas dos elemenLos
ueflne se um elemenLo e vazlo ou pode lnclulr LexLo
ueflne Llpos de dados para os elemenLos e aLrlbuLos
ueflne valores padro e flxos para elemenLos e aLrlbuLos
L um arqulvo xML, de esLruLura predeflnlda devldamenLe especlflcada
(hLLp://www.w3.org/18/xmlschema-0/), que e salvo com a exLenso .xsd

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
7 rof. Cullherme CassolaLo
or que usar SD?
So essenclalmenLe mals rlcos e mals poderosos que u1us
SuporLam Llpos de dados
Mals fcll de descrever conLeudos permlLldos no documenLo
Mals fcll deflnlr resLrles para os dados (faceLas / Joto focets)
LlmlLes (mxlmos e mlnlmos, comprlmenLo, casas declmals, daLas e horas)
Lnumeraes
adres (Joto pottetos), com suporLe a expresses regulares
1raLamenLo de espaos
Melhor conLrole de ocorrncla com ldenLlflcadores mals soflsLlcados
Mxlmos e mlnlmos
Crdenao
AgrupamenLo
AlLernaLlvas
Melhor suporLe a relaclonamenLos enLre enLldades
Mals fcll lnLegrar com slsLemas de gerenclamenLo de bancos de dados
Slmpllflcam a valldao de dados de enLrada

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
8 rof. Cullherme CassolaLo
or que usar SD?
So escrlLos em xML (lnerenLemenLe poderosos na expresso e exLenso)
voc no preclsa domlnar uma nova llnguagem
voc pode usar um edlLor de xML para edlLar seus arqulvos xSu
voc pode usar um parser xML para lnLerpreLar seus arqulvos xSu, pode manlpul-los
com xML uCM
voc pode Lransformar seus xSus com xSL1
So exLenslvels para fuLuras lmplemenLaes (asslm como Loda llnguagem baseada em
xML)
voc pode reuLlllzar seu xML Schema denLro de ouLros xML Schemas
voc pode crlar seus prprlos Llpos de dados (derlvados dos Llpos de dados naLlvos)
voc pode fazer referncla a mulLlplos xSus denLro do mesmo arqulvo xML

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
9 rof. Cullherme CassolaLo
Lembre-se! o basta um L estar bem formado
(do ponto de v|sta s|ntt|co)
Lm um xML slnLaLlcamenLe vlldo...
P declarao xML (prlogo) logo no lnlclo
P um unlco elemenLo ralz
1ags de aberLura colncldem na grafla com Lags fechamenLo
LlemenLos so case-senslLlve
1odos os elemenLos so devldamenLe fechados
1odos os elemenLos so aproprladamenLe anlnhados
1odos os aLrlbuLos esLo enLre aspas
sa-se refernclas a enLldades ou sees CuA1A para lncluso de caracLeres especlals
(e.g. < >) em melo a valores de LexLo
orem, um xML bem formado pode alnda conLer erros
Lrros de esLruLura lglca
Lrros de valores preenchldos (Llpos de dados, llmlLes, formaLos, eLc)

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
10 rof. Cullherme CassolaLo
emp|o
note.m|
<?xm1 verson="1.0"?>
<note>
<to>1ove<,to>
<1rom>Jan<,1rom>
<subect>8emnder<,subect>
<body>0on't 1orget me ths
weekend!<,body>
<,note>
note.dtd
<!LlLMLu1 note {to,1rom,subect,body)>
<!LlLMLu1 to {#C0^1^)>
<!LlLMLu1 1rom {#C0^1^)>
<!LlLMLu1 subect {#C0^1^)>
<!LlLMLu1 body {#C0^1^)>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
11 rof. Cullherme CassolaLo
emp|o
note.sd
<?xm1 verson="1.0"?>
<xs:schema xm1ns:xs="http:,,www.w2.org,2001,xMlSchema"
targetuamespace="http:,,www.meuste.com"
xm1ns="http:,,www.meuste.com"
e1ementIorm0e1au1t="qua11ed">
<xs:e1ement name="note">
<xs:comp1ex1ype>
<xs:sequence>
<xs:e1ement name="to" type="xs:strng",>
<xs:e1ement name="1rom" type="xs:strng",>
<xs:e1ement name="subect" type="xs:strng",>
<xs:e1ement name="body" type="xs:strng",>
<,xs:sequence>
<,xs:comp1ex1ype>
<,xs:e1ement>
<,xs:schema>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
12 rof. Cullherme CassolaLo
azendo refernc|a a um SD eterno
note.m|
<?xm1 verson="1.0"?>
<!00C1YL note SYS1LM "note.dtd">
<note>
<to>1ove<,to>
<1rom>Jan<,1rom>
<subect>8emnder<,subect>
<body>0on't 1orget me ths
weekend!<,body>
<,note>
note.m|
<?xm1 verson="1.0"?>
<note
xm1ns="http:,,www.meuste.com"
xm1ns:xs="http:,,www.w2.org,2001,xMl
Schema-nstance"
xs:schemalocaton="http:,,www.meust
e.com note.xsd">
<to>1ove<,to>
<1rom>Jan<,1rom>
<subect>8emnder<,subect>
<body>0on't 1orget me ths
weekend!<,body>
<,note>
CCC kICS k U D1D CCC CS CC SDs
AlLernaLlvamenLe:
xs:nouamespaceSchemalocaton=note.xsd"

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
13 rof. Cullherme CassolaLo
ntendendo a refernc|a ao SD eterno
lndlca que o namespace padro do
documenLo, l.e. a qual empresa/programa
ele perLence
note.m|
<?xm1 verson="1.0"?>
<note
xm1ns="http:,,www.meuste.com"
xm1ns:xs="http:,,www.w2.org,2001,xMlSchema-nstance"
xs:schemalocaton="http:,,www.meuste.com note.xsd">
...
<,note>
lndlca que elemenLos e aLrlbuLos ldenLlflcados pelo
preflxo xs perLencem ao namespace xMLSchema-
lnsLance da W3C, Lal como o aLrlbuLo
xs:schemalocaton
lndlca o camlnho do arqulvo xsd.
Seu valor conLem (separados por
um espao): o namespace e o
camlnho de faLo do xsd
AlLernaLlvamenLe, poderla ser
xs:nouamespaceSchemalocaton=note.xsd"
para ldenLlflcar o camlnho do xSu sem lnclulr o seu namespace

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
14 rof. Cullherme CassolaLo
ntendendo um documento SD
C e|emento <schema>
<xml version="1.0">
<xs:schema>
...
...
</xs:schema>
LlemenLo ralz de Lodo xML Schema
uenLro dele so declarados
1odos os elemenLos (complexos, slmples e mlsLos)
1odos os aLrlbuLos
1odos os Llpos de dados
na Lag de aberLura lnclul aLrlbuLos que especlflcam
1. Cue se LraLa de um xML Schema
2. A qual espao de nomes os xML de lnsLncla deflnldos por esLe
xML Schema esLo assoclado (l.e. para qual empresa e/ou
programa ele fol felLo)
3. A qual espao de nomes o proprlo xML Schema esL assoclado
4. Se os elemenLos do xML de lnsLncla devem ou no ser
quallflcados no namespace ldenLlflcado

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
13 rof. Cullherme CassolaLo
tr|butos do e|emento <schema>
note.sd
<?xm1 verson="1.0"?>
<xs:schema xm1ns:xs="http:,,www.w2.org,2001,xMlSchema"
targetuamespace="http:,,www.meuste.com"
xm1ns="http:,,www.meuste.com"
e1ementIorm0e1au1t="qua11ed">
...
<,xs:schema>
lndlca que se LraLa
de um xML Schema
1ambem especlflca
que esLruLuras
perLencenLes a esLe
namespace sero
noLadas com o
preflxo xs nesLe
xSu
lndlca que a qual namespace
perLencem os xML de lnsLncla,
cu[a esLruLura lglca esL sendo
deflnlda nesLe xSu
lndlca o espao de nomes ao qual
perLence o prprlo arqulvo xSu,
que Lambem e um arqulvo xML
Lm xML, "quallflcado" slgnlflca "assoclado a um namespace"
Lsse aLrlbuLo lndlca se esLruLuras do xML de lnsLncla devem ou no ser quallflcados ("quallfled" ou "unquallfled")
nesse caso ("quallfled"), lndlca que Lodos os elemenLos do documenLo xML de lnsLncla devem ser quallflcados no
namespace especlflcado em LargeLnamespace

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
16 rof. Cullherme CassolaLo
Def|n|ndo e|ementos do L de |nstnc|a
mas antes...
ke|embrando e|ementos s|mp|es e|ementos comp|eos
1IC SILS
ConLem apenas dados
uados podem ser de dlferenLes Llpos
(padres da llnguagem ou
cusLomlzados)
uados podem ser faceLados em
resLrles (llmlLes e padres
regulares)
1IC CCLC
ode conLer ouLros elemenLos e/ou
aLrlbuLos
ode ser de 4 subLlpos:
LlemenLos vazlos
LlemenLos que conLm apenas
ouLros elemenLos
LlemenLos que conLm apenas LexLo
LlemenLos que conLm LanLo ouLros
elemenLos como LexLos (elemenLos
mlsLos)
(qualsquer desLes subLlpos podem conLer
aLrlbuLos Lambem)

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
17 rof. Cullherme CassolaLo
Def|n|ndo e|ementos
S|ntae bs|ca: <xs:e1ement name="xxx" type="yyy",> <xs:e1ement name="xxx" type="yyy",>
Cnde:
xxx e o nome do elemenLo
yyy e o Llpo do elemenLo
Cs Llpos podem ser um dos Llpos de
dados naLlvos lrresLrlLos oferecldos
pela xML Schema, denLre os quals:
xs:sLrlng
xs:declmal
xs:lnLeger
xs:boolean
xs:daLe
xs:Llme
...ou voc pode deflnlr o seu prprlo
Llpo de elemenLo:
t|po s|mp|es, cu[o elemenLo acelLar
dados baseados nos Llpos naLlvos,
porem com alguma resLrlo
t|po comp|eo, cu[o elemenLo conLer
aLrlbuLos ou elemenLos fllhos

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
18 rof. Cullherme CassolaLo
emp|o
m|
...
<sobrenome>S1va<,sobrenome>
<dade>42<,dade>
<data_nasc>1970-02-27<,data_nasc>
...
sd
...
<xs:e1ement name="sobrenome" type="xs:strng",>
<xs:e1ement name="dade" type="xs:nteger",>
<xs:e1ement name="data_nasc" type="xs:date",>
...

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
19 rof. Cullherme CassolaLo
a|ores defau|t e f|os para e|ementos
LCkS DUL1
Se nenhum valor fol especlflcado, o valor defaulL (padro) ser aLrlbuldo:
<xs:e1ement name="cor" type="xs:strng" de1au1t="verme1ho",>
LCkS ICS
Se um valor flxo e especlflcado, nenhum ouLro valor pode ser preenchldo no
xML:
<xs:e1ement name="cor" type="xs:strng" 1xed="verme1ho",>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
20 rof. Cullherme CassolaLo
Def|n|ndo atr|butos
S|ntae bs|ca: <xs:attrbute name="xxx" type="yyy",> <xs:attrbute name="xxx" type="yyy",>
Cnde:
xxx e o nome do aLrlbuLo
yyy e o Llpo do aLrlbuLo
Cs Llpos podem ser um dos Llpos de
dados naLlvos lrresLrlLos oferecldos
pela xML Schema, denLre os quals:
xs:sLrlng
xs:declmal
xs:lnLeger
xs:boolean
xs:daLe
xs:Llme
...ou voc pode deflnlr o seu prprlo
Llpo (slmples) de aLrlbuLo, lmpondo
alguma resLrlo ao valor, baseada em
um dos Llpos naLlvos oferecldos

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
21 rof. Cullherme CassolaLo
emp|o
m|
...
<sobrenome orgem="8ras1">S1va<,sobrenome>
...
sd
...
<xs:attrbute name="orgem" type="xs:strng",>
...
noLe que, dlferenLe de como fazemos em u1us, uma deflnlo de um aLrlbuLo em xML Schema no carrega
lnLernamenLe o nome do elemenLo ao qual o aLrlbuLo perLence. lsso se deve ao faLo de que, em xSus, um
aLrlbuLo e deflnldo hlerarqulcamenLe denLro da esLruLura da qual faz parLe. Asslm, ao deflnlrmos uma
esLruLura de Llpo complexo para um elemenLo que conLer o aLrlbuLo, deflnlmos o aLrlbuLo denLro do corpo
desLa esLruLura.

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
22 rof. Cullherme CassolaLo
a|ores defau|t e f|os para atr|butos e Uso opc|ona| ou requer|do
LCkS DUL1
Se nenhum valor fol especlflcado, o valor defaulL (padro) ser aLrlbuldo:
<xs:attrbute name="orgem" type="xs:strng" de1au1t="8ras1",>
LCkS ICS
Se um valor flxo e especlflcado, nenhum ouLro valor pode ser preenchldo no xML:
<xs:attrbute name="orgem" type="xs:strng" 1xed="8ras1",>
USC kUkIDC CU CCICL
ALrlbuLos podem ser opclonals (padro) ou requerldos (obrlgaLrlos):
<xs:attrbute name="orgem" type="xs:strng" use="requred",>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
23 rof. Cullherme CassolaLo
Def|n|o de t|pos
<xs:simple1ype name="nome_do_tipo_personalizado">
...
... restries de comprimento, 1ormatos, padres, valores possiveis, etc
...
</xs:simple1ype>
1IC SILS
<xs:complex1ype name="nome_do_tipo_personalizado>
...
... identi1icador de obrigatoriedade e ordenao de elementos 1ilhos
... ... de1inio de elementos 1ilhos
... de1inio de atributos
...
</xs:complex1ype>
1IC CCLC

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
24 rof. Cullherme CassolaLo
Ut|||zando t|pos persona||zados - emp|o: complex1ype
<xs:comp1ex1ype name="pessoa">
<xs:sequence>
<xs:e1ement name="nome" type="xs:strng",>
<xs:e1ement name="sobrenome" type="xs:strng",>
<,xs:sequence>
<,xs:comp1ex1ype>
<xs:e1ement name="empregado" type="pessoa",>
<xs:e1ement name="estudante" type="pessoa",>
<xs:e1ement name="membro" type="pessoa",>
<xs:comp1ex1ype name="pessoa">
<xs:sequence>
<xs:e1ement name="nome" type="xs:strng",>
<xs:e1ement name="sobrenome" type="xs:strng",>
<,xs:sequence>
<,xs:comp1ex1ype>
<xs:e1ement name="empregado" type="pessoa",>
<xs:e1ement name="estudante" type="pessoa",>
<xs:e1ement name="membro" type="pessoa",>
noLe o reaprovelLamenLo
da esLruLura complexa
pessoa para vrlos
elemenLos
<xs:e1ement name="empregado">
<xs:comp1ex1ype>
<xs:sequence>
<xs:e1ement name="nome" type="xs:strng",>
<xs:e1ement name="sobrenome" type="xs:strng",>
<,xs:sequence>
<,xs:comp1ex1ype>
<,xs:e1ement>
<xs:e1ement name="empregado">
<xs:comp1ex1ype>
<xs:sequence>
<xs:e1ement name="nome" type="xs:strng",>
<xs:e1ement name="sobrenome" type="xs:strng",>
<,xs:sequence>
<,xs:comp1ex1ype>
<,xs:e1ement>
Caso no ha[a necessldade
de reaprovelLar a esLruLura
em ouLros elemenLos, o
Llpo pode ser especlflcado
dlreLamenLe denLro da
prprla deflnlo do
elemenLo em quesLo

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
23 rof. Cullherme CassolaLo
Ut|||zando t|pos persona||zados - emp|o: simple1ype
<xs:e1ement name="dade">
<xs:smp1e1ype>
<xs:restrcton base="xs:nteger">
<xs:mn1nc1usve va1ue="18",>
<xs:maxLxc1usve va1ue="60",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="dade">
<xs:smp1e1ype>
<xs:restrcton base="xs:nteger">
<xs:mn1nc1usve va1ue="18",>
<xs:maxLxc1usve va1ue="60",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
LsLabelece uma resLrlo (Joto focet)
baseada no Llpo naLlvo xs:nteger
- valor LexLual do elemenLo dade
deve ser um numero lnLelro malor
ou lgual a 18 e menor do que 60
1lpo Lambem poderla Ler
sldo declarado fora da
esLruLura do elemenLo
ldade, para poder ser
reaprovelLado em ouLros
elemenLos
<xs:e1ement name="dade" type="1axa_adu1ta",>
<xs:smp1e1ype name="1axa_adu1ta">
<xs:restrcton base="xs:nteger">
<xs:mn1nc1usve va1ue="18",>
<xs:maxLxc1usve va1ue="60",>
<,xs:restrcton>
<,xs:smp1e1ype>
<xs:e1ement name="dade" type="1axa_adu1ta",>
<xs:smp1e1ype name="1axa_adu1ta">
<xs:restrcton base="xs:nteger">
<xs:mn1nc1usve va1ue="18",>
<xs:maxLxc1usve va1ue="60",>
<,xs:restrcton>
<,xs:smp1e1ype>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
26 rof. Cullherme CassolaLo
acetas () - restr|es para t|pos de dados
aceta Descr|o
enumerat|on ueflne uma llsLa de valores acelLos
fract|onD|g|ts Lspeclflca um numero mxlmo de casas declmals acelLas. ueve ser malor ou lgual a zero.
|ength Lspeclflca o numero exaLo de caracLeres ou lLens de llsLa acelLos. ueve ser malor ou lgual a zero.
mac|us|ve Lspeclflca um llmlLe superlor para um valor numerlco (o valor deve menor do que esse llmlLe)
maInc|us|ve Lspeclflca um llmlLe superlor para um valor numerlco (o valor deve menor ou lgual a esse llmlLe)
maLength Lspeclflca o numero mxlmo de caracLeres ou lLens de llsLa acelLos. ueve ser malor ou lgual a zero.
m|nc|us|ve Lspeclflca um llmlLe lnferlor para um valor numerlco (o valor deve malor do que esse llmlLe)
m|nInc|us|ve Lspeclflca um llmlLe lnferlor para um valor numerlco (o valor deve malor ou lgual a esse llmlLe)
m|nLength Lspeclflca o numero mlnlmo de caracLeres ou lLens de llsLa acelLos. ueve ser malor ou lgual a zero.
pattern ueflne uma expresso regular que denoLa o con[unLo de valores acelLos
tota|D|g|ts Lspeclflca o numero exLado de dlglLos acelLo. ueve ser malor do que zero
wh|teSpace Lspeclflca como espaos brancos (llne feeds, Labs, espaos, e carrlage reLurns) so LraLados
8esLrlngem o con[unLo de valores LexLuals posslvels para uma esLruLura de Llpo slmples
(elemenLo ou aLrlbuLo), baseando-se em um dos Llpos naLlvos oferecldos pela xML Schema

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
27 rof. Cullherme CassolaLo
emp|o de faceta - |nterva|o numr|co
<xs:e1ement name="dade">
<xs:smp1e1ype>
<xs:restrcton base="xs:nteger">
<xs:mn1nc1usve va1ue="18",>
<xs:maxLxc1usve va1ue="60",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="dade">
<xs:smp1e1ype>
<xs:restrcton base="xs:nteger">
<xs:mn1nc1usve va1ue="18",>
<xs:maxLxc1usve va1ue="60",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
28 rof. Cullherme CassolaLo
emp|o de faceta - enumerao de va|ores poss|ve|s
<xs:e1ement name="carro">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:enumeraton va1ue="^ud",>
<xs:enumeraton va1ue="6o11",>
<xs:enumeraton va1ue="8MW",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="carro">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:enumeraton va1ue="^ud",>
<xs:enumeraton va1ue="6o11",>
<xs:enumeraton va1ue="8MW",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
29 rof. Cullherme CassolaLo
emp|o de faceta - um n|co caractere de a
<xs:e1ement name="1etra">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="j^-2",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="1etra">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="j^-2",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
30 rof. Cullherme CassolaLo
emp|o de faceta - trs caracteres consecut|vos de a
(ma|scu|os)
<xs:e1ement name="ncas">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="j^-2j^-2j^-2",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="ncas">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="j^-2j^-2j^-2",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
31 rof. Cullherme CassolaLo
emp|o de faceta - trs caracteres consecut|vos de a
(ma|scu|os ou m|nscu|os)
<xs:e1ement name="ncas">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="ja-z^-2ja-z^-2ja-z^-2",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="ncas">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="ja-z^-2ja-z^-2ja-z^-2",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
32 rof. Cullherme CassolaLo
emp|o de faceta - qua|quer dos segu|ntes caracteres: " "y
ou "z
<xs:e1ement name="esco1ha">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="jxyz",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="esco1ha">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="jxyz",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
33 rof. Cullherme CassolaLo
emp|o de faceta - S d|g|tos numr|cos consecut|vos
<xs:e1ement name="d_produto">
<xs:smp1e1ype>
<xs:restrcton base="xs:nteger">
<xs:pattern va1ue="j0-9j0-9j0-9j0-9j0-9",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="d_produto">
<xs:smp1e1ype>
<xs:restrcton base="xs:nteger">
<xs:pattern va1ue="j0-9j0-9j0-9j0-9j0-9",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
34 rof. Cullherme CassolaLo
emp|o de faceta - zero ou ma|s ocorrnc|as de qua|squer |etras
de "a a "z (m|nscu|as)
<xs:e1ement name="1etras">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="{ja-z)*",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="1etras">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="{ja-z)*",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
33 rof. Cullherme CassolaLo
emp|o de faceta - uma ou ma|s ocorrnc|a de pares de |etras
onde a pr|me|ra |etra de cada par uma |etra est em a-z
(m|nscu|a) e a segunda |etra est em - (ma|scu|a)
<xs:e1ement name="pares">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="{ja-zj^-2)+",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="pares">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="{ja-zj^-2)+",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
C exemplo aclma acelLarla palavras como "pAlAv8a", mas no acelLarla "palavra" ou
"alavra" ou "ALAv8A"

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
36 rof. Cullherme CassolaLo
emp|o de faceta - um va|or de teto entre duas opes
<xs:e1ement name="sexo">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="masc|1em",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="sexo">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="masc|1em",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
C exemplo aclma equlvale (em vez de usar pattern) a Ler uma enumerao de valores Lal como:
<xs:enumeraton va1ue="masc",>
<xs:enumeraton va1ue="1em",>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
37 rof. Cullherme CassolaLo
emp|o de faceta - senha com prec|samente 8 caracteres
contendo |etras a-z (m|nscu|as) |etras - (ma|scu|as) e]ou
d|g|tos de 0-9
<xs:e1ement name="senha">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="ja-z^-20-9{8)",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>
<xs:e1ement name="senha">
<xs:smp1e1ype>
<xs:restrcton base="xs:strng">
<xs:pattern va1ue="ja-z^-20-9{8)",>
<,xs:restrcton>
<,xs:smp1e1ype>
<,xs:e1ement>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
38 rof. Cullherme CassolaLo
emp|o de faceta - tratamento de espaos em branco
<xs:smp1e1ype name="epacos_preservados">
<xs:restrcton base="xs:strng">
<xs:whteSpace va1ue="preserve",>
<,xs:restrcton>
<,xs:smp1e1ype>
<xs:smp1e1ype name="epacos_preservados">
<xs:restrcton base="xs:strng">
<xs:whteSpace va1ue="preserve",>
<,xs:restrcton>
<,xs:smp1e1ype>
valores posslvels para a faceLa do Llpo whteSpace:
preserve: fora o parser a manLer os espaos em brancos conforme preenchldos no xML
replace: subsLlLul Lodas as formas de espaos em branco (oe feeJs, tobs, espaos e
cottoqe tetotos) por espaos
collapse: faz Lodas as subsLlLules da opo "replace" e alnda colapsam sequnclas
conLlguas de espaos num unlco caracLere de espao, espaos lnlclals e flnals so deleLados

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
39 rof. Cullherme CassolaLo
emp|o de faceta - str|ng com prec|samente 8 caracteres
<xs:smp1e1ype name="str8">
<xs:restrcton base="xs:strng">
<xs:1ength va1ue="8",>
<,xs:restrcton>
<,xs:smp1e1ype>
<xs:smp1e1ype name="str8">
<xs:restrcton base="xs:strng">
<xs:1ength va1ue="8",>
<,xs:restrcton>
<,xs:smp1e1ype>

L|nguagem para Crgan|zao e 1ransf. de Dados para Web


1ecnologla em Anllse e uesenvolvlmenLo de SlsLemas
40 rof. Cullherme CassolaLo
emp|o de faceta - str|ng no m|n|mo S e no m|mo 8 caracteres
<xs:smp1e1ype name="strS-8">
<xs:restrcton base="xs:strng">
<xs:mnlength va1ue="S",>
<xs:maxlength va1ue="8",>
<,xs:restrcton>
<,xs:smp1e1ype>
<xs:smp1e1ype name="strS-8">
<xs:restrcton base="xs:strng">
<xs:mnlength va1ue="S",>
<xs:maxlength va1ue="8",>
<,xs:restrcton>
<,xs:smp1e1ype>