Sunteți pe pagina 1din 33

Validarea Documentelor XML - XML Schema

Mihai Gabroveanu
Facultatea de S, tiint, e Exacte

Mihai Gabroveanu

Validarea Documentelor XML

Cuprins
1
2

Introducere
XML Schema
Referirea la o XML Schema
Definirea unui fisier XML Schema
Tipuri simple
Definirea atributelor
Definirea restrict, iilor

Definirea elementelor complexe


Definirea elementelor vide
Asignarea de nume tipurilor complexe
Extinderea unui tip

Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare
Bibliografie
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Istoric

XML Schema
XML schema permite definirea regulilor si relatiilor intre
elemente si attribute
Standard init, iat de Microsoft
02 Mai 2001 - XML Schema Language devine recomndare a
W3C

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

XML Schema
XML Schema
defineste elementele care pot sa apara intr-un document
defineste atributele pe care pot sa le aiba elementele dintr-un
document
defineste care elemente au copii si care sunt acestia
defineste ordinea copiilor unui element
defineste numarul de copii
defineste daca un element este vid sau poate contine un text
defineste tipurile elementelor si atributelor
defineste valorile implicite si fixe ale elementelor si atributelor
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Referirea la o XML Schema


Sintaxa declararii unui DTD intern este urmatoarea:
<?xml version="1.0"?>
<elementRadacina
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="url.xsd">
...
</elementRadacina>

unde:
url.xsd = Locatia unde poate fi gasita definitia schemei
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Referirea la o XML Schema - Exemplu


Referirea la XML Schema CARTE.xsd
<?xml version="1.0">
<CARTE
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="CARTE.xsd" >
<TITLU>XML Bible</TITLU>
<AUTOR>Elliotte Rusty Harold</AUTOR>
<EDITURA> IDG Books Worldwide</EDITURA>
<AN_APARITIE>2002</AN_APARITIE>
</CARTE>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea unui fisier XML Schema


Sintaxa definirii unui fisier XML Schema este urmatoarea:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" [1]
elementFormDefault="qualified">
[2]
...
</xs:schema>

unde:
1

indica faptul ca elementele si tipurile de date utilizate in schema


provin din namespace-ul http://www.w3.org/2001/XMLSchema.
De asemenea, specifica ca aceste elemente si tipuri de date trebuie
sa fie prefixate cu xs

indica ca toate elemente XML utilizate trebuie sa fie calificate de


namespace
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea unui fisier XML Schema - Exemplu


Referirea la XML Schema PERSOANA.xsd
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" >
<xs:element name="PERSOANA">
<xs:complexType>
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="PRENUME" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Tipuri simple

Un element se numeste element simplu daca:


contine numai informatie text (date caracter)
nu are atribute
nu contine alte atribute
nu este vid

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea unui element simplu


Sintaxa definiri unui element simplu este urmatoarea:
<xs:element name="nume" type="tip"/>
sau
<xs:element name="nume" type="tip" default="val-implicita"/>
sau
<xs:element name="nume" type="tip" fixed="val-fixa"/>

unde:
nume este numele elementului
tip este tipul valorii elementului
val-implicita valoare implicita este atribuita unui element atunci cand
nu este specificata nici o alta valoare valoare
val-fixa valoare fixa este atribuita de asemenea automat unui
element si nu putem specifica nici o alta valoare in afara
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Tipuri predefinite in XML Schema

Tipuri predefinite in XML Schema:


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

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Elemente simple - Exemplu


Consideram urmatoarele elemente simple XML:
<NUME>Popescu Maria</NUME>
<VARSTA>21</VARSTA>
<DATA_NASTERII>1985-09-23</DATA_NASTERII>
<CETATENIA>romana</CETATENIA>

Definitiile corespunzatoare in XML Schema sunt:


<xs:element
<xs:element
<xs:element
<xs:element

