You are on page 1of 88

D

r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

Un model de date pentru <Web />
partea IV: validari XML

detalii in [TX, 102-130]
Tehnologii Web
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

Inteleptul te invata prin faptele sale,
nu prin cuvintele sale.


Chuang-Tzu
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

necesitati
Dorim ca informatiile marcate in XML
sa poata fi regasite, reutilizate si partajate
intre aplicatii
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

necesitati
O cerinta importanta este de a cunoaste:

elementele/atributele ce pot fi specificate
+
modul lor de structurare
e.g., ordinea, numarul minim/maxim de aparitii,...
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

necesitati
O cerinta importanta este de a cunoaste:

tipul continutului

exemplu: atributul align poate avea valorile
mutual exclusive left, right, center
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

necesitati
O cerinta importanta este de a cunoaste:

ce poate fi considerat valid si ce reprezinta eroare
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Grupuri de indivizi specifica vocabularul XML
(setul de elemente/atribute permise)
si regulile de marcare modelele structurale
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Grupuri de indivizi specifica vocabularul XML
(setul de elemente/atribute permise)
si regulile de marcare modelele structurale

uzual, grupurile reprezinta:
o companie, o industrie, persoane impartasind
interese comune,
dezvoltatori de instrumente de marcare,
un consortiu/organizatie non-profit
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Modelul structural se aplica unei clase de
documente XML, in vederea verificarii
via un analizor (procesor, parser XML)
a corectitudinii instantelor de documente
apartinand acelei clase
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Aspecte de interes:

numirea elementelor/atributelor
definirea regulilor de utilizare a acestora
specificarea structurii si continutului
definirea constrangerilor
oferirea unui set de conventii de numire
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Apare necesitatea specificarii
unui set de constringeri asociate documentelor
XML, astfel incat datele XML sa fie verificate
daca sunt valide sau nu din punct de vedere
structural ori al tipului continutului

D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Modalitatile de specificare a constrangerilor
se pot baza pe:
descrieri
reguli
sabloane
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Modalitatile de specificare a constrangerilor
se pot baza pe:
descrieri

exista un element <utilizator>
avand un atribut nume care are continutul...

DTD, XML Schema
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Modalitatile de specificare a constrangerilor
se pot baza pe:
reguli

orice element <utilizator> va avea un atribut nume,
iar continutul acestui atribut se va conforma regulii...

Schematron
vezi
suplimentul
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

solutie
Modalitatile de specificare a constrangerilor
se pot baza pe:
sabloane pattern-uri

structura documentelor din clasa utilizator trebuie
sa se potriveasca (match) conform urmatorului sablon...

RELAX NG
vezi
suplimentul
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

DTD Document Type Definition
scop + caracterizare
specificarea tipurilor de documente
exemple

D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd
Tipuri de documente
Document Type Definition (DTD)

specificare formala a tipurilor de documente
(constituienti & structura)
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd
Tipuri de documente
Document Type Definition (DTD)

specificare formala a tipurilor de documente
(constituienti & structura)
in spiritul
limbajelor formale
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd
Documentele XML pot avea sau nu un DTD atasat

intern sau extern documentului XML pe care-l valideaza
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd
Daca DTD-ul lipseste, documentul trebuie
sa respecte un numar minim de constrangeri

document bine formatat well formed
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd
Regulile sintactice de specificare
a meta-elementelor DTD provin de la SGML

DTD-ul poate exprima structura continutului,
indicatorii de aparitie, conectorii


detalii: http://www.w3.org/TR/REC-xml

D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd
Un DTD specifica un tip de document:

<!DOCTYPE element_radacina [
declaratii de elemente, atribute, entitati,...
]>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd
Un DTD specifica un tip de document:

<!DOCTYPE element_radacina [
declaratii de elemente, atribute, entitati,...
]>

<!DOCTYPE projects [
...
]>
exemplu:
lista proiectelor
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: elemente
<!ELEMENT projects (project+)>
<!ELEMENT project (title, desc?, stud, url?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT stud (#PCDATA)>
<!ELEMENT url (#PCDATA)>
coninut (neterm. & term.)
#PCDATA, EMPTY, ANY
* + ? indicatori de apariie
, | conectori
meta-
element
nume de
element
(neterminal)
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: elemente
Continutul unui element poate fi:

sir de caractere (#PCDATA parsed character data)

vid (EMPTY)

orice alt marcaj/sir de caractere (ANY)
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: elemente
Un element poate aparea:

o singura data numele elementului

de oricate ori, inclusiv niciodata (*)

macar o data (+)

de zero sau unu ori (?)
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: elemente
Ordinea aparitiei elementelor:

secventa (,)

alternativa (|)
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: atribute
<!ATTLIST projects
update CDATA #REQUIRED
>
<!ATTLIST project
class (A | B | C) "A"
>

tipul coninutului
CDATA, ID, ENTITY,...
enumerare de valori
elementul cruia
i este asociat
mod de apariie
#REQUIRED
#IMPLIED
#FIXED
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: atribute
Continutul unui atribut poate fi:

sir de caractere (CDATA character data)

identificator unic (ID)

referinta la un identificator (IDREF)

referinta la o entitate (ENTITY)

enumerare de valori
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: atribute
Un atribut poate fi declarat sa apara:

obligatoriu (#REQUIRED)

optional (#IMPLIED)

fix se foloseste o valoare a-priori specificata
(#FIXED)
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

<!ELEMENT html (head, body)>
<!ATTLIST html
id ID #IMPLIED
xmlns CDATA #FIXED 'http://www.w3.org/1999/xhtml'>
<!ELEMENT img EMPTY>
<!ATTLIST img
src CDATA #REQUIRED
alt CDATA #REQUIRED
height CDATA #IMPLIED
width CDATA #IMPLIED>
<!ELEMENT table
(caption?, (col* | colgroup*), thead?, tfoot?, (tbody+ | tr+))>
<!ELEMENT caption #PCDATA>
<!ELEMENT thead (tr)+>
<!ELEMENT tfoot (tr)+>
<!ELEMENT tbody (tr)+>
<!ELEMENT colgroup (col)*>
<!ELEMENT col EMPTY>
<!ELEMENT tr (th | td)+>

fragment din DTD-ul
specificand gramatica
documentelor HTML
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: entitati
Interne analizate text expandat de analizor
<!ENTITY busaco "Sabin Buraga">
<coordonator>&busaco;</coordonator>
Externe analizate ca mai sus,
dar se declara intr-un fisier extern
Interne cu parametri folosite doar in DTD
Predefinite
<!ENTITY quot "&#34;">
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: entitati
Exemplu de specificare a entitatilor interne cu parametri:

<!ENTITY % heading "h1 | h2 | h3 | h4 | h5 | h6">
<!ENTITY % lists "ul | ol | dl">
<!ENTITY % blocktext "pre | hr | blockquote | address">
<!ENTITY % block "p | %heading; | div | %lists; |
%blocktext; | fieldset | table">
conform DTD-ului
pentru HTML
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: validare
O instanta de document trebuie sa aiba atasata
o declaratie a tipului caruia ii apartine:

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE projects SYSTEM "projects.dtd">
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: validare
Validarea documentului se realizeaza
prin intermediul unui analizor procesor, parser XML
(Apache Xerces, libxml, MSXML etc.)
sau utilitar
(OpenSP, <oXygen/>, xmllint, XML Nanny,)
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: validare
validarea unui document XML via <oXygen /> XML Editor
pe baza Apache Xerces
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

dtd: demo
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

XML Schema
scop + caracterizare
definirea unei scheme de validare
XML Schema versus DTD
utilizari
viitor

D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema
Recomandare a Consortiului Web (2001, 2004)

XML Schema Primer
http://www.w3.org/TR/xmlschema-0/
XML Schema Structures
http://www.w3.org/TR/xmlschema-1/
XML Schema Data Types
http://www.w3.org/TR/xmlschema-2/
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema
Scop:
validarea documentelor XML,
folosind sintaxa XML


se utilizeaza spatiul de nume definit de
http://www.w3.org/2001/XMLSchema
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema
Schema

specificatie formala a gramaticii asociate
unui document XML
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema
Schema

specificatie formala a gramaticii asociate
unui document XML

flexibilitate sporita fata de DTD

stocata extern intr-un fisier XML .xsd
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema
Pentru a i se putea fi verificata validitatea,
o instanta a unei clase de documente XML
trebuie sa aiba asociata o schema XML
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema
O schema defineste o clasa de documente XML
conformandu-se unui model structural

va specifica modul de aparitie si tipurile de date
pe care le pot lua valorile constructiilor XML
e.g., elemente, atribute etc.
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema
Defineste un sistem de tipuri de date
in termenii infoset-ului XML
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: utilizari
Verificarea tipurilor de date
in contextul bazelor de date (relationale),
masinilor virtuale (JVM, CLR) etc.
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: utilizari
Serializarea automata a datelor
+
Invocarea la distanta a metodelor

RMI (Remote Method Invocation), protocolul SOAP
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: utilizari
Generarea si editarea inteligenta de cod-sursa
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: utilizari
Validatoare generale de date
(e.g., validarea formularelor)
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

exemplu de schema XML definind un cuprins de carte
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: definirea unei scheme
Elementul radacina:
<xsd:schema>
Definirea/instantierea unui element:
<xsd:element>
Definirea/instantierea unui atribut:
<xsd:attribute>
Valorile permise pentru un element/atribut
apartin unui tip de date simplu sau complex:
<xsd:SimpleType>, <xsd:ComplexType>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri
Fiecare instanta de element trebuie sa apartina
unei clase (tip) de elemente

<element name="nume" type="tip" />
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri
Tipul poate fi:

simplu

nu permite ca un element sa includa
alte elemente si nici sa aiba asociate atribute
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri
Tipul poate fi:

complex

permite ca elementele sa cuprinda
alte elemente (reguli de aparitie)
si sa aiba asociate atribute

D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri
Elementele de tip complex contin:
declaratii de elemente
<element name="nume" type="tip" />

referinte la elemente definite
<element ref="nume" reguli_aparitie="val" />

declaratii de atribute
<attribute name="nume" type="tip" />
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri
Tipurile complexe nu pot fi utilizate
pentru a specifica tipurile valorilor atributelor
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri
Valorile de tip simplu sunt predefinite
sau derivate din cele predefinite
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri predefinite
Numerice: byte, unsignedByte, hexBinary, integer,
positiveInteger, negativeInteger, unsignedInt,
long, decimal, float, double,
Logice: boolean
Data & timp: time, dateTime, duration, date, gYear,
Siruri: string, token, Name, QName etc.
URI: anyURI
Constructii XML: ID, IDREF, ENTITY,


detalii: www.w3.org/TR/xmlschema-2
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri
Definirea de tipuri simple derivate
din cele predefinite se face via <xsd:restriction>
care poate specifica:
un interval:
<xsd:minInclusive>, <xsd:maxInclusive>
<xsd:minExclusive>, <xsd:maxExclusive>
un model (pattern):
<xsd:pattern> (conventii privind regex din Perl)
o lista de valori:
<xsd:enumeration>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri exemple
Tipul desemnind numarul de capitol
un intreg in intervalul [0, 9]


<xsd:simpleType name="nrcapType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="9" />
</xsd:restriction>
</xsd:simpleType>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri exemple
Tipul desemnind numarul de capitol
un intreg in intervalul [0, 9]






reprezentarea grafica via <oXygen />


D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri exemple
Tipul specificand o adresa de e-mail


<xsd:simpleType name="addrType">
<xsd:restriction base="xsd:string">
<xsd:pattern value=".+@.+\.(.){2,4}" />
</xsd:restriction>
</xsd:simpleType>
expresie
regulata Perl
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: tipuri
Pentru tipurile simple pot fi definite
constrangeri suplimentare facets:
lungime: <xsd:length>
lungime minima: <xsd:minLength>
lungime maxima: <xsd:maxLength>
model (pattern): <xsd:pattern>
multime de valori permise: <xsd:enumeration>
controlul spatiilor albe: <xsd:whiteSpace>
numarul de cifre: <xsd:totalDigits>
numarul de cifre zecimale: <xsd:fractionDigits>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: reguli de aparitie
Reguli (restrictii) de aparitie
a unei instante de element:

minOccurs="numar"
maxOccurs="numar | unbounded"
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: reguli de aparitie
Reguli de aparitie a unui atribut:

use="required | optional | prohibited"
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: continut
Valoarea predefinita a unui atribut
se specifica prin atributul default

Stabilirea de valori particulare
pentru elemente sau atribute
se realizeaza via atributul fixed
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: continut
Continutul unui element derivarea via <xsd:extension>

Dorim elementului <autor> sa atasam atributul email
Initial: <xsd:element name="autor" type="xsd:string" />
Acum:
<xsd:element name="autor">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="email" type="addrType" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: continut
Continutul unui element derivare via <xsd:extension>

D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: continut
Continutul unui element derivare via <xsd:restriction>
(se folosesc constrangeri)

Titlul unui capitol va avea lungime de maxim 50 de caractere:

<xsd:element name="titlu">
<xsd:complexType>
<xsd:simpleContent>
<xsd:restriction base="titluType">
<xsd:maxLength value="50" />
</xsd:restriction>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: continut
Continutul unui element

specificarea unui continut mixt:

<xsd:complexType mixed="true">
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: continut
Continutul unui element

specificarea unui continut vid
se realizeaza prin <xsd:complexType>
care nu va contine decat declaratii de atribute
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: continut
Modele ale continutului

alternativa: <xsd:choice>
secventa: <xsd:sequence>
grupare: <xsd:group>
aparitie in orice ordine: <xsd:all>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: continut
Exemplu: secventa de sub-elemente ale unui capitol

<!-- elementele trebuie sa apara in ordinea: -->
<xsd:sequence>
<xsd:element name="nume"
type="xsd:string"/>
<xsd:element ref="autor"
minOccurs="1"
maxOccurs="unbounded"/>
<xsd:element name="descriere"
type="xsd:string"/>
</xsd:sequence>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

reprezentarea grafica a schemei XML definind structura
documentului sitemap.xml folosit la indexarea unui sit Web
http://www.sitemaps.org/
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: alte facilitati
Legaturi intre constructii XML:
identificatori (de tip ID) si
referinte la identificatori (IDREF)

Elemente/atribute cu aparitii unice: <xsd:unique>

Valori nil pentru elemente: nillable="true"

avansat
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: alte facilitati
Relatii intre doua multimi de valori
(posibil de tipuri diferite)

un element/atribut poate fi constrans sa fie valid
ddaca valoarea lui se afla in multimea valorilor
altui element/atributspecificarea de relatii intre chei

se folosesc <xsd:key> si <xsd:keyRef>
vezi exemplele

avansat
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: alte facilitati
Suportul pentru abstractizare

se recurge la atributul abstract="true"

elementele/atributele declarate ca fiind abstracte
nu pot fi utilizate intr-o instanta de document

pentru a putea fi folosite trebuie derivate
via o schema suplimentara prin <xsd:include>

avansat
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: alte facilitati
Specificarea unor elemente/atribute generice
(ale altor tipuri de documente) se realizeaza
prin elementele <xsd:any> si <xsd:anyAttribute>

avansat
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: documentarea schemelor
Se foloseste elementul <xsd:annotation>
care poate include elementele:
<xsd:documentation> pentru utilizatorii umani
<xsd:appInfo> destinat instrumentelor de procesare

apare ca prim element-copil al unor elemente
precum <xsd:schema>, <xsd:element>, <xsd:attribute>
sau <xsd:simpleType>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

<xs:element name="ul">
<xs:annotation>
<xs:documentation>O lista neordonata</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="li"/>
</xs:sequence>
<!-- poate include un grup de atribute -->
<xs:attributeGroup ref="attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="attrs">
<xs:attributeGroup ref="coreattrs"/> <!-- atribute de baza: id, class,-->
<xs:attributeGroup ref="i18n"/> <!-- privind limba: lang -->
<xs:attributeGroup ref="events"/> <!-- evenimente: onclick etc. -->
</xs:attributeGroup>
fragment din schema XML referitoare la HTML
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: procesul de validare
In vederea validarii, o instanta de document trebuie
sa declare un spatiu de nume avand un URI
ce va desemna schema utilizata:

<s:radacina xmlns:s="uri_schema"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"uri_schema doc_schema.xsd">

</s:radacina>
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: procesul de validare
In cadrul definitiei schemei,
prin elementFormDefault si attributeFormDefault
se poate specifica faptul ca
elementele/atributele sa fie prefixate obligatoriu
de un spatiu de nume
vezi exemplele

avansat
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: demo
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

XML Schema versus DTD
Moduri diferite de specificare formala
a structurii si continutului documentelor XML

Multitudine de tipuri de date XML Schema predefinite

Schemele pot fi deschise (extinse)

Declaratiile spatiilor de nume nu pot fi exprimate in DTD

Schemele sunt mai usor de validat/procesat
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

xschema: viitor
XML Schema 1.1

recomandare W3C (5 aprilie 2012)

structuri:
http://www.w3.org/TR/xmlschema11-1/

tipuri de date:
http://www.w3.org/TR/xmlschema11-2/

avansat
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

rezumat
Validarea documentelor XML
prin DTD si XML Schema
D
r
.

S
a
b
i
n

B
u
r
a
g
a

w
w
w
.
p
u
r
l
.
o
r
g
/
n
e
t
/
b
u
s
a
c
o

?

You might also like