name="NUME" type="xs:string"/>
name="VARSTA" type="xs:integer" default="0"/>
name="DATA_NASTERII" type="xs:date"/>
name="CETATENIA" type="xs:string" fixed="romana"/>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea atributelor
Elementele simple nu pot avea atribute. Atributul insusi este
declarat intotdeauna ca un tip simplu.
Sintaxa definiri unui atribut este urmatoarea:
<xs:attribute name="nume" type="tip" />
sau
<xs:attribute name="nume" type="tip" default="val-implicita" />
sau
<xs:attribute name="nume" type="tip" fixed="val-fixa" />

unde:
nume este numele atributului
tip este tipul valorii
val-implicita valoare implicita a atributului
val-fixa valorea Mihai
fixa Gabroveanu
a atributuluiValidarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea atributelor (cont.)


Sintaxa definiri unui atribut optional/obligatoriu este:
<xs:attribute name="nume" type="tip" use="optional" />
respectiv
<xs:attribute name="nume" type="tip" use="required" />

Consideram urmatorul element cu un atribut:


<PERSOANA sex="masculin">Garcea Ion</PERSOANA>

Definitia atributului in XML Schema este:


<xs:attribute name="sex" type="xs:string" use="required"/>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea restrict, iilor

Sintaxa generala a definirii acestor restrictii este urmatoare:


<xs:element name="nume"> (sau xs:attribute)
<xs:simpleType>
<xs:restriction base="tip">
... restrictii ...
</xs:restriction>
</xs:simpleType>
</xs:element>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea restrict, iilor - Exemplu


Definirea restrictiilor pentru NOTA unui student:
<xs:element name="NOTA">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1">
<xs:maxInclusive value="10">
</xs:restriction>
</xs:simpleType>
</xs:element>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea elementelor complexe


Element complex
Un element se numeste element complex daca contine alte
element si/sau atribute. De asemenea elementele vide sunt
considerate elemente complexe
Sintaxa definirii unui element complex:
<xs:element name="nume">
<xs:complexType>
... descrierea tipului complex ...
</xs:complexType>
</xs:element>
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea elementelor complexe - Exemplu


Sintaxa definirii unui element complex:
<xs:element name="PERSOANA">
<xs:complexType>
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="PRENUME" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:sequence> spune ca elementele NUME si PRENUME trebuie sa
apara in acesta ordine
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Definirea elementelor vide


Sa consideram urmatorul element:
<PRODUS cod="1345" />
Sintaxa definirii elementului PRODUS in XML Schema:
<xs:element name="PRODUS">
<xs:complexType>
<xs:attribute name="cod" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Asignarea de nume tipurilor complexe

Unui tip complex ii putem asigna un nume astfel:


<xs:complexType name="nume-tip">
....
</xs:complexType>
Referirea la tipul definit se face astfel:
<xs:element name="nume" type="nume-tip-declarat"/>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Asignarea de nume tipurilor complexe - Exemplu


Definirea tipui PERSOANA:
<xs:complexType name="PERSOANA">
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="PRENUME" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Referirea la tipul definit se face astfel:
<xs:element name="STUDENT" type="PERSOANA"/>
<xs:element name="PROFESOR" type="PERSOANA"/>
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Extinderea unui tip

Putem construi un tip complex prin extinderea unui alt tip complex:
<xs:complexType name="tip-nou">
<xs:complexContent>
<xs:extension base="alt-tip">
... caracteristici noi...
</xs:extension>
</xs:complexContent>
</xs:complexType>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatorul de secventa xs:sequence


Pentru a indica faptul ca elementle din cadrul unui tip complex
trebuie sa apara intr-o anumita ordine folosim xs:sequence:
Definirea elementului PERSOANA:
<xs:element name="PERSOANA">
<xs:complexType>
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="PRENUME" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatorul all xs:all


Pentru a declara o multimea de elemente ce trebuie sa apara
intr-un tip complex in care ordinea nu conteaza vom utiliza
constructia xs:all:
Definirea elementului PERSOANA:
<xs:element name="PERSOANA">
<xs:complexType>
<xs:all>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="PRENUME" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatorul de alegere xs:choice


Indicatorul xs:choice permite definirea de tipuri complexe in care
unul din elementele dintr-o multime poate sa apara:
Definirea elementului CARTE:
<xs:element name="CARTE">
<xs:complexType>
<xs:choice>
<xs:element name="AUTOR" type="persoana"/>
<xs:element name="EDITOR" type="persoana"/>
</xs:choice>
</xs:complexType>
</xs:element>
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatorul maxOccurs
Indicator maxOccurs specifica numarul maxim de aparitii pentru un
element:
Definirea elementului PERSOANA:
<xs:element name="PERSOANA">
<xs:complexType>
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="NUME-COPIL" type="xs:string"
maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
In exemplu anterior elementul NUME-COPIL trebuie sa apara cel putin
odata (valoarea implicita pentru minOccurs este 1 implicit) si de maxim
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatorul minOccurs
Indicator minOccurs specifica numarul maxim de aparitii pentru un
element:
Definirea elementului PERSOANA:
<xs:element name="PERSOANA">
<xs:complexType>
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="NUME-COPIL" type="xs:string"
minOccurs="0" maxOccurs="5"/>
</xs:sequence>
</xs:complexType>
</xs:element>
In exemplu anterior elementul NUME-COPIL poate sa nu apara deloc sau
de maxim 5 ori in secventa ce descrie elementul PERSOANA.
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatori de grupare a elementelor

Sunt utilizati pentru multimi de elemente inrudite:


Sintaxa definirii grupurilor de elemente:
<xs:group name="nume-grup">
...
</xs:group>
in cadrul unui grup putem defini elemente all, choice sau
sequence.

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatori de grupare a elementelor -Exemplu


Definirea elementului PERSOANA:
<xs:group name="GRUP-PERSOANA">
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="PRENUME" type="xs:string"/>
<xs:element name="DATA-NASTERE" type="xs:date"/>
</xs:sequence>
</xs:group>
<xs:element name="PERSOANA" type="INFO-PERSOANA"/>
<xs:complexType name="INFO-PERSOANA">
<xs:sequence>
<xs:group ref="GRUP-PERSOANA"/>
<xs:element name="TARA" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatori de grupare a atributelor

Sintaxa definirii grupurilor de atribute:


<xs:attributeGroup name="nume-grup">
...
</xs:attributeGroup>
in cadrul unui grup putem defini elemente all, choice sau
sequence.

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Referirea la o XML Schema


Definirea unui fisier XML Schema
Tipuri simple
Definirea elementelor complexe
Indicatori de ordine
Indicatori de aparitie
Indicatori de grupare

Indicatori de grupare a atributelor -Exemplu


Definirea unui grup de atribute:
<xs:attributeGroup name="GRUP-PERSOANA">
<xs:attribute name="nume" type="xs:string"/>
<xs:attribute name="prenume" type="xs:string"/>
<xs:attribute name="data-nasterii" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="PERSOANA" type="INFO-PERSOANA"/>
<xs:complexType name="INFO-PERSOANA">
<xs:attributeGroup ref="GRUP-PERSOANA">
</xs:complexType>

Mihai Gabroveanu

Validarea Documentelor XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Bibliografie
XML
XML Schema Part 0: Primer Second Edition W3C
Recommendation 28 October 2004, David C. Fallside, Priscilla
Walmsley
XML Schema Part 1: Structures Second Edition W3C
Recommendation 28 October 2004, Henry S. Thompson,
David Beech, Murray Maloney, Noah Mendelsohn
XML Schema Part 2: Datatypes Second Edition W3C
Recommendation 28 October 2004, Paul V. Biron, Kaiser
Permanente, Ashok Malhotra
Elliotte Rusty Harold, XML Bible. IDG Books Worldwide, Inc,
919 E. Hillsdale Blvd., Suite 400, Foster City, CA 94404
http://www.w3schools.com/schema/
XML Schema
Tutorial
Mihai Gabroveanu
Validarea Documentelor
XML

Introducere
XML Schema
Bibliografie
Intrebari si Raspunsuri

Va multumesc pentru atentia acordata

Intrebari?
Comentarii?

Mihai Gabroveanu

Validarea Documentelor XML

S-ar putea să vă placă și