Sunteți pe pagina 1din 97

Utilizarea XML in baze de date

INTRODUCERE
Formatul de date XML devine formatul comun acceptat n industrie pentru scim!ul
de informa"ii dintre diverse sisteme etero#ene$ Din acest motiv% este important ca o !a&' de
date s' fie capa!il' s' stoce&e informa"iile nu doar n formatele tradi"ionale% rela"ionale% ci (i
n format XML$ )toc*nd datele XML n format nativ se c*(ti#' foarte mult n performan"'%
aceasta materiali&*ndu+se n costuri reduse$ Un plus de performan"' la o tenolo#ie de !a&e
de date nseamn' o infrastructur' redus'% servere cu mai pu"ine procesoare% deci un sistem
informatic ceva mai ieftin% costuri mai mici pentru licen"iere% deci per total o economie de
!ani$
)tandardul industrial al datelor n format XML pre&int' o serie de avanta,e (i
de&avanta,e$ -vanta,ul ma,or este acela c' este adoptat de to"i produc'torii de tenolo#ie din
industrie% dar n scim! are de&avanta,ul c' este un format nu foarte eficient din punct de
vedere al stoc'rii datelor$ De aceea devine foarte util ca !a&a care stocea&' aceste date sa
ai!' capa!ilit'"i de compresie% care s' duc' la sc'derea spa"iului (i resurselor de stocare
necesare pentru a p'stra date n format XML$
Lucrarea de fa"' (i propune s' pre&inte n capitolele sale c*teva noi direc"ii de
de&voltare n domeniul !a&elor de date% modelul de date semistructurat (i tenolo#ia XML ca
o nou' !a&' de date$
Capitolul I pre&int' necesitatea apari"iei modelului semistructurat al datelor% datorit'
nevoii de intero#are a unor surse de date care nu au o scem' predefinit' sau a unor date care
provin din surse diferite (i au sceme diferite$ Modelul semistructurat al datelor repre&int'
scema .tipul% structura/ (i instan"a .valoarea/ datelor n mod uniform% permi"*nd intero#area
lor simultan' spre deose!ire de modelele de date conven"ionale% care diferen"ia&' ntre cele
dou' tipuri de informa"ie$
Capitolul II detalia&' modelul semistructurat al datelor definind conceptul de date
neconven"ionale din mai multe perspective (i pe cel de date semistructurate pre&ent*nd
avanta,ele acestui tip de date% modelarea acestor date (i lim!a,ele de intero#are a acestora% (i
Pagina 1 din 97

pre&int' n detaliu tipul de date M0E1+23 ca suport pentru inte#rarea datelor n aplica"ii
multimedia distri!uite$
Capitolul III pre&int' le#'tura dintre tenolo#ia XML (i !a&ele de date ncerc*nd s'
clarifice n ce m'sur' este XML+ul o !a&' de date% repre&entarea datelor (i documentelor%
stocarea (i recuperarea datelor% stocarea datelor n !a&e de date native XML% #enerarea
scemelor XML din sceme rela"ionale (i invers% stocarea documentelor n sistemul de fi(iere
(i n 4LO4+uri% detalia&' !a&ele de date native XML% (i pre&int' no"iunile de DOM
.Document O!,ect Model/ persistent (i sisteme de mana#ement ale con"inuturilor$
Capitolul I5 se ocup' de construirea documentelor XML pre&ent*nd sinta6a XML%
descrierea de voca!ulare noi cu XML% avanta,ele defini"iei tipurilor documentului%
com!aterea de&avanta,elor defini"iei tipurilor documentului% definirea unui document XML
ca ntre#% declara"ia XML% documentele autonome% construirea unui document XML%
declara"ia tipului documentului (i pre&int' c*teva aplica"ii din lumea real' a declara"iei tipului
documentului$
Capitolul 5 const' n pre&entarea aplica"iei 7 ma#a&inul virtual 8ElectronX9 + (i
pre&int' scopul acestei aplica"ii% cerin"ele minime ard:are (i soft:are ale aplica"iei%
func"ionalit'"ile de !a&' ale acestui :e!site% proiectarea !a&ei de date con"in*nd scema
conceptual' a structurii !a&ei (i scema fi&ic' a fiec'rei ta!ele% implementarea codului n care
sunt e6plicate fi(ierele cele mai importante ale aplica"iei cu e6emplific'ri din codul surs'% un
manual de utili&are al aplica"iei n care e descris modul de func"ionare al acesteia (i conclu&ii
asupra aplica"iei$
C-0ITOLUL I
NOI MODELE DE D-TE ;I -0LIC-<IILE LOR
3$3 Intero#area =orld+=ide+=e!+ului
E6ist' surse de date% ca de pild' =orld+=ide+=e!+ul% pe care am dori s' le intero#'m
ca !a&e de date% dar care nu pot fi constr*nse de o scem'$ Ma,oritatea intero#'rilor :e!+ului
folosesc tenici de re#'sire a informa"iei pentru a #'si pa#ini dup' con"inut$ E6ist' ns'
pu"ine posi!ilit'"i de formulare a intero#'rilor n vederea e6ploat'rii structurii :e!+ului (i%
deoarece aceasta nu este conform' cu nici un model de date standard% este necesar' o metod'
de descriere a acestei structuri$
Modelul de date semistructurat a fost propus n vederea satisfacerii acestei necesit'"i$
Ideea central' n modelul semistructurat este de a repre&enta datele su! forma unui #raf
Pagina 2 din 97

eticetat$ )tructura documentelor iperte6t este capturat' interpret*nd arcele #rafului drept
le#'turi$ O repre&entare posi!il' este cea introdus' n proiectul Un>L?3@$ Eticetele arcurilor
pot fi at*t valori .de tip ntre#% (ir de caractere (i alte tipuri de !a&'% precum (i de tip de date
a!stract% ca video% audio% etc$/ c*t (i nume de atri!ute .Film% Titlu% Re#i&or% -ctor/% etc$
model*nd de e6emplu cunoscuta !a&' de date cinemato#rafic' IMD4 ?2@$
E6ist' numeroase lim!a,e de intero#are pentru modelul semistructurat$ Toate aceste
lim!a,e sunt construite pe !a&a ideii de e6presii asociate c'ilor .pat e6pressions/$ -cestea
sunt e6presii re#ulate ce e6prim' c'i #enerice n #raful eticetat% permi"*nd astfel traversarea
#rafului (i colec"ionarea tuturor eticetelor ce satisfac o anumit' condi"ie de selec"ie$
Lim!a,ele semistructurate pot fi clasificate n dou' cate#orii% dup' strate#ia de calcul
adoptat'$ 0rima cate#orie% de&voltat' oarecum ad+oc% se !a&ea&' pe modelarea #rafurilor n
modelul rela"ional (i apoi pe intero#area lor ntr+un lim!a, rela"ional de tip )>L$ C*teva
e6emple pre&entate n literatur' sunt ?A@% ?B@% ?C@% ?D@% ?E@
- doua cate#orie porne(te de la un lim!a, !a&at pe o no"iune formal' de calcul cu date
semistructurateF lim!a,ul Un>L este repre&entantul acestei cate#orii ?3@$ -cest lim!a,
porne(te de la recursivitatea structural'% forma natural' de recursivitate asociat' cu tipul de
date #rafuri eticetate$ Datorit' !a&ei sale teoretice% Un>L este capa!il de restructur'ri
comple6e% n ad*ncime% spre deose!ire de lim!a,ele din prima cate#orie% care se limitea&' la
scoaterea la suprafa"' a datelor din #raf% f'r' ns' a crea noi structuri$
-ceast' capacitate de restructurare st' la !a&a proiectului )TRUDEL?G@ care propune
lim!a,ul )tru>L de #estiune a sit+urilor de :e!$ Un alt avanta, al !a&ei teoretice a lim!a,elor
Un>L (i )tru>L este posi!ilitatea efectu'rii optimi&'rilor specifice acestui nou model de
date$ Lim!a,ele din prima cate#orie pot !eneficia doar de optimi&'rile specifice modelului
rela"ional% deci de&voltate pentru alt model de date (i n consecin"' nu at*t de folositoare$
3$2 Inte#rarea surselor de date etero#ene
Inte#rarea datelor provenind din surse etero#ene .cu sceme disparate sau% mai #rav%
modelate diferit/% este un domeniu de cercetare care% de(i consacrat de mai !ine de un
deceniu% continu' s' r'm*n' n centrul aten"iei multor cercet'tori$ Cercetarea n acest
domeniu este motivat' de a!sen"a unui model de date atotcuprin&'tor% fapt ce n#reunea&'
de&voltarea de soft:are care converte(te date ntre dou' modele diferite$
O complica"ie adi"ional' este repre&entat' de faptul c' ma,oritatea datelor stocate
electronic nu se afl' n !a&e de date conven"ionale% ci n sisteme de fi(iere% pro#rame de
!i!liotec'% de po(t' electronic'% foi de calcul etc$% care pre&int' capacit'"i de intero#are
limitate$
Pagina 3 din 97

Ultima o!serva"ie a repre&entat punctul de plecare al proiectului Tsimmis ?H@?3I@ de la
)tanford$ 0roiectul Tsimmis (i propune inte#rarea at*t a surselor de date care sunt conforme
cu modelele de date standard .rela"ional% orientat pe o!iecte/% c*t (i a surselor de date cu
capacit'"i de intero#are limitate$ -ceste surse neconven"ionale sunt mpacetate n a(a+numi"i
:rappers .am!ala,e/$ Un astfel de am!ala, asi#ur' interfa"a ntre sursa de date cu capacit'"i
de intero#are limitate (i aplica"ia care o intero#ea&'$ -plica"ia trimite c'tre surs' intero#'ri
ntr+un lim!a, e6presiv cum ar fi )>L sau O>L (i a(teapt' re&ultatul ntr+un format numit
OEM .O!,ect E6can#e Model/$
OEM folose(te #rafuri eticetate% ca structur' de date% care capturea&' ma,oritatea
datelor folosite n aplica"ii de !a&e de date$ Jn acela(i timp% toate celelalte structuri de date pot
fi codificate ca #rafuri OEM$
Rolul am!ala,ului const' nF interceptarea intero#'rii (i identificarea acelor p'r"i ale
acesteia care pot fi efectuate de c'tre surs'% translatarea acestor p'r"i n lim!a,ul specific
sursei% recep"ionarea (i prelucrarea re&ultatelor intermediare n vederea reconstituirii
re&ultatului intero#'rii ori#inale% codificarea re&ultatului final n formatul OEM (i
transmiterea acestuia c'tre aplica"ie$
Evident% dac' intero#area ori#inal' este prea comple6'% este posi!il s' nu poat' fi
efectuat' pornind de la capa!ilit'"ile limitate ale sursei$ -m!ala,ul detectea&' aceast' situa"ie
(i anun"' sursa c' nu i poate satisface cererea$ Cu c*t cre(te capacitatea de evaluare a
intero#'rilor n cadrul am!ala,ului .de e6emplu% capacitatea de a efectua opera"ii de tip ,oin%
proiec"ii% selec"ii% etc$/% cu at*t se e6tinde clasa de intero#'ri pe care le poate satisface
com!ina"ia surs'+am!ala,$
Un proiect similar% cu scopul intero#'rii surselor de date structurate din :e! este ?3A@$
)e remarc' similaritatea dintre modelul OEM (i cel semistructurat$ Jntr+adev'r% Lore
?33@%?32@ este un sistem de intero#are a datelor semistructurate% foarte similar cu Un>L%
utili&*nd un model de date inspirat de OEM$
3$A Navi#are n Internet
Jn anumite situa"ii este avanta,os s' privim !a&ele de date conven"ionale ca fiind
semistructurate$ Un e6emplu este activitatea de navi#are n Internet$
Jn #eneral% utili&atorul nu poate intero#a o !a&' de date f'r' a+i cunoa(te scema$ Din
nefericire ns'% aceasta este adeseori #reu de n"eles% datorit' m'rimii e6a#erate .&eci de
ta!ele% de e6emplu/ (i a terminolo#iei opace% nestandard% folosite de c'tre proiectan"ii !a&ei
de date$
Pagina 4 din 97

Descifrarea scemei ar fi considera!il u(urat' de facilitatea de a intero#a datele av*nd
doar o n"ele#ere par"ial' a structurii lor$ De e6emplu% n ca&ul !a&ei de date cinemato#rafice
din =orld+=ide =e!?2@% urm'toarele intero#'ri ar fi de folosF
Jn care atri!ut #'sim (irul de caractere Casa!lancaK
E6ist' n !a&a de date ntre#i mai mari dec*t 23DK
Ce o!iecte din !a&a de date au un atri!ut al c'rui nume ncepe cu actK
;i n acest domeniu% modelul semistructurat se dovede(te a fi folositor$ )pre deose!ire
de modelele de date conven"ionale% care diferen"ia&' ntre scema .tipul% structura/ (i instan"a
.valoarea/ datelor% modelul de date semistructurat repre&int' cele dou' tipuri de informa"ie n
mod uniform% permi"*nd intero#area lor simultan'$ Din acest motiv% datele semi+structurate se
numesc (i autodescriptive$
?3@ pre&int' un ele#ant lim!a, de intero#are care permite e6primarea concis' a acestor
intero#'ri$
3$B Cu!ul de date (i OL-0
)istemele de suport pentru deci&ii .Decision support sLstems/ sunt utili&ate de c'tre
companiile moderne pentru inte#rarea ntr+o !a&' de date central' numit' data :areouse
.ma#a&ia central' de date/% a datelor provenind din !a&e de date mici opera"ionale folosite n
diferite domenii de activitateMfiliale ale companiei$
Datele astfel acumulate sunt anali&ate n timp real .OL-0F On+Line -nalitical
0rocessin#/ pentru a asista conducerea companiei n luarea deci&iilor strate#ice de de&voltare
?3B@ .de e6emplu% anali&*nd v*n&'rile unui anumit produs pe trimestru (i &on' #eo#rafic'% se
poate sta!ili o nou' strate#ie de marNetin# pentru acest produs/$ Datele din ma#a&ia central'
de date sunt modelate su! forma unui .iper/cu! de date multidimensional ?3C@/ care poate fi
anali&at la nivelul su!cu!urilor de #ranularitate ar!itrar'$ )u!cu!urile se o!"in prin a#re#area
cu!urilor din care provin$
De e6emplu% prin nsumarea v*n&'rilor trimestriale pentru fiecare &on'% cu!ul de date
tridimensional repre&ent*nd v*n&'rile pe trimestru (i &ona #eo#rafic' poate fi redus la un
su!cu! !idimensional .plan/ repre&ent*nd v*n&'rile pe &ona #eo#rafic'$ -#re#area este o
opera"ie costisitoare% efectuarea ei eficient' pe un volum mare de date repre&ent*nd "elul
principal al cercet'rii n acest domeniu .?3D@%?3E@%?3G@%?3H@/$
3$C Noi modele tran&ac"ionale
Jn mod tradi"ional% tran&ac"iile modelea&' unit'"i de lucru atomice (i i&olate% efectuate
asupra datelor sistemului de #estiune a !a&elor de date$
Pagina 5 din 97

I&olarea tran&ac"iilor nu permite crearea tran&ac"iilor comple6e% mari% din tran&ac"ii
simple$ -cest model a avut succes at*ta vreme c*t tran&ac"iile efectuau un num'r mic de
opera"ii simple asupra datelor cu structur' simpl'$
Din p'cate% modelul tran&ac"iilor simple nu satisface cerin"ele aplica"iilor comple6e%
n care tran&ac"iile tre!uiesc com!inate (i coordonate pentru a cola!ora la reali&area unui
scop comple6$ -plica"ii ca proiectarea asistat' de calculator% automati&area activit'"ii de
!irou% controlul produc"iei% #estiunea activit'"ilor necesit' noi modele tran&ac"ionale% noi
metode de #estiune a tran&ac"iilor% (i noi lim!a,e de specificare a tran&ac"iilor$ Lim!a,ele
tran&ac"ionale sunt lim!a,e de nivel nalt% de o!icei inspirate din lo#ica cu predicate de
ordinul nt*i$
Dac' lim!a,ele tradi"ionale specificau intero#'ri (i actuali&'ri% noile lim!a,e
tran&ac"ionale se concentrea&' asupra rela"iei dintre tran&ac"ii% e6prim*nd dependen"e de tipul
tran&ac"ia T2 nu poate porni nainte ca T3 s' se termine% sau T2 poate ncepe dac' T3 ntoarce
o valoare mai mare ca 2C$ ?2I@ pre&int' o clasificare (i anali&a detailat' a noilor lim!a,e
tran&ac"ionale$
Un e6celent e6ponent al noii #enera"ii de lim!a,e tran&ac"ionale este Transaction
Datalo# ?23@% un lim!a, deductiv care men"ine n acela(i timp toate propriet'"ile tran&ac"iilor
clasice% cum ar fiF persisten"'% atomicitate% i&olare% terminare (i roll!acN .revenire/$
Lim!a,ul este nso"it de un model teoretic natural (i de o teorie si#ur' pentru
demonstra"ii% permi"*nd astfel demonstrarea ecivalen"ei ntre diverse e6presii din acest
lim!a,$ -cest fapt este crucial pentru optimi&are + care const' din nlocuirea unei planific'ri
cu o alta ecivalent' din punct de vedere al efectului s'u asupra datelor% dar mai eficient' din
punct de vedere al costului e6ecu"iei$ Mai mult% faptul c' putem demonstra c' efectul unei
tran&ac"ii comple6e asupra setului de date este sau nu cel scontat% asi#ur' consisten"a datelor$
3$D Optimi&'ri
Optimi&area lim!a,elor de intero#are a !a&elor de date nu este un domeniu nou% ci
dimpotriv'% e6ist' nc' de la apari"ia acestora$ Datorit' importan"ei sale% acest domeniu va fi
ntotdeauna la mod' n cercetarea !a&elor de date$
-pari"ia unui nou model de date atra#e dup' sine o efervescen"' n activitatea de
cercetare a posi!ilit'"ilor de optimi&are a lim!a,ului de intero#are asociat noului model$
Referin"ele !i!lio#rafice introduse n sec"iunea anterioar' pre&int' (i primele ncerc'ri de
optimi&are a noilor lim!a,e de intero#are$
Pagina 6 din 97

C-0ITOLUL II
MODELE DE RE0REOENT-RE - D-TELOR NECON5EN<ION-LE
2$3 Definirea conceptului de date neconven"ionale
Jn literatura de specialitate e6ist' o serie de definiri ale conceptului de date
neconven"ionale (i a altor concepte asociate acestuiaF
P Datele neconven"ionale sunt datele care nu au nici unul din tipurile standardF ntre#%
real etc$ ?4lanNen% 2II2@
P )tructura de date neconven"ional' este structura de date care nu este n u&ul curent al
aplica"iilorQ aceasta poate fi structura produs' de datele semistructurate% cea definit' noilor
tipuri de date folosite n aplica"ii (i date cu structuri ce se modific' n mod dinamic$ ?1)IRT%
2IIC@
P - patra #enera"ie a tenolo#iilor !a&elor de date este pre&entat' n ?Mannino% 2IIB@
ca fiind o e6tensie a tenolo#iilor !a&elor de date cu datele neconven"ionale (i Internetul$
)istemele celei de+a patra #enera"ii pot stoca (i manipula tipuri de date neconven"ionale cum
suntF ima#inile% secven"ele video% 'r"ile% sunetele (i anima"iile (i permit accesul la !a&ele de
date =e!$
P Unul din o!iectivele sistemelor de #estiune a !a&elor de date orientate o!iect este
pre&entat ca fiind e6tinderea fle6i!ilit'"ii cu datele neconven"ionale (i procedurile de
prelucrare asociate acestora% inclusiv te6t% #rafic' (i voce% date care nu pot fi manipulate (i
inte#rate de sistemele de !a&e de date conven"ionale$
La UniversitL of )outern California din Los -n#eles .U)C/ e6ist' un la!orator de
informare numit InfoL-4 al c'rui scop este investi#area de noi metode pentru #estiunea
tipurilor de date neconven"ionale cu aritecturi atipice$ 0rincipalele &one de cercetare suntF
P 1estiunea flu6urilor de date multidimensionale n aritecturi de tip punct la punct
.peer+to+peer/%
P -nali&a datelor multidimensionale%
P 1estiunea datelor peer+to+peer%
P 0relucrarea intero#'rilor de stream+uri%
P 4a&e de date spa"io+temporale$
Descrierea datelor neconven"ionale se reali&ea&' folosind metadate$ Metadatele sunt
folosite pentru descrierea altor date% cu o structur' comple6' sau nestructurate$ Metadatele
pot fi privite din diferite perspective% n func"ie de produc'torul sau sursa metadatelorF
Pagina 7 din 97

+ Din perspectiva produc'torului de con"inut% metadatele sunt utili&ate pentru stocarea
informa"iilor !i!lio#rafice ale resurselor% ca de e6empluF numele autorului% titlul% data cre'rii%
formatul resursei etc$
+ Din perspectiva furni&orilor de servicii% metadatele ofer' informa"ii descriptive cu
valoare ad'u#at' .ma,oritatea n format XML/% care reduc informa"iile necesare re#'sirii
datelor$ Metadatele con"in informa"ii despre diferitele formate n care este disponi!il' o
resurs' (i informa"ii semantice asociate acesteia$ -ceste informa"ii sunt utile pentru reali&area
intero#'rii datelor$
+ Din perspectiva consumatorului% metadatele ofer' informa"ii suplimentare care
descriu preferin"ele consumatorului (i resursele disponi!ile pentru utili&area datelor$
Metadatele permit personali&area consumului mediilor (i tre!uie luate n considerare de
produc'tori$ Metadatele sunt utile pentru distri!uirea datelor n Internet sau n re"ele mo!ile
permi"*nd accesul la resurse n cele mai !une condi"ii posi!ileQ de e6emplu% metadatele pot fi
folosite pentru descrierea modului n care difu&area secven"elor video este adaptat' la
sc'derea l'r#imii de !and' disponi!il' la un moment dat$
2$2 Modelul semistructurat ale datelor
Modelele rela"ional (i orientat+o!iect au fost folosite mult timp pentru modelarea
datelor nu neap'rat pentru c' erau cele mai naturale solu"ii% ci pentru c' au n spate un
formalism !ine definit$ Jn timp ns'% datorit' de&volt'rii Internetului (i datorit' necesit'"ii
inte#r'rii datelor descrise folosind sceme diferite% modelele tradi"ionale s+au dovedit a nu
mai fi suficiente (i a devenit acut' necesitatea utili&'rii unui alt model de date% modelul
semistructurat al datelor$
Jn plus% aplica"iile Internet reali&ea&' opera"ii care nu sunt curente n aplica"iile
tradi"ionale cu !a&e de date cum ar fiF transform'ri ale datelor% interpretarea intero#'rilor%
transportul datelor (i prelucrarea !a&at' pe flu6uri$
Datele semistructurate au devenit un important su!iect de studiu din mai multe
motiveF
Jn primul r*nd% e6ist' surse de date pe care am vrea s' le trat'm ca !a&e de date dar
c'rora nu le putem impune constr*n#eri av*nd la !a&' o scem'% ca n ca&ul !a&elor de date
tradi"ionale ?4uneman% 3HHE@$ Ciar (i datele structurate% au structur' care poate s' difere de
la o aplica"ie la alta sau au structur' modifica!il' n timp$ De&volt'rile din domeniul
multimediei au dus la necesitatea de a introduce noi tipuri de date n domeniul tenolo#iei
!a&elor de date conven"ionale$ Unele tenolo#ii necesit' doar e6tensii ale modelelor de date
e6istente% prin optimi&area tenicilor de manipulare (i intero#are a noilor tipuri de date% dar
Pagina 8 din 97

altele nu pot fi ncadrate n modelele clasice de #estiune a datelor$ Cel mai evident e6emplu
de date care nu pot fi ncadrate ntr+o scem' sunt datele manipulate prin intermediul =e!+
ului$ Ma,oritatea intero#'rilor =e! e6ploatea&' tenicile de re#'sire a datelor pentru a
determina pa#inile individuale care au con"inut ce corespunde criteriului solicitat$ Dar numai
o mic' parte din resursele =e! sunt structurate astfel nc*t s' permit' re&olvarea intero#'rilor%
=e!+ul nefiind conform nici unui model standard$ -stfel c' se simte nevoia de a #'si o
metod' pentru descrierea structurii datelor =e! n vederea re&olv'rii acestei pro!leme$
-l doilea motiv este dat de necesitatea scim!ului de date ntre aplica"ii care folosesc
formate diferite de stocare (i #estiune a datelor necesit*nd astfel transformarea datelor$ Nici
unul din modelele de date e6istente nu este accepta!il din toate punctele de vedere (i n plus
este dificil s' convertim datele dintr+un model n altul$ -stfel% s+a sim"it nevoia s' se de&volte
un model care s' le#e cele dou' lumi diferiteF rela"ional' (i orientat' o!iect% acesta este
modelul semistructurat al datelor$
Jn plus% datele n format electronic se afl' n medii diferite% interconectate care tre!uie
s' comunice ntre ele$ Dar (i c*nd se folosesc datele structurate poate fi util ca acestea s' fie
privite ca date semistructurate% din motive care "in de manipularea acestora% fiind util s' e6iste
un format fle6i!il pentru scim!ul de date ntre diferite tipuri de !a&e de date$ ?4uneman%
3HHE@
O parte din aceste date se #'sesc su! forma datelor nestructurate% ca de e6emplu
sunetele% ima#inile% secven"ele video (i ciar unele documente te6t% iar alt' parte su! forma
datelor structurate% memorate n !a&e de date rela"ionale sau orientate o!iect$ Jn #eneral% un
utili&ator nu poate scrie o intero#are pentru o !a&' de date f'r' s' cunoasc' scema de
or#ani&are a datelor% iar aceasta este netransparent' pentru utili&atori (i ra"ionamentul folosit
la proiectarea ei este adesea #reu de determinat$ -u fost de&voltate lim!a,e care permit
intero#area simultan' a datelor (i a scemelor de or#ani&are a !a&elor de date% dar aceste
lim!a,e nu au fle6i!ilitatea s' manipule&e constr*n#eri comple6e$
2$2$3 Conceptul de date semistructurate
Jn #eneral% prin termenul de date semistructurate sunt denumite datele care nu
respect' formate stricte cum ar fi cele impuse de modelele !a&elor de date rela"ionale sau
orientate o!iect$ Jn mod evident o astfel de defini"ie este imprecis'$ Datele sunt
semistructurate dac'F nu au o structur' ri#id' .de e6emplu datele =e!% datele sunt com!inate
din c*teva surse etero#ene + ca n ca&ul depo&itelor de date/% nu au o structur' implicit'
asociat' datelor% sau au o structur' par"ial specificat' ?-!ite!oul% 3HHE@$ Modelele orientat+
Pagina 9 din 97

o!iect (i rela"ional au o scem' fi6' pentru fiecare clas' sau fiecare rela"ie$ Datele
semistructurate permit o fle6i!ilitate sporit'% fiind o com!ina"ie a celor dou' concepteF clasa
(i rela"ia$
Datele semistructurate con"in informa"ii despre scema lor (i aceast' scem' poate
diferi% n timp% n cadrul unei sin#ure !a&e de date$ -cest model care nu se !a&ea&' pe nici o
scem'% are un rol special n sistemele !a&elor de date$
Jn acest model datele sunt autoreferite% acest lucru nsemn*nd c' scema este ata(at'
datelor$ Com!inarea unor date dintr+o !a&' de date rela"ional' cu altele dintr+o !a&' de date
orientat'+o!iect se poate reali&a prin conectarea celor dou' !a&e de date% prin intermediul
unei interfe"e% translat*nd datele de la fiecare surs' n date semistructurate$
Jn modelul semistructurat al datelor% informa"iile care sunt n mod normal asociate
unei sceme sunt incluse n interiorul datelor$ Jn aceste !a&e de date nu e6ist' o distinc"ie
clar' ntre date (i scem'% iar #radul de structurare depinde de aplica"ie$ Jn anumite forme ale
modelului semistructurat e6ist' o scem' distinct'% n altele nu$
-vanta,ele modelului semistructurat al datelor sunt urm'toareleF
P Fle6i!ilitatea + simplific' inte#rarea !a&elor de date care au sceme diferite$ )pre
deose!ire de alte modele% care au o scem' de descriere a datelor% modelul semistructurat este
f'r' scem'% ceea ce ,ustific' fle6i!ilitatea sa$ Fle6i!ilitatea repre&int' un instrument util
pentru inte#rarea datelor% mai ales n ca&ul pro!lemelor le#ate de mo(tenirea !a&ei de date$
P Jm!un't'"irea eficien"ei re#'sirii datelor pu!licate n Internet
P 0osi!ilitatea inte#r'rii datelor
Documentele RTML (i cele stocate n !i!lioteci di#itale sunt semistructurate$ )pre
deose!ire de flu6urile nestructurate de date .precum ima#ini% sunete% video/% datele
semistructurate au o structur' (i spre deose!ire de datele structurate .!a&ele de date
rela"ionale sau orientate+o!iect/% datele semistructurate nu au o scem' a!solut' sau o clas'
fi6'% fiecare o!iect con"in*nd propria scem'$ Ire#ularitatea structural' nu implic' ine6isten"a
similarit'"ilor structurale ntre o!iecte$ Din contr'% n mod o!i(nuit% o!iectele semistructurate
care descriu acela(i tip de date au structur' similar'$
Modelul datelor semistructurate este un model pentru inte#rarea !a&elor de date$ Este
folosit pentru descrierea datelor aflate n dou' sau mai multe !a&e de date care con"in date
similare n diferite sceme de or#ani&are$
2$2$2 Modelarea datelor semistructurate
Pagina 10 din 97

Datele semistructurate sunt modelate% n #eneral% su! forma structurilor de tip #raf sau
ar!ore% n noduri av*nd repre&entate o!iecte iar arcele repre&ent*nd atri!utele o!iectelor$ Jn
plus% arcele modelea&' natural rela"iile de su!ordonare dintre dou' o!iecte$ ?Reveiu% 2IIA@
Modelul de facto pentru datele semistructurate este OEM .O!,ect E6can#e Model/%
model propus n proiectul pentru inte#rarea datelor numit T)IMMI) (i descris pentru prima
dat' n lucrarea Multimedia data!ase sLstems 7 Desi#n and implementation )trate#ies$ OEM
este un model autodescripti!il% nefiind necesar' definirea anterioar' a structurii unui o!iect (i
nici nu e6ist' o scem' fi6' de repre&entare a datelor$ Fiecare o!iect repre&entat con"ine
propria lui scem'$
Fiecare o!iect din OEM poate avea un identificator .Id/% o eticet'% un tip (i o valoare$
Id+urile o!iectelor pot fi sim!oluri cu sau f'r' n"elesuri speciale$ De e6emplu% dac' un o!iect
este o pa#in' =e!% URL+ul pa#inii poate fi folosit ca id+ul o!iectului$ Eticetele nodurilor
sunt (iruri care e6plicitea&' rolul o!iectului pentru utili&ator (i pentru aplica"ii$ Eticeta ,oac'
aici dou' roluriF identific' un o!iect (i d' sens o!iectului$ O!iectele pot fi atomice sau
comple6e .seturi de o!iecte/$ 5alorile o!iectelor atomice au tipuri atomice .valori ntre#i%
reale% (iruri de caractere% ima#ine% sunet etc$/% iar cele comple6e au ca valori seturi de o!iecte%
repre&entate prin pereci de tipul atri!ut+o!iect$ 0rin urmare% un o!iect comple6 va avea o
definire recursiv' deoarece valoarea unui o!iect este parte a sa$ Nodurile frun&' au asociate
ntotdeauna valori atomice$
Eticetele arcelor repre&int' atri!ute% sunt descrise prin (iruri de caractere (i
repre&int' un set de propriet'"i descriptive$ O proprietate poate fi folosit' ntr+un arc pentru a
descrie nodurile nvecinate$
Pagina 11 din 97

Jn fi#ura 3 este pre&entat' e6emplificarea model'rii unei p'r"i dintr+o !a&' de date
multimedia folosind OEM$
Fi#ura 3 7 Modelul OEM al unei p'r"i dintr+o !a&' de date multimedia
Informa"iiF So3
TfilmF So23
TtitluF SoAI UTitanic9%
actor principalF SoA3
TnumeF SoB3 UDiCaprio9%
prenumeF SoB2 ULeonadro9V%
re#i&orF SoA2
TnumeF SBB UCameron9%
prenumeF SoBC UWames9V%
T actor principalF SoAA%
numeF SoBD UXate9%
prenumeF SoBE U=inslet9V%
premii o!"inuteF SoBG U33 Oscaruri9V%
melodieF So22
TtitluF SBH UML eart :ill #o on9%
interpret'F SoAB
TnumeF SoCI UDion9%
Pagina 12 din 97

prenumeF SoC3 UCeline9V%
premiiF S oAC
TanF SoC2 U3HHG9%
numeF UOscar pentru cea mai !un' coloan' sonor'9V%
coloan' sonor'F So22VV
Datele stocate n !a&e de date rela"ionale pot fi descrise cu u(urin"' folosind OEM$ Jn
plus% OEM asi#ur' o fle6i!ilitate mai mare n descrierea datelor toler*nd lipsa unor atri!ute
pentru anumite nre#istr'ri sau e6isten"a mai multor valori pentru acela(i atri!ut n cadrul
unei sin#ure nre#istr'ri$
OEM poate fi considerat mai apropiat de modelul orientat+o!iect dec*t de cel
rela"ional% n care dou' o!iecte distincte ciar dac' au valori identice% au e6isten"' de sine
st't'toare% repre&ent*nd instan"e diferite$
)ceme de or#ani&are a datelor semistructurate
Fle6i!ilitatea n descrierea informa"iilor adus' de modelarea datelor semistructurate
are (i de&avanta,e% (i anume dificultatea formul'rii unei intero#'ri relevante$ )+a ncercat
asocierea unor sceme n modelarea datelor semistructurate% n acest sens e6ist*nd dou'
a!ord'riF
P sceme fle6i!ile 7 descriu aprioric dateleQ scemele fle6i!ile fiind concepute astfel
nc*t s' permit' fle6i!ilitate n descrierea datelorQ se folose(te tipul void pentru manipularea
oric'rui tip de dat'$
P sceme ri#ide 7 descriu cu e6actitate datele (i sunt folosite pentru anali&a datelorQ
scema este ref'cut' ori de c*te ori se produce o modificare a informa"iei memorate$
2$2$A Lim!a,e de intero#are a datelor semistructurate
0rincipalele elemente caracteristice ale unui lim!a, de intero#are pentru datele
semistructurate suntF
P 0utere de e6presieF pentru repre&entarea datelor rela"ionale su! forma datelor
semistructurate% lim!a,ul semistructurat tre!uie s' acopere opera"iile corespun&'toare unui
lim!a, rela"ional standard% dar n plus tre!uie s' dispun' de facilit'"i de reor#ani&are a datelor%
astfel nc*t aceea(i informa"ie s' poat' fi re#'sit' su! o alt' structur'Q
P )emantic'F cererile tre!uie optimi&ate astfel nc*t s' poat' "ine cont de semantica
datelor% fiind necesar' o semantic' precis' pentru transformarea (i optimi&area cererilorQ
P )cemati&areF lim!a,ul tre!uie s' poat' recunoa(te structurile definite pentru a le
putea manipulaQ
Pagina 13 din 97

P CompunereF datele o!"inute n urma unei intero#'ri pot fi folosite ca date de intrare
n alte intero#'ri% motiv pentru care lim!a,ele tre!uie s' fie transparente$
-u fost propuse% ntr+o serie de proiecte de cercetare pe aceast' tem'% c*teva lim!a,e
de intero#are pentru datele semistructurate$ Dou' dintre acestea suntF lim!a,ul orientat+o!iect
Lorel% derivat din O>L .O!,ect >uerL Lan#ua#e/ (i lim!a,ul Un>L .Unstructured >uerL
Lan#ua#e/$
Domeniul datelor semistructurate este unul n studiu (i va avea un impact mare asupra
unei multitudini de aplica"ii% dar mai ales asupra aplica"iilor multimedia (i a celor de&voltate
pentru mediul Internet$
2$A M0E1+23 7 )uport pentru inte#rarea datelor n aplica"ii multimedia distri!uite
Jn ciuda descrierilor complete (i detaliate ale tipurilor datelor multimedia
implementate n M0E1+E% aspecte le#ate de or#ani&area datelor (i de infrastructura unui
sistem multimedia distri!uit nu pot fi descrise doar folosind metadate$ -stfel c' a fost ini"iat
un nou standard% M0E1+23 cu scopul de a oferi mecanisme de proiectare a sistemelor
multimedia distri!uite% de a crea un mediu unic% universal accesi!il pentru livrarea (i
utili&area resurselor multimedia n diferite condi"ii% ca de e6emplu diferite tipuri de utili&atori%
re"ele cu diferite caracteristici% terminale cu caracteristici diferite etc$
2$A$3 0re&entare #eneral'
M0E1+23 este un standard I)OMIEC23III al M0E1 .Movin# 0icture E6perts 1roup/
care define(te un cadru de lucru descis pentru multimedia$ For"a M0E1+23 este dat' de
urm'toarea situa"ieF e6ist' multe resurse mutimedia ce pot fi folosite la construirea unei
infrastructuri pentru distri!uirea (i utili&area con"inutului multimedia% dar nu e6ist' nici o
aritectur' pentru descrierea modului n care aceste elemente interac"ionea&' ntre ele$ )copul
standardului M0E1+23 este s' defineasc' un cadru de lucru descis pentru multimedia care
s' permit' utili&area transparent' (i la performan"e !une a resurselor multimedia folosind
re"ele (i dispo&itive periferice diverse$ )e urm're(te #estiunea con"inutului multimedia%
#estiunea propriet'"ii intelectuale (i adaptarea con"inutului la resursele disponi!ile prin
intermediul diferitelor clase de servicii$ M0E1+23 ofer' un suport descis pentru distri!uirea
(i utili&area datelor multimedia$ ?Xosc% 2IIB@
M0E1 acoper' ntre#ul con"inut multimedia din punctul de vedere al canalelor de
distri!u"ie folosite% al modalit'"ilor de creare a con"inutului% din punct de vedere al modalit'"ii
de produc"ie% n vederea personali&'rii% consumului% pre&ent'rii (i comerciali&'rii acestuia$
0entru reali&area acestui lucru% M0E1+23 propune norme pentru un standard descis pentru
Pagina 14 din 97

crearea% distri!uirea (i utili&area datelor multimedia$ -cest standard se refer' la to"i actorii
implica"i% de la creatorii de con"inut% produc'tori% distri!uitori (i furni&orii de servicii$
M0E1+23 standardi&ea&' flu6ul informa"iilor (i serviciilor multimedia de la crearea
con"inutului p*n' la livrarea c'tre utili&atorii finali$ 0entru a reali&a acest lucru% con"inutul
tre!uie identificat% descris% #estionat (i prote,at$ Transportul (i livrarea con"inutului poate avea
loc peste diferite re"ele% ntre o varietate de terminale$
E6ist' o serie de aritecturi ap'rute ca r'spuns la varietatea tipurilor de aplica"ii care
utili&ea&' con"inutul multimedia$ E6ist' trei modele principale folosite pentru #estiunea%
descrierea (i re#'sirea resurselor multimedia (i anume Du!lin Core% )M0TE (i M0E1+E$
0entru a evita recomandarea unui model n defavoarea altuia% n mod ne,ustificat% M0E1+23
propune descrierea suportului multimedia su! forma unei aritecturi #enerice$ ?I)O% 2II3@
M0E1+23 se !a&ea&' pe dou' concepte esen"ialeF definirea unei unit'"i fundamentale
de distri!u"ie (i tran&ac"ionare + elementul di#ital (i utili&atorii care interac"ionea&' cu
elementele di#itale$ Elementul di#ital este un o!iect di#ital% structurat care are o repre&entare
standard% ce poate fi identificat (i care are asociate metadate$ Elementele di#itale con"in at*t
resursele multimedia .con"inutul/ c*t (i metadatele asociate resurselor sau ntre#ului element
di#ital$ Jn accep"iunea M0E1+23% utili&atorul este orice entitate care interac"ionea&' cu
mediul M0E1+23 sau care folose(te un element di#ital% ca de e6emplu un consumator al
datelor multimedia% o or#ani&a"ie% sau un alt standard ce folose(te resursele multimedia$ Un
utili&ator poate folosi con"inutul n mai multe feluriF prin pu!licare sau prin livrare (i poate
avea drepturi (i responsa!ilit'"i specifice n func"ie de modalit'"ile de interac"iune cu al"i
utili&atori n cadrul M0E1+23$
0rincipalele elementele folosite n definirea aritecturii M0E1+23 suntF
P Elementul di#ital + este un container ieraric de resurse etero#ene .video% audio% te6t
etc$/% metadate (i alte elemente di#itale$ Un element di#ital este o unitate elementar' de
distri!u"ie (i tran&ac"ionareQ
P Declararea elementului di#ital 7 define(te un set de termeni folosi"i la declararea
elementelor di#italeQ
P Identificarea (i descrierea elementului di#ital 7 presupune identificarea (i descrierea
elementului di#ital% natura lui% tipul sau #ranularitatea .film% scen' sau cadru/Q
P 1estiunea (i utili&area con"inutului 7 ofer' interfe"e (i protocoale care permit
crearea% manipularea% c'utarea% accesarea% stocarea% livrarea (i reutili&area con"inutului de+a
lun#ul canalelor de distri!u"ie (i consumQ
Pagina 15 din 97

P 0rote,area (i #estiunea propriet'"ii intelectuale 7 permite #estiunea con"inutului (i
prote,area elementelor di#itale ntr+o serie de re"ele (i dispo&itiveQ
P Terminale (i re"ele 7 ofer' instrumente ce permit accesul transparent la con"inut prin
intermediul re"elelor (i terminalelor% reali&*nd inclusiv controlul calit'"ii serviciuluiQ
P Repre&entarea con"inutului 7 cum sunt repre&entate resursele mediaQ
P Raportarea evenimentelor 7 con"ine metrici (i interfe"e ce permit utili&atorilor s'
evalue&e performan"ele tuturor evenimentelor raporta!ile din cadrul sistemului$
)tructura M0E1+23
Jn pre&ent sunt definite 3G p'r"i ale M0E1+23F ?I)OMIEC 23III+3+3G@ F
0artea 3F Tenolo#iile (i strate#ia M0E1+23%
0artea 2F Declararea elementului di#ital .DID/
0artea AF Identificarea elementului di#ital .DII/
0artea BF 1estiunea (i protec"ia propriet'"ii intelectuale .I0M0/
0artea CF Lim!a,ul de repre&entare a drepturilor .REL/
0artea DF Dic"ionar de drepturi ale datelor .RDD/
0artea EF -daptarea elementului di#ital .DI-/%
0artea GF )oft:are de referin"'
0artea HF Formate de fi(iere pentru stocarea (i re#'sirea elementelor di#itale ale
M0E1+23
0artea 3IF 0relucrarea elementelor di#itale
0artea 33F -socieri persistente
0artea 32F Testare distri!uirii resurselor M0E1+23
0artea 3AF Codarea secven"elor video scala!ile
0artea 3BF Conforman"a
0artea 3CF Raportarea evenimentelor
0artea 3DF Formatul !inar
0artea 3EF Identificarea fra#mentelor
0artea 3GF )treamin#+ul elementului di#ital
2$A$2 Declararea elementelor di#itale
Declararea elementului di#ital presupune definirea unui set de termeni (i concepte
folosite la definirea elementelor di#itale% la descrierea sinta6ei (i semanticii fiec'rui element
di#ital (i a scemei de repre&entare n XML$
Declararea unui element di#ital se reali&ea&' n A etapeF
+ Crearea modelului a!stract%
Pagina 16 din 97

+ Repre&entarea modelului a!stract n XML%
+ Crearea scemei XML$
P Modelul a!stract 7 define(te un set de termeni (i concepte care formea&' un model
pentru declararea elementelor di#itale$ Modelul a!stract permite repre&entarea elementelor
di#itale n diferite moduri$ Modelul a!stract define(te entit'"ile necesare declar'rii
elementului di#ital$
Un prim set de entit'"i este format din elementele de !a&' folosite pentru declararea
elementelor di#italeF
+ resursa 7 este un flu6 de date identifica!il% ca de e6emplu un fi(ier video% ima#ine%
secven"' audio sau te6t$
+ componenta 7 are rolul de a le#a una sau mai multe resurse de un set de descriptori
ce con"in informa"ii secundare referitoare la resursele componentei$ Componenta este folosit'
doar pentru #ruparea resurselor (i a datelor secundare transmise printr+un descriptor$
+ elementul di#ital 7 repre&int' conectarea unuia sau mai multor elemente sau
componente la un descriptor$ )e pot crea elemente di#itale individuale (i elemente compuse$
+ descriptorul 7 introduce un mecanism e6tensi!il care poate fi folosit pentru asocierea
informa"iilor cu alte entit'"i ale modelului a!stract$ Un descriptor asocia&' informa"ii
te6tuale% secundare entit'"ii incluse$
+ containerul 7 repre&int' asocierea unuia sau mai multor elemente di#itale (iMsau
container.e/ la un descriptor$ Containerele sunt folosite pentru #ruparea elementelor di#itale$
Descriptorul con"ine informa"ii despre containerul repre&entat$
0entru rafinarea descrierii resurselor se folose(te urm'torul set de entit'"iF
+ fra#mentul 7 identific' un anumit punct sau interval din cadrul unei resurse
.secven"' video% audio etc$/$ Fra#mentele sunt specifice tipului resursei$
+ ancora 7 conectea&' descriptori de un fra#ment$ Jn acest ca&% descriptorii con"in
informa"ii despre fra#mentele ancorei$ -ncora este folosit' pentru #ruparea fra#mentelor (i
descriptorilor$ E6emplu de ancor'F un moment de timp al unei resurse video% o form'
poli#onal' din cadrul unei resurse de tip ima#ine$
+ adnotarea 7 permite ad'u#area de informa"ii la o entitate a modelului f'r' a modifica
entitatea$
+ alternativa 7 este o op"iune din mai multe e6istenteQ ca de e6emplu% alternativa unei
cone6iuni la Internet la o l'r#ime de !and' mare sau alternativa unei cone6iuni prin dial+up$
+ selec"ia 7 este op"iunea utili&atorului din alternativele disponi!ile$
Pagina 17 din 97

+ condi"ia 7 pe !a&a selec"iei utili&atorului% pot fi satisf'cute .sau nu/ condi"iile
asociate unei entit'"i a elementului di#ital (i entitatea elementului di#ital poate deveni
disponi!il' .sau nu/$
P Repre&entarea modelului a!stract n XML 7 presupune descrierea sinta6ei XML
pentru fiecare entitate definit' n modelul a!stract$ -ceast' sinta6' formea&' lim!a,ul de
declarare a elementului di#ital al M0E1+23 .DIDL 7 Di#ital Item Declaration/$ Declararea
elementelor di#itale repre&entate n conformitate cu sinta6a DIDL formea&' documentul
DIDL$
DIDL define(te c*teva elemente suplimentare care nu corespund entit'"ilor modelului
a!stractF
+ Elementul DIDL ca r'd'cin' a documentului DIDL%
+ Elementul Referin"' + repre&int' o le#'tur' la un alt element al documentului DIDL
(i include con"inutul elementul referen"iat n elementul referit$ Referin"ele se pot face la
elemente din acela(i document DIDL sau la elemente din alt document DIDL$ O referin"'
intern' permite p'strarea unei sin#ure surse pentru un element care apare n documentul
DIDL n mai multe locuri$ Referin"a e6tern' permite unui document DIDL s' fie mp'r"it n
mai multe documente DIDL conectate$
+ Elementul Declara"ii este folosit pentru definirea elementelor documentului DIDL%
f'r' a le instan"ia$ Un element declarat poate fi instan"iat folosind elementul Referin"'$
P )cema XML 7 specific' sinta6a DIDL (i constr*n#erile pentru structura
documentelor DIDL$
Rela"ia dintre modelul a!stract M0E1+23 (i DIDL este pre&entat' n fi#ura B$2$
Fi#ura 2 + Rela"ia dintre modelul a!stract M0E1+23 (i DIDL
Jn continuare sunt pre&entate componentele de !a&' ale scemei de declarare a
elementelor di#itale$ -ceste elemente se folosesc n scemele documentelor XML$
Pagina 18 din 97

P )cema de declarare a elementului di#ital
)cema de declarare a unui element di#ital numit ElementDi#ital care are la primul
nivel un container sau un alt element di#ital esteF
Y6sdFscema tar#etNamespace Z [urnFmpe#Fmpe#23F2II2FI3+
DIDL+N)[ 6mlns Z [urnFmpe#Fmpe#23F2II2FI3+DIDL+N)[
6mlnsF6sd Z [ttpFMM:::$:A$or#M2II3MXML)cema[
version Z [I$I3[\
Y6sdFelement name Z [ElementDi#ital[\
Y6sdFcomple6TLpe\
Y6sdFse]uence\
Y6sdFelement refZ[Declaratii[ minOccursZ[I[M\
Y6sdFcoice\
Y6sdFelement refZ[Container[M\
Y6sdFelement refZ[Element[M\
YM6sdFcoice\
YM6sdFse]uence\
YM6sdFcomple6TLpe\
YM6sdFelement\
Y6sdFscema\
P Container
Containerul are o structur' ieraric'% iar definirea sa se reali&ea&' recursivF
Y6sdFelement nameZ[Container[\
Y6sdFcomple6TLpe\
Y6sdFse]uence\
Y6sdFelement refZ[Descriptor[ minOccursZ[I[
ma6OccursZ[un!ounded[M\
Y6sdFcoice\
Y6sdFelement refZ[Referinta[M\
Y6sdFse]uence\
Y6sdFelement refZ[Container[ minOccursZ[I[
ma6OccursZ[un!ounded[M\
Y6sdFelement refZ[Element[ minOccursZ[I[
ma6OccursZ[un!ounded[M\
Pagina 19 din 97

YM6sdFse]uence\
YM6sdFcoice\
YM6sdFse]uence\
YM6sdFcomple6TLpe\
YM6sdFelement\
De e6emplu% dac' ntr+un element di#ital vor fi #rupate mai multe elemente ce con"in
c*te o secven"' video% atunci pentru fiecare secven"' se va folosi c*te un container ce con"ine
declararea elementului$
P Declararea descriptorului elementului di#ital compus esteF
YElementDi#ital\
YContainer\
YDescriptor\
YDeclarare mimeTLpe Z [videoMavi[\)ecventele 5ideoYMDeclarare\
YMDescriptor\
YElement id Z [)ecventa3[\
YMElement\
YElement id Z [)ecventa2[\
YMElement\
YMContainer\
YMElementDi#ital\
2$A$A -daptarea con"inutului utili&*nd M0E1+23
)tandardul M0E1+23 facilitea&' de&voltarea de solu"ii de adaptare a con"inutului
distri!uit n func"ie de caracteristicile tenice ale terminalelor folosite pentru receptarea
datelor% de caracteristicile tenice ale mediului de comunica"ie folosit sau n func"ie de
preferin"ele utili&atorului$
0entru adaptarea con"inutului multimedia este necesar' e6isten"a unei descrieri a
mediului de lucru% pe l*n#' descrierea con"inutului propriu+&is$ Jn vederea adapt'rii
con"inutului multimedia tre!uie s' e6iste o descriere a sa% folosind unul din standardele
adecvate% ca de e6emplu Du!lin Core% )M0TE sau M0E1+E$ 0artea a (aptea a M0E1+23%
denumit' -daptarea elementului di#ital .DI-/ este dedicat' descrierii caracteristicilor
mediului (i adapt'rii elementelor di#itale la aceste caracteristici$
Pagina 20 din 97

DI- define(te doar instrumentele necesare n procesul de adaptare% nu reali&ea&' (i
adaptarea con"inutului$
Cate#oriile de instrumente descriptive folosite suntF
P Instrumentele pentru descrierea mediului 7 au rolul de a descrie caracteristicile
semnificative ale conte6tului (i anumeF
+ caracteristicile terminalului folosit pentru receptarea sau crearea con"inutului
multimediaF posi!ilit'"ile de codareMdecodare ale terminalului% facilit'"ileMdispo&itivele de
intrare+ie(ire conectate% alte caracteristici relevanteQ
+ caracteristicile re"eleiF capacitatea re"elei% tipul cone6iunii etc$Q
+ caracteristicile utili&atoruluiF informa"ii despre utili&ator% preferin"ele utili&atorului%
un istoric al datelor utili&ate% preferin"e le#ate de pre&entarea informa"iilor% caracteristici de
accesi!ilitate (i locali&area acestuiaQ
+ caracteristici ale mediul naturalF atri!utele audiovi&uale m'sura!ile ale mediului
natural% care afectea&' modalitatea n care con"inutul multimedia este livrat (iMsau consumat
de utili&atorF nivelul &#omotului% intensitatea luminii% fusul orar% loca"ia$
P Instrumentele de adaptare a resurselor sunt folosite pentru descrierea datelor
structurale% ale flu6urilor de !i"i (i a datelor despre adapta!ilitatea metadatelor (i se folose(te
pentru aceasta 4inarL )Lnta6 Description Lan#ua#e$ Descrierea se !a&ea&' pe mp'r"irea
flu6ului de !i"i n componente lo#ice% ca de e6emplu mp'r"irea unei secven"e video n cadre$
Flu6ul de !i"i este apoi transformat de un motor pentru adaptarea resursei elementului di#ital
ntr+un descriptor al sinta6ei flu6ului .4)D/% transformare care poate fi f'cut' su! controlul
X)LT .E6tensi!le )tLleseet Lan#ua#e Transformations/$ Descriptorul este de dorit s' fie
independent de un format media ceea ce permite reali&area adapt'rii resurselor !inare n orice
loca"ie$
P Instrumentele pentru adaptarea metadatelor 7 identific' datele care pot fi utili&ate
pentru reducerea comple6it'"ii instan"elor XML de adaptare a metadatelor$ )pecifica"iile se
refer' la filtrarea (i scalarea con"inutului (i la inte#rarea a dou' sau mai multe instan"e ale
descrierilor$
Le#'turile dintre principalele componente ale DI- sunt pre&entate n fi#ura A$
Pagina 21 din 97

Fi#ura A7 -daptarea elementului di#ital (i instrumente pentru DI-
Declararea unui DI- pentru descrierea caracteristicilor statice (i dinamice ale unei
re"ele se poate faceF
YDI- 6mlnsZ[urnFmpe#Fmpe#23FdiaFscemaF2IIA[
6mlnsF6siZ[ttpFMM:::$:A$or#M2II3MXML)cema+instance[\
YDescriere 6siFtLpeZ[Utili&areaMediului[\
YRetea\
YCapacitate Ma6imaZ[AGBIII[ Minima1arantataZ[A2III[M\
YMRetea\
YMDescriere\
YMDI-\
Caracteristicile monitorului unui terminal se pot descrieF
YDI- 6mlnsZ[urnFmpe#Fmpe#23FdiaFscemaF2IIA[
6mlnsF6siZ[ttpFMM:::$:A$or#M2II3MXML)cema+instance[\
Pagina 22 din 97

YTerminal\
YMonitor\
YCaracteristici !iti0er0i6elZ[2B[ CuloriZ[A2!iti[ RataRefresZ[EI[\
YRe&olutia Ori&ontalaZ[3I2B[ 5erticalaZ[EDG[M\
YMCaracteristici\
YMMonitor\
YMTerminal\
YMDI-\
C-0ITOLUL III
XML C- 4-O^ DE D-TE
A$3 Este XML+ul o !a&' de dateK
Jnainte de a discuta despre XML (i !a&e de date tre!uie s' r'spundem la ntre!area
8Este XML+ul o !a&' de dateK9
Un document XML este o !a&' de date n sensul cel mai strict al cuv*ntului (i anume
este o colec"ie de date$ )e poate considera c' aceste documente nu sunt diferite de orice alt tip
de fi(iere 7 n fond% toate fi(ierele con"in anumite tipuri de date$ -v*nd formatul unei !a&e de
date documentele XML pre&int' anumite avanta,e$ De e6emplu este auto+descris .ta#+urile
descriu structura (i numele tipurilor de date% dar nu (i semantica/% este porta!il .Unicode/% (i
poate descrie date n structuri de ar!ori sau #rafuri$ De asemenea are (i de&avanta,e$ De
e6emplu% este proli6s.neclar/ (i accesul la date este #reoi datorit' anali&'rii (i conversiei
te6tului$
0utem considera (i c' XML (i tenolo#iile asociate constituie o !a&' de date n sensul
mai lar# al cuv*ntului 7 adic'% un sistem de #estiune a !a&elor de date .)14D/$ XML ofer'
multe din avanta,ele !a&elor de dateF stocare .documente XML/% sceme .DTD+uri% sceme
XML% REL-X N1% ($a%/% lim!a,e de intero#are .X>uerL% X0at% X>L% XML+>L% >UILT%
etc$/% interfe"e de pro#ramare .)-X% DOM% WDOM/$ Totu(i multe componente ale !a&elor de
date conven"ionaleF stocare eficient'% indec(i% securitate% tran&ac"ii (i inte#ritatea datelor%
accesul multi+user% tri##ere% intero#'ri f'cute pe mai multe documente ($a$
-stfel% se pot folosi documente XML ca o !a&' de date ntr+un mediu cu cerin"e
modeste (i date pu"ine% dar aceast' solu"ie nu este via!il' ntr+un mediu pentru produc"ie n
mas'% unde e6ist' mul"i utili&atori% cerin"e stricte de inte#ritate a datelor (i nevoia de o
performan"' !un'$
Pagina 23 din 97

A$2 Date (i documente
Cel mai important factor n ale#erea unei !a&e de date este ce va stoca aceastaF date
sau documente$ XML+ul poate fi folosit doar pentru a transporta date ntre !a&a de date (i o
aplica"ie sau poate fi folosit inte#ral ca n ca&ul documentelor XRTML (i Doc4ooN$ )copul
utili&'rii XML este important deoarece toate documentele centrate pe date au anumite
caracteristici comune% la fel se nt*mpla (i n ca&ul informa"iilor centrate pe documente% (i
aceste caracteristici influen"ea&' felul cum XML+ul este stocat n !a&a de date$
A$2$3 Documente centrate pe date
Documentele centrate pe date sunt documente care folosesc XML+ul pentru
transportul datelor$ -ceste documente sunt folosite de c'tre aplica"ii (i nu are nici o
importan"' faptul c' informa"iile folosite au fost re"inute pentru o perioad' de timp n
documente XML$ E6emple de documente centrate pe date sunt ordine de plat'% pro#ramarea
&!orurilor% date (tiin"ifice$
Documente centrate pe date au o structur' re#ulat'% datele sunt atomice .cea mai mic'
unitate independenta de date este un element sau un atri!ut/$ Ordinea elementelor care apar n
document nu este important'% dec*t n momentul valid'rii documentului$
Informa"iile care e6ist' n documentele centrate pe date pot proveni din !a&a de date
.ca& n care se dore(te e6tra#erea lor n fi(iere XML/% dar (i din afara !a&ei de date .ca& n
care se dore(te stocarea acestora n !a&a de date/$ Un e6emplu de informa"ii care provin dintr+
o !a&' de date sunt cantit'"ile de date stocare n !a&ele de date rela"ionale% iar un e6emplu de
informa"ii care se doresc a fi introduse ntr+o !a&' de date pot fi considerate datele (tiin"ifice
o!"inute de un sistem de m'sur'tori (i convertite n XML$
De e6emplu urm'torul ordin de v*n&are este un document centrat pe dateF
YOrdin5an&ari NumarO5Z[32ABC[\
YClient NumarClientZ[CBA[\
YNumeClient\-4C IndustriesYMNumeClient\
Y)trada\32A Main )t$YM)trada\
YOras\Cica#oYMOras\
Y)tat\ILYM)tat\
YCod0ostal\DIDIHYMCod0ostal\
YMClient\
YDataOrdin\HG323CYMDataOrdin\
YItem NumarItemZ[3[\
Pagina 24 din 97

Y0arte Numar0arteZ[32A[\
YDescriere\
Yp\Y!\Ceie re#la!ilaFYM!\Y!r M\
Rotel ino6ida!il%
1arantie pe viata$YMp\
YMDescriere\
Y0ret\H$HCYM0ret\
YM0arte\
YCantitate\3IYMCantitate\
YMItem\
YItem NumarItemZ[2[\
Y0arte Numar0arteZ[BCD[\
YDescriere\
Yp\Y!\)eparatorFY!\Y!r M\
-luminiu% un an #arantie$YMp\
YMDescriere\
Y0ret\3A$2EYM0ret\
YM0arte\
YCantitate\CYMCantitate\
YMItem\
YMOrdin5an&ari\
0e l*n#' documentele centrate pe date cu structura asem'n'toare cu documentul din
e6emplul anterior% multe documente care con"in (i te6t adi"ional sunt centrate pe date$ )pre
e6emplu s' consider'm o pa#in' :e! care con"ine informa"ii despre o carte$ De(i pa#ina
con"ine n mare parte te6t% structura acelui te6t este re#ulat'% (i o parte din acel te6t este
comun' tuturor pa#inilor care descriu c'r"i% fiecare por"iune de te6t specific av*nd dimensiuni
limitate$ -stfel pa#ina ar putea fi construit' dintr+un document XML simplu% centrat pe date
care con"ine informa"ii despre o sin#ur' carte (i este o!"inut dintr+o !a&' de date (i un
stLleseet X)L care adau#' te6tul care lea#' informa"iile din XML$ Jn #eneral orice site :e!
care construie(te documente RTML dinamic prin completarea unui template cu informa"ii
dintr+o !a&' de date poate fi nlocuit cu mai multe documente XML centrate pe date (i unul
sau mai multe stLleseet+uri X)L$
De e6emplu% s' consider'm urm'torul document care descrie un &!orF
Pagina 25 din 97

YInfoO!or\
YLinie-eriana\-4C -ir:aLsYMLinie-eriana\ ofera YNumar\treiYMNumar\
&!oruri &ilnice non+stop din YOri#ine\DallasYMOri#ine\ spre
YDestinatie\Fort =ortYMDestinatie\$ Orele de plecare sunt
Y0lecare\IHF3CYM0lecare\% Y0lecare\33F3CYM0lecare\%
and Y0lecare\3AF3CYM0lecare\$ )osirile sunt cateva minute mai tar&iu$
YMInfoO!or\
-cesta ar putea fi construit dintr+un fi(ier XML (i un stLleseet simpluF
YO!oruri\
YLinie-eriana\-4C -ir:aLsYMLinie-eriana\
YOri#ine\DallasYMOri#ine\
YDestinatie\Fort =ortYMDestinatie\
YO!or\
Y0lecare\IHF3CYM0lecare\
Y)osire\IHF3DYM)osire\
YMO!or\
YO!or\
Y0lecare\33F3CYM0lecare\
Y)osire\33F3DYM)osire\
YMO!or\
YO!or\
Y0lecare\3AF3CYM0lecare\
Y)osire\3AF3DYM)osire\
YMO!or\
YMO!oruri\
A$2$2 Informa"ii centrate pe documente
Documentele care folosesc vi&iunea centrat' pe documente sunt% de o!icei% acele
documente care sunt destinate folosirii de c'tre utili&atori$ E6emple de astfel de documente
sunt c'r"ile% email% anun"uri pu!licitare (i aproape orice document XRTML scris de m*n'$
-cestea sunt caracteri&ate de o structur' mai pu"in re#ulat'% datele nu sunt atomice .cea mai
mic' unitate independent' de informa"ie poate fi format' dintr+un element m!inat cu alte
informa"ii din document/$ Ordinea elementelor care apar n document este aproape
ntotdeauna important'$
Pagina 26 din 97

-ceste tipuri de documente sunt de o!icei scrise manual n XML sau n alte formate
cum ar fi RTF% 0DF sau )1ML (i apoi sunt transformate n XML$ )pre deose!ire de
documentele centrate pe date aceste documente nu pot proveni din !a&e de date$
)pre e6emplu urm'torul document ce con"ine descrierea unui produs este centrat pe
documenteF
Y0rodus\
YIntro\
YNume0rodus\Ceie re#la!ilaYMNume0rodus\ de la Y0roducator\Full
Fa!rication La!s%Inc$YM0roducator\esteY)umar\ca o ceie universala%
dar mai mica$YM)umar\
YMIntro\
YDescriere\
Y0ara#raf\Ceia universala% care are Yi\ doua versiuni stan#a si dreapta YMi\% este
confectionata din Y!\cel mai fin otel ino6ida!il
YM!\$ Manerul cauciucat se adaptea&a la mainile dumneavoastra
ciar si in cele mai aluneacoase situatii$ )e poate re#la
prin mai multe discuri$YM0ara#raf\
Y0ara#raf\0utetiFYM0ara#raf\
YLista\
YItem\YLinN URLZ[Comanda$tml[\comanda propria dumneavoastra
ceie re#la!ila YMLinN\YMItem\
YItem\YLinN URLZ[=rences$tm[\Cititi mai multe despre ceiYMLinN\YMItem\
YItem\YLinN URLZ[Catalo#$&ip[\Descarcati catalo#ulYMLinN\YMItem\
YMLista\
Y0ara#raf\Ceia re#la!ila costa Y!\doar BB$HI RONYM!\ si% daca veti
comanda acum% veti primi un Y!\ciocanYM!\
cadou$YM0ara\
YMDescriere\
YM0rodus\
A$2$A Date% documente (i !a&e de date
Jn realitate diferen"a dintre documentele centrate pe date (i cele centrate pe documente
nu este ntotdeauna clar'$ -stfel de documente sunt cele le#ale sau medicale% care sunt scrise
Pagina 27 din 97

ca te6t dar con"in (i por"iuni de date cum ar fi nume% date% proceduri (i de multe ori tre!uiesc
stocate n ntre#ime din cau&e le#ale$
Cu toate acestea clasificarea documentelor ca fiind centrate pe date sau pe documente
poate determina tipul !a&ei de date necesare stoc'rii informa"iilor din aceste documente$ De
o!icei datele sunt stocate ntr+o !a&' de date tradi"ional' cum sunt cele rela"ionale sau
orientate+o!iect$ Documentele sunt stocate ntr+o !a&' de date nativ' XML .o !a&' de date
destinat' stoc'rii XML/ sau un sistem de #estionare a con"inuturilor .content mana#ement
sLstem/ 7 o aplica"ie destinat' administr'rii documentelor (i construit' peste o !a&' de date
nativ' XML$
Totu(i aceste re#uli nu sunt stricte$ Datele 7 n special datele semistructurate 7 pot fi
stocate n !a&e de date native XML (i documentele pot fi stocate n !a&e de date tradi"ionale
atunci c*nd nu sunt necesare foarte multe caracteristici specifice XML$ Jn plus% #rani"ele
dintre !a&ele de date tradi"ionale (i cele native XML devin din ce n ce mai neclare% deoarece
la !a&ele de date tradi"ionale se adau#' facilita"i native XML (i !a&ele de date native XML
suport' stocarea fra#mentelor de documente n !a&e de date% de o!icei rela"ionale% e6terne$
A$A )tocarea (i recuperarea datelor
0entru transferarea datelor ntre documente XML (i o !a&' de date% este necesar'
maparea scemei documentului XML .DTD% )ceme XML% REL-X N1% etc$/ pe scema
!a&ei de date$ )oft:are+ul pentru transferul de date este construit peste aceast' mapare$
)oft:are+ul poate folosi un lim!a, de intero#are XML .cum ar fi X0at% X>uerL/ sau poate
transfera direct date conform cu maparea .ecivalentul n XML al intero#'rii )ELECT _
FROM Ta!el'/$
Jn al doilea ca&% structura documentului (i structura necesar' pentru mapare tre!uie s'
fie identice$ Deoarece acest lucru se nt*mpl' destul de rar% produsele care folosesc aceast'
strate#ie sunt adesea folosite mpreun' cu X)LT$ -stfel% nainte de transferarea datelor n
!a&a de date% documentul este nt*i adus la structura necesar' map'rii (i apoi datele sunt
transferate$ )imilar dup' transferarea datelor din !a&a de date% documentul o!"inut este adus
la structura folosit' de c'tre aplica"ie$
A$A$3 Maparea scemelor documentelor pe scemele !a&elor de date
Map'rile ntre scemele documentelor (i scemele !a&elor de date sunt efectuate pe
tipurile elementelor% atri!ute% (i te6t$ -proape ntotdeauna se omit structurile fi&ice .cum ar fi
entit'"ile (i informa"ia codificat'/ (i unele structuri lo#ice .cum ar fi instruc"iunile de
procesare% comentariile/$ -ceste omiteri nu au o influen"' prea mare% deoarece !a&a de date (i
aplica"ia sunt interesate numai de datele din documentul XML$
Pagina 28 din 97

O consecin"' a acestor transform'ri 7 adic' stocarea datelor dintr+un document ntr+o
!a&' de date (i apoi reconstruirea documentului din datele e6istente n !a&a de date 7 este
o!"inerea unui document diferit$ Dac' acest lucru este accepta!il depinde de cerin"ele fiec'rui
proiect (i poate influen"a ale#erea softului$
De o!icei sunt folosite dou' metode pentru a mapa scema unui document XML pe
scema unei !a&e de dateF maparea !a&at' pe ta!ele (i maparea o!iectual+rela"ional'$
A$A$3$3 Maparea !a&at' pe ta!ele
Maparea !a&at' pe ta!ele este folosit' de multe produse care efectuea&' transferul de
date ntre un document XML (i o !a&' de date rela"ional'$ -ceasta modelea&' un document
XML ca o sin#ur' ta!el' sau ca un set de ta!ele$ )tructura documentului XML este ar'tat' n
e6emplul urm'tor$
Y!a&adedate\
Yta!ela\
Ylinie\
Ycoloana3\$$$YMcoloana3\
Ycoloana2\$$$YMcoloana2\
YMlinie\
Ylinie\
YMlinie\
YMta!ela\
Yta!ela\
YMta!ela\
YM!a&adedate\
Jn func"ie de soft:are datele din coloane pot fi stocate ca elemente descendente sau ca
atri!ute$ Jn plus% produsele care folosesc map'ri !a&ate pe ta!ele de multe ori includ metadate
fie la nceputul documentului fie ca atri!ute asociate fiec'rui element din ta!el' sau coloan'$
Pagina 29 din 97

Maparea !a&at' pe ta!ele este utili&at' pentru seriali&area datelor rela"ionale% ca n
ca&ul transfer'rii datelor ntre dou' !a&e de date rela"ionale$ De&avanta,ul acestei map'ri este
c' nu poate fi folosit' pentru un document XML care nu respect' formatul din e6emplu$
A$A$3$2 Maparea o!iectual+rela"ional'
Maparea o!iectual+rela"ional' este folosit' de c'tre toate !a&ele de date rela"ionale
care suport' XML (i anumite produse middle:are$ -ceasta modelea&' datele din documentul
XML ca un ar!ore de o!iecte care sunt specifice datelor din document$ Jn acest model%
tipurile de elemente cu atri!ute sunt n #eneral modelate n clase$ Tipurile de elemente
simple% atri!utele% (i 0CD-T- sunt modelate ca propriet'"i scalare$ Modelul este apoi mapat
pe !a&ele de date rela"ionale folosind tenici de mapare o!iectual+rela"ionale tradi"ionale$
-stfel clasele sunt mapate pe ta!ele% propriet'"ile scalare pe coloane% (i propriet'"ile cu valori
o!iect sunt mapate pe pereci de cei primareMcei str'ine$
Denumirea de 8mapare o!iectual+rela"ional'9 este de fapt un termen impropriu%
deoarece ar!orele de o!iecte poate fi mapat direct pe !a&e de date orientate o!iect (i
ierari&ate$ Totu(i este folosit pentru c' ma,oritatea produselor care folosesc aceast' mapare
folosesc !a&e de date rela"ionale (i acest termen este !ine cunoscut$
Este important' n"ele#erea faptului c' modelul o!iectual din aceast' mapare nu este
modelul DOM .Document O!,ect Model/$ DOM+ul modelea&' ciar documentul (i este
acela(i pentru toate documentele XML% n timp ce modelul descris mai sus modelea&' datele
din document (i este diferit pentru fiecare set de documente XML care corespund unei
sceme XML de date$ De e6emplu ordinul de v*n&'ri din sec"iunea A$2$3 ar putea fi modelat
ca un ar!ore de o!iecte format din B clase 7 Ordine5*n&'ri% Client% Item% (i 0arte 7 a(a cum
se arat' n dia#rama de mai ,osF

Ordine5*n&'ri
M ` a
Client Item Item
` `
0arte 0arte
Dac' ar tre!ui s' construim un ar!ore DOM din acela(i document% acesta ar fi compus
din o!iecte cum ar fi Element% -tri!ut (i Te6t$

Pagina 30 din 97

Element ++++++ -tri!ut
.Ordine5*n&'ri/ .Num'r O5/
bbbbbbbbbM M a abbbbb
M M a a
Element Te6t Element Element
.Client/ .Data ordinului/ .Item/ .Item/
` ` `
etc$ etc$ etc$
Instan"ierea o!iectelor din model depinde de produsul folosit$ Unele produse dau
posi!ilitatea #ener'rii claselor n model (i apoi folosirea o!iectelor din aceste clase n
aplica"ii$ Jn ca&ul folosirii acestor produse% datele sunt transferate ntre documentul XML (i
aceste o!iecte% (i ntre aceste o!iecte (i !a&a de date$ -lte produse folosesc aceste o!iecte
numai pentru a vi&uali&a maparea (i transferul de date direct ntre documentul XML (i !a&a
de date$
Felul n care maparea o!iectual+rela"ional' este suportat' varia&' de la produs la
produs$ De e6empluF
Toate produsele suport' maparea tipurilor comple6e de elemente pe clase (i a tipurilor
simple de elemente (i atri!ute pe propriet'"i$
Toate produsele dau posi!ilitatea desemn'rii unui element r'd'cin' care nu este mapat
pe modelul o!iect sau pe !a&a de date$ -cest element este folositor atunci c*nd se dore(te
stocarea o!iectelor cu mai multe nivele n acela(i document XML$
Ma,oritatea produselor ofer' posi!ilitatea specific'rii dac' propriet'"ile sunt mapate
pe atri!ute sau pe elemente descendente n documentul XML$ Unele produse permit
com!inarea atri!utelor cu elementele descendenteQ altele cer folosirea numai a elementelor
descendente sau a atri!utelor$
Ma,oritatea produselor permit folosirea numelor diferite n documentul XML (i !a&a
de date% dar sunt anumite produse care necesit' folosirea acelora(i nume at*t n documentul
XML c*t (i n !a&a de date$
Ma,oritatea produselor permit specificarea ordinii n care elementele descendente apar
n p'rintele lor% dar care face imposi!il' construirea mai multor modele pentru con"inut$ Din
fericire% modelele pentru con"inut suportate sunt suficiente pentru ma,oritatea documentelor
centrate pe date .ordinea este important' numai dac' se face validarea documentului/$
A$A$2 Lim!a,e de intero#are
Pagina 31 din 97

Multe produse transfer' date direct conform cu modelul pe care sunt construite$
Deoarece structura documentului XML este de o!icei diferit' de structura !a&ei de date%
aceste produse deseori con"in sau sunt folosite cu X)LT$ -cesta d' posi!ilitatea utili&atorilor
s' transforme documente la structura modelului naintea transfer'rii datelor n !a&a de date% (i
invers$ Deoarece procesarea X)LT poate fi scump'% unele produse con"in un num'r limitat de
transform'ri n map'rile lor$
)olu"ia pe termen lun# la aceast' pro!lem' este implementarea unor lim!a,e de
intero#are care returnea&' XML$ Jn pre&ent cele mai multe asemenea lim!a,e se !a&ea&' pe
fra&e )ELECT inte#rate n (a!loane$ )e presupune c' aceast' situa"ie se va scim!a atunci
c*nd X>uerL (i )>LMXML vor fi finali&ate% acestea afl*ndu+se n lucru$ -proape toate
lim!a,ele de intero#are XML sunt deocamdat' read+onlL% deci vor fi necesare metode diferite
pentru inserarea% actuali&area (i (ter#erea datelor .n viitor aceste facilita"i vor fi ad'u#ate/$
A$A$2$3 Lim!a,e de intero#are !a&ate pe (a!loane
Cele mai des nt*lnite lim!a,e de intero#are care returnea&' XML din !a&e de date
rela"ionale sunt cele !a&ate pe (a!loane$ Jn aceste lim!a,e% nu e6ist' o mapare predefinit'
ntre document (i !a&a de date$ Fra&ele )ELECT sunt inte#rate ntr+un (a!lon (i re&ultatele
sunt procesate de c'tre soft:are+ul care transfera date$ De e6emplu% urm'torul template
folose(te elementele Y)elect)tmt\ pentru a include fra&e )ELECT (i numele coloanelor
pentru a determina unde tre!uiesc plasate re&ultateleF
YK6ml versionZ[3$I[K\
YInfoO!or\
YIntroducere\ Urmatoarele &!oruri sunt diponi!ileFYMIntroduction\
Y)elect)tmt\)ELECT -irline% FltNum!er%
Depart% -rrive FROM Fli#tsYM)elect)tmt\
YO!or\
YLinie-eriana\c-irlineYMLinie-eriana\
YNumarFlt\cFltNum!erYMNumarFlt\
Y0lecare\cDepartYM0lecare\
Y)osire\c-rriveYM)osire\
YMO!or\
YConclu&ie\)peram ca unul dintre ele va este de folosYMConclu&ie\
YMInfoO!or\
Pagina 32 din 97

Re&ultatul proces'rii unui asemenea (a!lon ar putea fiF
YK6ml versionZ[3$I[K\
YInfoO!or\
YIntroducere\ Urmatoarele &!oruri sunt diponi!ileFYMIntroduction\
YO!oruri\
YO!or\
YLinie-eriana\-CMEYMLinie-eriana\
YNumarFlt\32AYMNumarFlt\
Y0lecare\Dec 32% 3HHG 3AFBAYM0lecare\
Y)osire\Dec 3A% 3HHG I3F23YM)osire\
YMO!or\
YMO!oruri\
YConclu&ie\)peram ca unul dintre ele va este de folosYMConclu&ie\
YMInfoO!or\
Lim!a,ele de intero#are !a&ate pe (a!loane pot fi foarte fle6i!ile$ De(i setul de
caracteristici varia&' de la un produs la altul% e6ist' unele caracteristici comuneF
-!ilitatea de a plasa seturi de re&ultate oriunde n documentul de ie(ire% inclu&*nd ca
parametrii (i fra&ele )ELECT $
Construc"ii cum ar fi cicluri FOR (i instruc"iuni IF$
Definiri de varia!ile (i func"ii
0arametri&area fra&elor )ELECT prin intermediul parametrilor RTT0$
Lim!a,ele de intero#are !a&ate pe (a!loane sunt folosite aproape e6clusiv pentru a
transfera date din !a&e de date rela"ionale n documente XML$ De(i unele produse care
folosesc lim!a,e de intero#are !a&ate pe (a!loane pot transfera date din documente XML n
!a&e de date rela"ionale% ele nu folosesc (a!loanele numai pentru acest lucru$ Jn scim! ele
folosesc o mapare !a&at' pe ta!ele% a(a cum este descris' anterior$
A$A$2$2 Lim!a,e de intero#are !a&ate pe )>L
Lim!a,ele de intero#are !a&ate pe )>L folosesc fra&e )ELECT modificate% iar
re&ultatele sunt transformate n XML$ E6ist' c*teva lim!a,e particulare de acest tip (i cel mai
simplu dintre acestea folose(te fra&e )>L im!ricate .nested/% care sunt transformate direct n
XML im!ricat .nested/ conform cu maparea rela"ional+o!iectual'$ Un alt lim!a, de acest tip
Pagina 33 din 97

folose(te o!iecte )>L A% de asemenea transformate direct n XML$ Un alt lim!a, folose(te
fra&e OUTER UNION (i marca,e speciale pentru a determina cum sunt transformate
re&ultatele n XML$
Jn plus fa"a de lim!a,ele particulare% un num'r de companii s+au reunit n 2III pentru
a standardi&a e6tensiile XML la )>L$ Re&ultatele lor fac parte acum din specifica"ia I)O
)>L (i este cunoscut' ca )>LMXML$ )>LMXML introduce un tip de date XML (i adau#' un
num'r de func"ii la )>L% a(a c' este posi!il' construirea elementelor XML (i a atri!utelor din
date rela"ionale$
De e6emplu% urm'toarea intero#areF
)ELECT Orders$)ONum!er%
XMLELEMENT.N-ME [Order[%
XML-TTRI4UTE).Orders$)ONum!er -) )ONum!er/%
XMLELEMENT.N-ME [Date[% Orders$Date/%
XMLELEMENT.N-ME [Customer[% Orders$Customer// -) 6mldocument FROM
Orders
construie(te un set de re&ultate cu dou' coloane$ 0rima coloan' con"ine num'rul
ordinului de v*n&'ri (i a doua coloan' con"ine un document XML$ E6ist' un document XML
pe fiecare linie% construit din datele din linia corespun&'toare n ta!elul de comen&i$ De
e6emplu documentul pentru linia pentru ordinul de v*n&are 32A ar putea fiF
YOrdin NumarO5Z[32A[\
YData\IBM2HMIEYMData\
YClient\1alla#er IndustriesYMClient\
YMOrdin\
A$A$2$A Lim!a,e de intero#are XML
)pre deose!ire de lim!a,ele de intero#are !a&ate pe (a!loane sau !a&ate pe )>L% care
pot fi folosite numai cu !a&e de date rela"ionale% lim!a,ele de intero#are XML pot fi folosite
pentru orice document XML$ 0entru a folosi acest tip de lim!a,e cu !a&e de date rela"ionale%
datele din !a&a de date tre!uie s' fie modelate ca XML$
Cu X>uerL% poate fi folosit' fie maparea !a&at' pe ta!ele fie maparea o!iectual
rela"ional'$ Dac' este folosit' o mapare !a&at' pe ta!ele% fiecare ta!el' este tratat' ca un
document separat (i n fiecare intero#are sunt specificate uniri ntre ta!ele% ca n )>L$ Dac'
este folosit' o mapare o!iectual+rela"ional' atunci ierariile de ta!ele sunt tratate ca un sin#ur
document (i sunt specificate uniri n mapare$ )e preconi&ea&' c' map'rile !a&ate pe ta!ele
Pagina 34 din 97

vor fi utili&ate n ma,oritatea implement'rilor% n detrimentul !a&elor de date rela"ionale%
deoarece se consider' c' sunt mai u(or de implementat (i mai !ine cunoscute de utili&atorii
)>L$
Cu X0at% o mapare o!iectual+rela"ional' tre!uie s' fie folosit' pentru a e6ecuta
intero#'ri peste mai multe ta!ele$ -ceasta se nt*mpl' deoarece X0at nu suport' unirile ntre
documente$ -stfel% dac' ar fi folosit' o mapare !a&at' pe ta!ele% ar fi posi!il' intero#area unei
sin#ure ta!ele la un moment dat$
A$A$A )tocarea datelor n !a&e de date native XML
De asemenea este posi!il' stocarea datelor n documente XML ntr+o !a&' de date
nativ' XML$ -cest lucru se face din mai multe motive$ 0rimul ar fi acela c*nd datele sunt
semistructurate% adic' acestea au o structur' re#ulat'% dar acea structur' varia&' destul nc*t
maparea ei la o !a&' de date rela"ional' duce fie la un num'r mare de coloane cu valori nule
.care ocup' spa"iu inutil/% fie la un num'r mare de ta!ele .care este ineficient/$ De(i datele
semistructurate pot fi stocate n !a&e de date ierari&ate orientate+o!iect% se poate ale#e
stocarea lor ntr+o !a&' de date nativ' XML su! forma unui document XML$
-l doilea motiv pentru stocarea datelor ntr+o !a&' de date nativ' XML este vite&a de
recuperare a datelor$ Jn func"ie de cum sunt stocate datele n !a&a de date nativ' XML% ar
putea fi posi!il' recuperarea datelor mult mai repede dec*t ntr+o !a&' de date rela"ional'$
-cest lucru se poate nt*mpla deoarece unele strate#ii de stocare folosite de c'tre !a&ele de
date native XML re"in fi&ic documente ntre#i sau folosesc pointeri fi&ici .(i nu lo#ici/ ntre
p'r"ile documentelor$ -cestea permit ca documentele s' fie recuperate fie f'r' uniri fie
folosind uniri fi&ice% am!ele fiind mai rapide dec*t unirile lo#ice folosite n !a&ele de date
rela"ionale$
De e6emplu se consider' ordinul de v*n&are pre&entat mai sus$ Jntr+o !a&' de date
rela"ional'% acesta ar fi stocat n patru ta!ele 7 Ordine5*n&'ri% Itemi% Clien"i% (i 0arte 7 (i
recuperarea documentului ar necesita uniri ntre aceste ta!ele$ Jntr+o !a&' de date nativ'
XML% ntre# documentul ar putea fi stocat ntr+o sin#ur' loca"ie pe disc% a(a c' recuperarea
lui sau a unui fra#ment din el necesit' o sin#ur' c'utare inde6at' (i o sin#ur' citire pentru
recuperarea datelor$ O !a&' de date rela"ional' necesit' patru c'ut'ri inde6ate (i cel pu"in
patru citiri pentru a recupera datele$
De&avanta,ul n acest ca& este acela c' vite&a de recuperare este mare numai atunci
c*nd datele din comand' sunt stocate pe disc$ Dac' se dore(te recuperarea altor date% cum ar
fi o list' a clien"ilor (i ordinele de v*n&are ale lor% atunci performanta va fi mai sla!' dec*t
Pagina 35 din 97

ntr+o !a&' de date rela"ional'$ -stfel% stocarea datelor ntr+o !a&' de date nativ' XML se
recomand' din motive de performan"a atunci c*nd predomin' o sin#ur' vedere asupra datelor$
-l treilea motiv pentru stocarea datelor ntr+o !a&' de date nativ' XML este
e6ploatarea capacit'"ilor specifice XML% cum ar fi e6ecutarea intero#'rilor XML$ Deoarece
relativ pu"ine aplica"ii centrate pe date au nevoie de acestea (i !a&ele de date rela"ionale
implementea&' lim!a,e de intero#are XML% acest motiv nu este foarte important$
O pro!lem' cu stocarea datelor ntr+o !a&' de date nativ' XML este c' ma,oritatea
acestor !a&e de date pot returna datele numai ca XML$ .0u"ine !a&e de date suport' le#area
elementelor sau atri!utelor de varia!ilele dintr+o aplica"ie$/ Dac' o aplica"ie are nevoie de
date ntr+un alt format .ceea ce este posi!il/% aceasta tre!uie s' anali&e&e XML+ul nainte de a
folosi datele$ -cesta este un de&avanta, pentru aplica"iile locale care folosesc o !a&' de date
nativ' XML n locul unei !a&e de date rela"ionale$
A$A$B Tipuri de date% valori nule% seturi de caractere
-ceast' sec"iune se ocup' de anumite pro!leme le#ate de stocarea datelor din
documente XML n !a&e de date tradi"ionale$ 0ro!lemele le#ate de tipurile de date (i datele
!inare apar (i n ca&ul stoc'rii datelor n !a&e de date native XML$ Jn #eneral utili&atorul nu
poate ale#e modalitatea n care sotf+ul care transfer' datele re&olv' aceste pro!leme% dar
atunci c*nd se ale#e un anumit soft tre!uie "inut cont de faptul c' aceste pro!leme e6ist'$
A$A$B$3 Tipuri de date
XML nu suport' prea multe tipuri de date$ Cu e6cep"ia entit'"ilor neanali&ate% toate
datele dintr+un document XML sunt te6t% ciar dac' repre&int' alt tip de date% cum ar fi datele
calendaristice sau inte#er$ Jn #eneral soft+ul de transfer date va transforma te6tul .din
documentul XML/ n alte tipuri de date .n !a&a de date/ (i invers$
)oftul determin' ce conversii sunt necesare (i e6ist' dou' metode pentru efectuarea
acestora$ 0rima metod' const' n determinarea de c'tre soft:are a tipurilor de date din
scema !a&ei de date% deoarece aceasta este accesi!il' la rulare$ .)cema XML nu este
neap'rat accesi!il' la rulare sau s+ar putea sa nu e6iste$/ Jn a doua metod' utili&atorul
specific' tipul de date$ -cesta poate fi scris de c'tre utili&ator sau #enerat automat dintr+o
scem' a unei !a&e de date sau dintr+o scem' XML$ -tunci c*nd sunt #enerate automat%
tipurile de date pot fi recuperate din scemele !a&elor de date (i din anumite tipuri de sceme
XML$
Pagina 36 din 97

Formatele de te6t recunoscute n momentul conversiilor pot constitui o pro!lem'
atunci c*nd se transfer' date din XML% la fel (i formatele care se pot crea atunci c*nd se
transfer' date c'tre XML$ Jn cele mai multe ca&uri% num'rul de formate de te6t care sunt
suportate de un tip de dat' este limitat la unul anume sau la cele suportate de driverul WD4C$
Datele pot cau&a multe pro!leme pentru c' #ama de formate posi!ile este foarte mare% iar
numerele cu diferitele lor formate interna"ionale pot cau&a de asemenea pro!leme$
A$A$B$2 Date !inare
Datele !inare se pot stoca n documente XML n trei feluriF codificare 4aseDB .o
codificare MIME care mapea&' datele !inare pe un su!set al U)+-)CII ?I+H% a+&% -+O%d%M@/%
codificarea e6a&ecimal' .fiecare octet !inar este codificat cu dou' caractere repre&ent*nd
cifre e6a&ecimale ?I+H%a+f%-+F@/% (i entit'"i neanali&ate .datele !inare sunt stocate ntr+o
entitate fi&ic' separat' de restul documentului XML/$
Cea mai mare pro!lem' cu datele !inare este c' multe dintre produsele care transfer'
date nu suport' acest tip de date$ O pro!lem' secundar' apare dac' sunt folosite entit'"i
neanali&ate (i const' n faptul c' ma,oritatea produselor nu stocea&' nota"ii (i declara"ii de
entit'"i$ -stfel% nota"ia asociat' cu o anumit' entitate va fi pierdut' atunci c*nd datele sunt
transferate dintr+un document XML ntr+o !a&' de date$
A$A$B$A Date vide
Jn domeniul !a&elor de date% date vide sunt numite datele care nu e6ist'$ -cestea sunt
foarte diferite de valoarea I .pentru numere/% sau lun#imea &ero .pentru un strin#/$ De
e6emplu% se ia n considerare o colec"ie de date de la o sta"ie meteo$ Dac' termometrul nu
func"ionea&'% n !a&a de date este stocat' o valoare nul' (i nu valoarea &ero% care ar nsemna
cu totul altceva$
XML suport' de asemenea conceptul de date vide prin tipuri de elemente (i atri!ute
op"ionale$ Dac' valoarea unui tip sau atri!ut op"ional este nul' acesta nu este inclus n
document$ Jn ca&ul !a&elor de date% atri!utele care con"in (iruri de caractere cu lun#imea &ero
sau elemente nule nu sunt vide% valoarea lor este un (ir cu lun#imea &ero$
La maparea structurii unui document XML la !a&a de date (i invers% tipurile de date (i
atri!utele op"ionale sunt mapate ca (i coloane vide$ Dac' nu se procedea&' n acest mod s+ar
putea inserarea o eroare .atunci c*nd se transfer' date n !a&a de date/% sau la un document
invalid .atunci c*nd se transfer' date din !a&a de date/$
Pagina 37 din 97

A$A$B$B )eturi de caractere
Un document XML poate con"ine orice caracter Unicode cu e6cep"ia unor caractere
de control$ Din nefericire% multe !a&e de date ofer' suport limitat sau nu ofer' suport deloc
pentru Unicode (i necesit' o confi#ura"ie special' pentru caracterele non+-)CII$
A$A$B$C Instruc"iuni de procesare (i comentarii
Instruc"iunile de procesare (i comentariile nu fac parte din datele dintr+un document
XML (i ma,oritatea soft+urilor de transfer de date nu le pot manipula$ Totu(i ele pot ap'rea
aproape oriunde ntr+un document XML (i de aceea nu se inte#rea&' u(or n map'rile !a&ate
pe ta!ele (i cele o!iectual rela"ionale$ O solu"ie total ineficient' ntr+o !a&' de date rela"ional'
este ad'u#area unor ta!ele pentru instruc"iuni de procesare (i comentarii% ad'u#area de cei
str'ine la aceste ta!ele pentru toate celelalte ta!ele% (i verificarea acestor ta!ele de fiecare
data c*nd se procesea&' o alt' ta!el'$ -stfel ma,oritatea soft+urilor de transfer de date le
nl'tur'$
A$A$B$D )tocarea marca,elor
Jn anumite situa"ii este indicat' stocarea elementelor cu con"inut mi6t n !a&a de date
f'r' a se efectua anali&a complet'$ C*nd este reali&at acest lucru% marca,ul este reali&at cu
caractere de marcare$ Totu(i apare o pro!lem' la stocarea caracterelor de marcare care nu
sunt folosite pentru marca,$ Jn fi(ierul XML% acestea sunt stocate folosind entitatile lt% #t%
amp% ]uot% (i apos$ -cest lucru poate fi f'cut (i n !a&a de date$ De e6emplu urm'toarea
descriereF
Ydescriere\
Y!\E6emplu confu&FYM!\ SltQfooMS#tQ
YMdescriere\
poate fi stocat' n !a&a de date caF
Y!\E6emplu confu&FYM!\ SltQfooMS#tQ
Totu(i apare o pro!lem'% lim!a,ele de intero#are non+XML% cum ar fi )>L% nu caut'
n coloane marca,e sau folosirea de entit'"i (i le interpretea&' ca atare$ -stfel% dac' se caut'
(irul 8YfooM\9 cu )>L% de fapt tre!uie c'utat (irul 8SltQfooMS#tQ9$
Pagina 38 din 97

0e de alt' parte% dac' referin"ele la entit'"i sunt e6tinse% soft:are+ul de transfer de date
nu poate distin#e ntre marca, (i folosirea entit'"ilor$ De e6emplu% dac' descrierea de mai sus
este stocat' n !a&a de date n forma urm'toare% soft+ul nu poate spune dac' Y!\%YM!\% (i
YfooM\ sunt marca,e sau te6tF
Y!\E6emplu confu&FYM!\ YfooM\
)olu"ia pe termen lun# la aceast' pro!lem' sunt !a&ele de date care recunosc XML% n
care marca,ul efectiv e tratat diferit de elementele care doar par a fi marca,$ Dar% pro!a!il vor
fi ntotdeauna pro!leme atunci c*nd aplica"ii non+XML lucrea&' cu XML$
A$A$C 1enerarea scemelor XML din sceme rela"ionale (i invers
O ntre!are care apare frecvent la transferul datelor ntre documente XML (i !a&e de
date este cum se #enerea&' sceme XML din sceme ale !a&elor de date (i invers$ Jnainte de
a e6plica cum se face acest lucru% este !ine de re"inut faptul c' aceasta este o opera"ie desi#n+
time$ Motivul pentru acest lucru este c' ma,oritatea aplica"iilor centrate pe date% (i cele mai
multe aplica"ii pe vertical'% lucrea&' cu un set cunoscut de sceme XML (i sceme de !a&e de
date$ -stfel ele nu tre!uie s' #enere&e sceme n momentul rul'rii$ Jn plus procedurile pentru
#enerarea scemelor nu sunt perfecte$ -plica"iile care tre!uie s' re"in' documente XML
aleatoare ntr+o !a&' de date ar tre!ui s' foloseasc' o !a&' de date nativ' XML n loc s'
#enere&e sceme la rulare$
Cea mai u(oar' cale de a #enera sceme rela"ionale din sceme XML (i invers este de
a codifica o cale prin maparea o!iectual rela"ional'% care are un num'r de tr's'turi op"ionale$
O scem' rela"ional' se #enerea&' dintr+o scema XML astfelF
0entru fiecare tip comple6 de elemente tre!uie creat' o ta!el' (i o coloan' ceie
primar'$
0entru fiecare tip de elemente cu con"inut mi6t% tre!uie creat' o ta!el' separat' n care
se va stoca 0CD-T-% le#at' de ta!ela p'rinte prin intermediul ceii primare din ta!ela
p'rinte$
0entru fiecare atri!ut cu o sin#ur' valoare a acelui tip de element% (i pentru fiecare
element descendent simplu care apare o sin#ur' dat' tre!uie creat' o coloan' n acel ta!el$
Dac' scema XML con"ine informa"ia despre tipurile de date% atunci tre!uie setate tipurile de
date ale coloanelor la tipul corespun&'tor$ -ltfel% tipurile de date tre!uie setate la un tip
predeterminat% cum ar fi CLO4 sau 5-RCR-R.2CC/$ Dac' tipul elementelor descendente
sau al atri!utelor este op"ional coloana tre!uie s' ai!' posi!ilitatea de a fi setat' nul'$
Pagina 39 din 97

0entru fiecare atri!ut cu mai multe valori (i pentru fiecare element descendent simplu
care apare de mai multe ori tre!uie creat' o ta!el' separat' pentru a stoca valorile% le#at' de
ta!ela p'rinte prin intermediul ceii primare din ta!ela p'rinte$
0entru fiecare element descendent comple6% tre!uie le#at' ta!ela tipului elementului
p'rinte de ta!ela tipului elementului descendent prin intermediul ceii primare din ta!ela
p'rinte$
O scema XML se #enerea&' dintr+o scem' rela"ional' astfelF
0entru fiecare ta!el' se #enerea&' un tip de element
0entru fiecare coloan' care nu este ceie n acea ta!el'% dar (i pentru coloanele cei
primare% se adau#' la model un atri!ut la tipul elementului sau un element descendent ce
con"ine numai 0CD-T-$
La fiecare ta!el' pentru care ceia primar' este e6portat'% se adau#' un element
descendent la model (i se procesea&' ta!ela recursiv$
0entru fiecare ceie str'ina% se adau#' un element descendent la model (i se
procesea&' ta!ela cu ceie str'in' recursiv$
E6ist' c*teva de&avanta,e la aceste procedee$ Multe dintre acestea se pot corecta u(or
de c'tre pro#ramator% cum ar fi coli&iuni de nume (i specificarea lun#imilor (i tipurilor de
date ale coloanelor$ DTD+urile nu con"in informa"ii despre tipurile de date% deci nu este
posi!il' cunoa(terea tipurilor de date care ar tre!ui folosite n !a&a de date$ Tipurile de date (i
lun#imile pot fi prev'&ute dintr+o scem' XML$
O pro!lem' mai important' este aceea c' modelul de date folosit de documentul XML
este adesea diferit (i de o!icei mai comple6 dec*t cel mai eficient model pentru stocarea
datelor n !a&a de date$ De e6emplu% se consider' urm'torul fra#ment XMLF
YClient\
YNume\-4C IndustriesYMNume\
Y-dresa\
Y)trada\32A Main )t$YM)trada\
YOras\FoovilleYMOras\
Y)tat\C-YM)tat\
YTara\U)-YMTara\
YCod0ostal\HCIB3YMCod0ostal\
YM-dresa\
YMClient\
Pagina 40 din 97

0rocedura pentru #enerarea unei sceme rela"ionale dintr+o scem' XML ar crea dou'
ta!eleF una pentru clien"i (i una pentru adrese$ Totu(i n ma,oritatea ca&urilor ar fi mai !ine s'
se re"in' adresa n ta!ela de clien"i% (i nu ntr+o ta!el' separat'$
Elementul Y-dresa\ este un !un e6emplu pentru un element :rapper$ Elementele
:rapper sunt n #eneral folosite din dou' motive$ Jn primul r*nd% ele ofer' structuri adi"ionale
ceea ce face documentul mai u(or de n"eles$ Jn al doilea r*nd% ele sunt de o!icei folosite ca o
form' de redactare a datelor$ De e6emplu% elementul Y-dresa\ ar putea fi trimis la o rutin'
care transform' toate adresele n o!iecte -dresa% indiferent unde apar acestea$
Daca elementele :rapper sunt folositoare n XML% n #eneral ele cau&ea&' pro!leme
atunci c*nd sunt mapate la !a&a de date dac' acestea se #'sesc su! forma e6tra+structurilor$
Din aceast' cau&'% ele ar tre!ui eliminate din scema XML naintea #ener'rii scemei
rela"ionale$ Din moment ce este pu"in pro!a!il c' modificarea scemei XML ar tre!ui s' fie
permanent'% acest lucru duce la o neconcordan"' ntre documentul e6istent (i documentele
presupuse de c'tre soft+ul de transfer de date% din moment ce elementele :rapper nu sunt
incluse n mapare$ -cest lucru poate fi re&olvat prin transformarea documentelor la rulare cu
X)LTF elementele :rapper sunt eliminate naintea transfer'rii datelor n !a&a de date (i sunt
inserate dup' transferul datelor din !a&a de date$
Cu toate aceste de&avanta,e% procedurile de mai sus ofer' n continuare un punct de
pornire folositor pentru #enerarea scemelor XML din sceme rela"ionale (i invers% n special
n sisteme mari$
A$B )tocarea (i recuperarea documentelor
0entru stocarea documentelor XML e6ist' dou' strate#ii de !a&'F stocarea lor n
sistemul de fi(iere sau ca un 4LO4 ntr+o !a&' de date rela"ional' (i acceptarea
func"ionalit'"ilor XML limitate% sau stocarea lor ntr+o !a&' de date nativ' XML$
A$B$3 )tocarea documentelor n sistemul de fi(iere
Dac' se lucrea&' cu un set simplu de documente% cum ar fi un set mic de
documenta"ie% cea mai u(oara cale de stocare este n sistemul de fi(iere$ )e pot folosi
instrumente cum ar fi 8#rep9 pentru intero#area lor% (i 8sed9 pentru modificarea lor$ C'ut'rile
complete de te6t n documentele XML sunt ine6acte% pentru c' ele nu pot distin#e marca,ul
de te6t (i nu pot n"ele#e folosirea entit'"ilor$ Totu(i% ntr+un sistem mic% aceste ine6actit'"i ar
putea fi accepta!ile$ Dac' se dore(te un simplu control al tran&ac"iilor% documentele pot fi
ntre"inute cu o versiune de control a sistemului cum ar fi C5) sau RC)$
A$B$2 )tocarea documentelor n 4LO4+uri
Pagina 41 din 97

O op"iune pu"in mai sofisticat' este stocarea documentelor ca 4LO4+uri ntr+o !a&'
de date rela"ional'$ -ceast' modalitate ofer' un num'r de avanta,e a !a&elor de dateF
controlul tran&ac"iilor% securitate% acces multiuser$ Jn plus% multe !a&e de date au instrumente
pentru c'ut'ri de te6t (i pot face c'ut'ri complete de te6t% c'ut'ri apro6imative% c'ut'ri
sinonime (i c'ut'ri fu&&L$ Unele dintre aceste instrumente sunt construite pentru a recunoa(te
XML% ceea ce va elimina pro!lemele care apar la c'ut'rile documentelor XML ca simplu
te6t$
-tunci c*nd se stocea&' documente XML ca 4LO4+uri% se pot implementa u(or
inde6'ri simple care recunosc XML% ciar dac' !a&a de date nu poate inde6a XML$ O
modalitate de a face acest lucru este crearea a dou' ta!ele% o ta!el' inde6 (i o ta!el'
document$ Ta!ela document con"ine o ceie primar' (i o coloan' 4LO4 n care este re"inut
documentul$ Ta!ela inde6 con"ine o coloan' n care se #'se(te valoarea ce va fi inde6at' (i o
ceie str'in' care duce la ceia primar' a ta!elei document$
-tunci c*nd documentul este stocat n !a&a de date% el este c'utat pentru toate
instan"ele elementului sau atri!utului care este inde6at$ Fiecare instan"a este stocat' n ta!ela
inde6% mpreuna cu ceia primara a documentului$ Coloana de valori este apoi inde6at'% (i
permite unei aplica"ii s' efectue&e o c'utare rapid' a unei anumite valori a unui element sau
atri!ut (i s' recupere&e documentul corespun&'tor$
De e6emplu% se consider' un set de documente cu urm'torul DTD (i se dore(te
construirea unui inde6 de autoriF
YeELEMENT 4rosura .Titlu% -utor% Continut/\
YeELEMENT Titlu .f0CD-T-/\
YeELEMENT -utor .f0CD-T-/\
YeELEMENT Continut .gInlineQ/\ Ye++ Inline entitL from XRTML ++\
-cestea ar putea fi stocate n urm'toarele ta!eleF
-utori 4rosuri
++++++++++++++++++++++ +++++++++
-utor 5-RCR-R.CI/ 4rosurID INTE1ER
4rosuraID INTE1ER 4rosura LON15-RCR-R
C*nd se inserea&' o !ro(ur' n !a&a de date% aplica"ia inserea&' !ro(ura n ta!ela
4ro(uri% apoi caut' elementele Y-utor\% re"in*nd valorile acestora (i ID+ul !ro(urii din ta!ela
-utori$ -plica"ia poate recupera !ro(urile n func"ie de autor cu o simpl' fra&a )ELECT$ De
Pagina 42 din 97

e6emplu% pentru a recupera toate !ro(urile scrise de autorul 8Cen9% aplica"ia e6ecut'
urm'toarea intero#areF
)ELECT 4rosura
FROM 4rosuri
=RERE 4rosuraID IN .)ELECT 4rosuraID FROM -utori =RERE -utorZ hCenh/
O ta!el' de indec(i mai sofisticat' ar con"ine patru coloaneF numele atri!utului sau
elementului% tipul% valoarea (i ID+ul documentului$ -ceasta ta!el' ar putea stoca valorile
marca,elor multiple (i ar tre!ui inde6at' dup' nume% tip% (i valoare$ )crierea unei aplica"ii
#enerice )-X pentru a popula o astfel de ta!el' ar fi relativ u(oar'$
A$B$A 4a&e de date native XML
Dac' sunt necesare mai multe caracteristici dec*t cele oferite de unul din sistemele de
mai sus% tre!uie luat' n considerare o !a&' de date nativ' XML$ 4a&ele de date native XML
sunt !a&e de date construite special pentru a stoca documente XML$ Ca (i alte !a&e de date%
acestea suport' tran&ac"ii% securitate% acces multiuser% -0I+uri pro#ramatice% lim!a,e de
intero#are$ )in#ura diferen"' fa"' de alte !a&e de date este aceea c' modelul lor interior este
!a&at pe XML (i nu pe altceva% ca n ca&ul modelului rela"ional$
4a&ele de date native XML sunt de o!icei folosite pentru a stoca documente centrate
pe documente$ 0rincipalul motiv este c' ofer' suport pentru lim!a,e de intero#are XML% care
ofer' posi!ilitatea adres'rii unor ntre!'ri de formaF 8E6tra#e toate documente n care al
treilea para#raf de la nceputul sec"iunii con"ine un cuv*nt n#ro(at9% sau ofer' posi!ilitatea
limit'rii c'ut'rilor complete de te6t la anumite por"iuni din document$ -semenea intero#'ri
sunt dificil de scris ntr+un lim!a, ca )>L$ Un alt motiv este acela c' !a&ele de date native
XML p'strea&' ordinea documentelor% instruc"iunile de procesare% (i comentarii% (i adesea
p'strea&' sec"iuni CD-T-% folosirea entit'"ilor% (i altele% pe c*nd !a&ele de date ce permit
folosirea XML nu posed' aceste caracteristici$
4a&ele de date native XML sunt de o!icei folosite pentru a inte#ra date$ Inte#rarea
datelor a fost f'cut' cu !a&e de date rela"ionale federate% dar acestea necesitau ca toate
resursele de date s' fie mapate la modelul rela"ional$ -ceast' modalitate nu func"ionea&'
pentru mai multe tipuri de date (i modelul de date XML ofer' o fle6i!ilitate mai mare$ 4a&ele
de date native XML tratea&' modific'rile scemelor mai u(or dec*t !a&ele de date rela"ionale
(i pot trata (i date care nu au scem'$ -m!ele considera"ii sunt importante pentru inte#rarea
datelor din surse care nu se afl' su! control direct$
Pagina 43 din 97

-l treilea ca& de utili&are ma,or al !a&elor de date native XML este pentru datele
semistructurate% a(a cum se #'sesc n finan"e% n !iolo#ie% date care se scim!' at*t de des
nc*t nu este posi!il' definirea unor sceme definitive$ Datorit' faptului c' !a&ele de date
native XML nu necesit' sceme% ca !a&ele de date rela"ionale% ele pot s' trate&e acest tip de
date% de(i aplica"iile adesea necesit' procesarea acestor date de c'tre oameni$
Ultima utili&are ma,ora a !a&elor de date native XML este tratarea evolu"iei
scemelor$ Ciar dac' !a&ele de date native XML nu ofer' solu"ii complete% ele ofer' o
fle6i!ilitate mai mare dec*t !a&ele de date rela"ionale$ De e6emplu% !a&ele de date native
XML nu necesit' ca datele e6istente s' fie mutate ntr+o alt' scem'% ele pot trata modific'ri
ale scemelor pentru care nu e6ist' nicio cale a mi#ra"iei% (i pot stoca date ciar dac' acestea
apar"in unei versiuni necunoscute a unei sceme$
-lte utili&'ri ale !a&elor de date native XML includ punerea la dispo&i"ie de cace
pentru date (i metadate pentru tran&ac"ii lun#i% operarea cu documente mari (i date ierarice%
(i comportarea ca un intermediar ntre date (i cace .mid+tier data cace/$
A$B$A$3 Ce este o !a&' de date nativ' XMLK
Termenul 8!a&' de date nativ' XML9 a ap'rut prima dat' n campania de marNetin# a
Tamino% o !a&' de date nativ' XML de&voltat' de )oft:are -1$ 0ro!a!il datorit' succesului
acestei campanii% termenul a fost acceptat de c'tre companiile care de&voltau produse
similare$ De&avanta,ul acestui termen este c' fiind un termen de marNetin#% nu a avut
niciodat' o defini"ie formal' tenic'$
O defini"ie posi!ila .de&voltat' de mem!rii XMLFD4/ este aceea c' o !a&' de date
nativ' XML are urm'toarele caracteristiciF
Define(te un model lo#ic pentru un document XML 7 spre deose!ire de datele din
acel document 7 (i stocea&' (i recuperea&' documente conform acelui model$ Modelul
tre!uie s' includ' minim elemente% atri!ute% 0CD-T-% (i ordinea documentelor$ E6emple de
astfel de modele sunt modelul de date Xpat% XML Infoset% (i modelele con"inute de DOM (i
evenimentele din )-X 3$I$
-re ca unitate fundamental' de stocare lo#ic' un document XML% a(a cum o !a&' de
date rela"ional' are ca unitate de !a&' de stocare lo#ic' o linie dintr+o ta!el'$
Nu este necesar un model fi&ic special de stocare a datelor$ De e6emplu% acesta poate
fi construit pe o !a&' de date rela"ional'% ieraric'% sau orientat' pe o!iecte% sau se poate
folosi un format de stocare particular cum ar fi fi(ierele comprimate inde6ate$
Pagina 44 din 97

0rima parte a acestei defini"ii este similar' cu defini"iile altor tipuri de !a&e de date% (i
se concentrea&' pe modelul folosit de !a&a de date$ Nu are nicio importan"' faptul c' o
anumit' !a&' de date nativ' XML ar putea stoca mai multe informa"ii dec*t con"ine modelul
folosit de !a&a de date$ De e6emplu% ar putea suporta intero#'ri !a&ate pe modelul Xpat% dar
s' stoce&e documente ca te6t$ Jn acest ca&% sec"iunile CD-T- (i folosirea entit'"ilor sunt
stocate n !a&a de date dar nu sunt incluse n model$
- doua parte a defini"iei spune c' unitatea de !a&' de stocare ntr+o !a&' de date
nativ' XML este un document XML$ De(i poate p'rea posi!il ca o !a&' de date nativ' XML
ar putea atri!ui acest rol fra#mentelor de documente% !a&ele de date native XML sunt
populate cu documente complete$
Unitatea de !a&' de stocare este nivelul elementar de conte6t n care se potrive(te un
anumit element de date% (i este ecivalent cu o linie ntr+o !a&' de date rela"ional'$ E6isten"a
acestei unit'"i de !a&' nu mpiedic' recuperarea unor unit'"i mai mici de date% cum ar fi
fra#mente de documente sau elemente individuale% (i nu e6clude nici posi!ilitatea com!in'rii
fra#mentelor dintr+un document cu fra#mente din alt document$ Jn termeni rela"ionali% acest
lucru este ecivalent cu faptul c' e6isten"a liniilor nu mpiedica recuperarea individual' a
valorilor din coloane sau crearea unor linii noi din altele e6istente de,a$
- treia parte a defini"iei spune c' formatul de stocare nu este important$ -cest lucru
este adev'rat% (i este analo# cu faptul c' formatul fi&ic de stocare folosit de o !a&' de date
rela"ional' nu are le#'tur' cu faptul ca !a&a de date este rela"ional'$
A$B$A$2 -ritecturile !a&elor de date native XML
-ritecturile !a&elor de date native XML se clasific' n dou' cate#oriiF !a&ate pe te6t
(i !a&ate pe modele$
4a&e de date native XML !a&ate pe te6t
O !a&' de date nativ' XML !a&at' pe te6t stocea&' XML ca te6t$ -cesta ar putea fi
un fi(ier ntr+un sistem de fi(iere% un 4LO4 ntr+o !a&' de date rela"ional'% sau un format de
te6t particular$ Nu are nicio importan"' faptul c' o !a&' de date rela"ional' care a ad'u#at
procesarea ce recunoa(te XML a coloanelor CLO4 .Caracter Lar#e O!,ect/ este% de fapt% o
!a&' de date nativ' XML av*nd n vedere aceste a!ilit'"i$
Toate !a&ele de date native XML !a&ate pe te6t au n comun indec(ii% care ofer'
posi!ilitatea motorului de intero#are s' sar' u(or n orice punct din orice document XML$
-cest lucru d' o vite&' e6traordinar' la recuperarea documentelor ntre#i sau a fra#mentelor
Pagina 45 din 97

de documente$ -cest lucru se nt*mpla deoarece !a&a de date poate e6ecuta o sin#ur' c'utare
inde6at'% poate po&i"iona capul de citire o sin#ur' dat'% (i% presupun*nd c' fra#mentul necesar
este stocat continuu pe disc% poate recupera ntre#ul document sau fra#ment cu o sin#ur'
citire$ )pre deose!ire de aceasta modalitate% reasam!larea unui document din fra#mente% cum
se face n ca&ul !a&elor de date rela"ionale (i unele !a&e de date native XML !a&ate pe
modele% necesit' c'ut'ri inde6ate multiple (i mai multe citiri ale discului$
Jn acest sens% o !a&' de date nativ' XML !a&at' pe te6t este similar' cu !a&ele de date
ierarice% am*ndou' av*nd performan"e mai !une dec*t !a&ele de date rela"ionale la
recuperarea (i returnarea datelor n func"ie de o ierarie predefinit'$ La fel ca !a&ele de date
ierarice% !a&ele de date native XML !a&ate pe te6t ar putea nt*mpina dificult'"i la
recuperarea (i returnarea datelor n orice alt' form'% cum ar fi inversarea ierariei sau a unor
por"iuni ale ei$ -cest lucru nu a fost dovedit nc'% dar predominan"a !a&elor de date
rela"ionale% care folosesc pointeri lo#ici ce permit ca toate intero#'rile de aceea(i
comple6itate s' fie e6ecutate cu aceea(i vite&'% pare s' indice c' a(a se va nt*mpla$
4a&e de date native XML !a&ate pe modele
- doua cate#orie de !a&e de date native XML este cea !a&at' pe modele$ Jn loc s'
stoce&e documentul XML ca te6t% aceste !a&e de date construiesc un model o!iectual intern
din document (i stocea&' acest model$ Modalitatea re"inerii acestui model depinde de !a&a
de date$ Unele !a&e de date stocea&' modelul ntr+o !a&' de date rela"ional' sau orientat'
o!iect$ De e6emplu% stocarea DOM+ului ntr+o !a&' de date rela"ional' ar putea duce la
o!"inerea unor ta!ele cum ar fi Elements% -ttri!utes% 0CD-T-% Entities% (i EntitLReferences$
-lte !a&e de date folosesc un format de stocare particular optimi&at pentru modelul lor$
Un e6emplu de !a&' de date simpl' nativ' XML !a&at' pe un model construit' pe o
!a&' de date rela"ional' este cea descrisa de MarN 4ir!ecN la XML+L n decem!rie 3HHG$
)istemul folose(te cinci ta!ele 7 definirea atri!utelor% asocierile dintre elementeMatri!ute%
definirea con"inutului modelului% valorile atri!utelor% (i valorile elementelor .0CD-T- sau
pointeri la alte elemente/ 7 (i un model care include numai elemente% atri!ute% te6t% (i ordinea
documentelor$
4a&ele de date native XML !a&ate pe modele construite pe alte !a&e de date vor avea
performan"e similare cu acele !a&e de date la recuperarea documentelor pentru c' ele se
!a&ea&' pe acele sisteme pentru a recupera datele$ Totu(i% desi#nul !a&ei de date% n special
pentru !a&ele de date native XML construite pe !a&e de date rela"ionale poate varia destul de
mult$ De e6emplu% o !a&' de date care folose(te o mapare o!iectual+rela"ional' direct' a
Pagina 46 din 97

DOM+ului ar putea duce la un sistem care necesit' e6ecutarea fra&elor )ELECT separat
pentru a recupera descenden"ii fiec'rui nod$ 0e de alt' parte% ma,oritatea acestor !a&e de date
(i optimi&ea&' modelul de stocare (i softul de recuperare$ De e6emplu% Ricard Ed:ards a
descris un sistem de stocare a DOM+ului ntr+o !a&' de date rela"ional' care poate recupera
orice fra#ment de document .inclusiv ntre#ul document/ cu o sin#ur' fra&a )ELECT$
Este pro!a!il c' !a&ele de date native XML !a&ate pe modele care folosesc un format
de stocare particular s' ai!' performan"e similare cu cele native XML !a&ate pe te6t la
recuperarea datelor n ordinea n care au fost stocate$ -cest lucru se nt*mpl' deoarece
ma,oritatea acestor !a&e de date folosesc pointeri fi&ici ntre noduri% ceea ce ar tre!ui s' duc'
la o performan"' similar' cu recuperarea te6tului$ .Rapiditatea unei metode sau alteia depinde
(i de formatul de ie(ire$ )istemele !a&ate pe te6t sunt mai rapide la returnarea documentelor
ca te6t% pe c*nd sistemele !a&ate pe modele sunt mai rapide la returnarea documentelor ca
ar!ori DOM% presupun*nd c' modelul lor se mapea&' u(or la DOM$/
Ca (i !a&ele de date native XML !a&ate pe te6t% e pro!a!il c' (i cele !a&ate pe modele
s' nt*mpine pro!leme de performan"' la recuperarea (i returnarea datelor ntr+un formular%
altul dec*t cel n care sunt stocate% cum ar fi inversarea ierariei sau a unor por"iuni a ei$ Nu
se (tie dac' aceste !a&e de date vor fi mai rapide sau nu dec*t cele !a&ate pe te6t$
A$B$A$A Caracteristici ale !a&elor de date native XML
Jn aceast' sec"iune sunt pre&entate un num'r de caracteristici ale !a&elor de date
native XML$
Colec"ii de documente
Multe !a&e de date native XML suport' no"iunea de colec"ie$ -cestea au un rol similar
cu cel al ta!elelor n !a&ele de date rela"ionale sau cu cel al directoarelor ntr+un sistem de
fi(iere$ De e6emplu% dac' se folose(te o !a&' de date nativ' XML pentru stocarea unor ordine
de v*n&are% ar tre!ui definit' o colec"ie de ordine de v*n&are astfel nc*t intero#'rile cu
privire la ordinele de v*n&are s' poat' fi limitate la documentele din acea colec"ie$
Ca un alt e6emplu% dac' se stocea&' manualele pentru toate produsele unei companii
ntr+o !a&' de date nativ' XML% ar tre!ui definit' o ierarie de colec"ii% o colec"ie pentru
fiecare produs% (i n acea colec"ie% c*te o colec"ie pentru fiecare capitol din fiecare manual$
Lim!a,e de intero#are
-proape toate !a&ele de date native XML suport' unul sau mai multe lim!a,e de
intero#are$ Cel mai popular este Xpat .cu e6tensii pentru intero#'ri asupra mai multor
Pagina 47 din 97

documente/ (i X]uerL% de(i numeroase lim!a,e de intero#are particulare sunt suportate de
asemenea$
Jn viitor% ma,oritatea !a&elor de date native XML vor suporta X>uerL din =AC$
Updat'ri (i (ter#eri
4a&ele de date native XML au o varietate de strate#ii pentru actuali&area (i (ter#erea
documentelor% de la simpla nlocuire sau (ter#ere a documentului e6istent p*n' la modificarea
ar!orelui DOM% p*n' la lim!a,e care specific' cum s' se modifice fra#mente ale unui
document$ Ma,oritatea acestor metode sunt particulare$ Totu(i% au ap'rut dou' lim!a,e
ntruc*tva standardi&ate pentru actuali&area documentelor XMLF
XUpdate% de la XMLFD4 Initiative% este un lim!a, !a&at pe XML$ Folose(te X0at
pentru a identifica un set de noduri% apoi specific' dac' s' se insere&e sau s' se (tear#' aceste
noduri% sau s' insere&e noduri noi naintea sau dup' acestea$ XUpdate a fost implementat n
mai multe !a&e de date native XML$
Un set de e6tensii ale X>uerL a fost propus de mem!rii #rupului =AC X>uerL (i
0atricN Leti$ 5aria"ii asupra acestor e6tensii au fost implementate n mai multe !a&e de date
native XML (i pare pro!a!il c' acestea vor forma !a&ele sinta6ei pentru actuali&are n
X>uerL$
Jn ciuda acestor lim!a,e% este pro!a!il ca a!ilit'"ile de actuali&are s' r'm*n'
fra#mentate p*n' c*nd va fi ad'u#at' formal o sinta6' de actuali&are la X>uerL$
Tran&ac"ii% !loc'ri% (i concuren"'
-proape toate !a&ele de date native XML suport' tran&ac"ii .(i pro!a!il suport' (i
ntoarceri/$ Totu(i% !locarea se face adesea la nivelul ntre#ului document% (i nu la nivelul
unui nod individual% de aceea concuren"a multi+user este relativ redus'$ Dac' aceasta este o
pro!lem' depinde de aplica"ie (i ceea ce constituie un 8document9$ De e6empluF
Un document este un capitol al unui #id al utili&atorului (i scriitorii editea&'
capitolele$ Este pu"in pro!a!il ca !locarea la nivel de document s' cau&e&e pro!leme de
concuren"'% deoarece este impro!a!il ca doi scriitori s' actuali&e&e acela(i capitol n acela(i
moment$
Un document stocea&' toate datele despre toate v*n&'rile (i v*n&'torii adau#'
informa"ii despre noile v*n&'ri$ Este pro!a!il ca !locarea la nivel de document s' determine
pro!leme de concuren"'% deoarece (ansele ca doi v*n&'tori s' actuali&e&e informa"ii n acela(i
timp este destul de mare$ Din fericire% acest lucru poate fi re&olvat cel pu"in par"ial prin
crearea unui document de v*n&are pentru fiecare client$
Pagina 48 din 97

Un document con"ine datele folosite ntr+un flu6% cum ar fi un contract financiar$
Fiecare pas al flu6ului cite(te date dintr+un computer (i adau#' datele proprii$ De e6emplu% un
pas ar putea face o verificare de credit (i ar ad'u#a un credit la document$ Un alt pas ar putea
c'uta !alan"e n a(teptare n alte contracte ale aceluia(i client (i ar putea ad'u#a totalul
!alan"elor$ Dac' !locarea la nivel de nod este folosit'% unii dintre ace(ti pa(i ar putea fi
e6ecuta"i n paralel$ Dac' este folosit' !locarea la nivel de document% ace(ti pa(i ar tre!ui
e6ecuta"i secven"ial pentru a evita conflicte de scriere$ -cest lucru ar putea aduce nt*r&ieri
inaccepta!ile n aplica"ii mari$
0ro!lema !loc'rii la nivel de nod este implementarea acesteia$ 4locarea unui nod
necesit' de o!icei !locarea p'rintelui s'u% ceea ce necesit' !locarea p'rintelui acestuia% (i a(a
p*n' la r'd'cin'% !loc*nd efectiv ntre#ul document$ 0entru a vedea de ce acest lucru este
adev'rat% se consider' o tran&ac"ie care cite(te un nod frun&'$ Dac' tran&ac"ia nu are !loc'ri
pe str'mo(ii nodului frun&'% o alt' tran&ac"ie poate (ter#e un nod str'mo( al frun&ei% astfel
(ter#*nd (i nodul frun&'$ Totu(i% o alt' tran&ac"ie ar tre!ui s' poat' actuali&a acele p'r"i ale
documentului care nu sunt pe calea direct' de la r'd'cin' la nodul frun&'$
O solu"ie par"ial' a acestei pro!leme este propus' de )ti,n DeNeLser Jn timp ce
pro!lema !loc'rii str'mo(ilor unui nod "int' nu a fost total ocolit'% aceste !loc'ri au fost
f'cute mai fle6i!ile prin adnotarea lor cu definirea prin intero#are a c'ii de la nodul !locat
p*n' la nodul "int'$ -cest lucru permite altor tran&ac"ii s' determine dac' sunt n conflict cu
alte tran&ac"ii$ Deoarece evaluarea intero#'rilor pentru a o!"ine !loc'ri este foarte
costisitoare% scema actual' este ntruc*tva mai limitat' dec*t a fost descris' aici% dar acesta
este principiul de func"ionare$
Jn viitor% ma,oritatea !a&elor de date native XML vor oferi pro!a!il posi!ilitatea
!loc'rii la nivel de nod$
Interfe"e de pro#ramare a aplica"iilor .-0I+uri/
Ma,oritatea !a&elor de date native XML ofer' -0I+uri pro#ramatice$ -cestea sunt de
o!icei su! forma unei interfe"e asem'n'toare OD4C% cu metode pentru le#area la !a&a de
date% e6plorarea metadatelor% e6ecutarea intero#'rilor% (i recuperarea re&ultatelor$ Re&ultatele
sunt de o!icei returnate ca un (ir XML% un ar!ore DOM% sau un 0arser )-X% sau un
XMLReader peste documentul returnat$ Dac' intero#'rile pot returna documente multiple%
atunci metodele pentru parcur#erea re&ultatelor sunt de asemenea disponi!ile$ De(i
ma,oritatea !a&elor de date native XML ofer' -0I+uri particulare au fost de&voltate dou'
-0I+uri independente .iulie 2IIB/F
Pagina 49 din 97

-0I+ul XMLFD4 al XMLFD4$or# care este independent de lim!a,ul de pro#ramare% (i
folose(te X0at ca lim!a,ul s'u de intero#are% (i este e6tins pentru a suporta X>uerL$ - fost
implementat pentru mai multe !a&e de date native XML (i se poate s' fi fost implementat (i
pentru !a&e de date care nu sunt native XML$
W)R 22CF X>uerL -0I pentru Wava .X>W/ este !a&at pe WD4C (i folose(te X>uerL ca
lim!a, de intero#are$ Este de&voltat de c'tre Wava CommunitL 0rocess .WC0/ de la )un$
Deoarece aceast' ini"iativa este condus' de I4M (i Oracle este pro!a!il' r'sp*ndirea ei la
scar' lar#'$
Ma,oritatea !a&elor de date native XML ofer' de asemenea posi!ilitatea e6ecut'rii
intero#'rilor (i returnarea re&ultatelor prin RTT0$
Round+Trippin#
O caracteristic' important' a !a&elor de date native XML este c' pot efectua un
8round+trip9 al documentelor XML$ -cest lucru nseamn' c' se poate stoca un document
XML ntr+o !a&' de date nativ' (i se poate recupera din !a&a de date acela(i document$ -cest
lucru este important pentru aplica"iile centrate pe documente% pentru care sec"iunile CD-T-%
folosirea entit'"ilor% comentariile (i procesarea instruc"iunilor sunt o parte inte#rant' a
documentului$ De asemenea este foarte important pentru multe aplica"ii medicale (i le#ale%
care sunt o!li#ate prin le#e sa p'stre&e copii fidele ale documentelor$
Round+trippin#+ul este mai pu"in important pentru aplica"iile centrate pe date% pentru
care de o!icei contea&' elementele% atri!utele% te6tul% (i ordinea ieraric'$ Toate softurile care
transfer' date ntre documente XML (i !a&e de date pot e6ecuta acest procedeu cu aceste
date$ -celea(i opera"ii pot fi aplicate (i unor ordon'ri similare .ordinea elementelor (i a
0CD-T- n p'rintele lor/ ntr+un num'r limitat de ca&uri care sunt importante pentru
aplica"iile centrate pe date$ Totu(i deoarece nu pot face aceste opera"ii n toate ca&urile% (i nici
asupra instruc"iunilor de procesare% comentariilor% (i structurilor fi&ice .referin"ele c'tre
entit'"i% sec"iuni CD-T-/% nu sunt potrivite pentru aplica"ii centrate pe documente$
Toate !a&ele de date native XML pot aplica round+trippin#+ul la nivelul elementelor%
al atri!utelor% al 0CD-T-% (i al ordinii documentelor$ C*t de mult se poate aplica acest
procedeu depinde de !a&a de date$ Ca o re#ul' #eneral'% !a&ele de date native XML !a&ate pe
te6t aplic' acest procedeu pe documentele XML e6act% n timp ce !a&ele de date native XML
!a&ate pe modele aplic' acest procedeu asupra documentelor XML la nivelul modelului$ Jn
ca&ul modelelor minimale de documente% acest procedeu se face la un nivel mai mic dec*t
XML+ul canonic$
Pagina 50 din 97

Din moment ce nivelul de round+trippin# depinde de fiecare aplica"ie% (i ale#erea
!a&ei de date native XML potrivite poate varia$
Date aflate la distan"'
Unele !a&e de date native XML pot include date aflate la distan"' n documente
stocate n !a&a de date$ De o!icei aceste date sunt recuperate dintr+o !a&' de date rela"ional'
cu OD4C% OLE D4% sau WD4C (i sunt modelate folosind maparea !a&at' pe ta!ele sau
maparea rela"ional+o!iectual'$ Daca aceste date sunt Ulive9 7 adic' dac' actuali&'rile
documentului din !a&a de date nativ' XML sunt reflectate n !a&a de date aflat' la distan"' 7
depinde de !a&a de date nativ' XML$ Jn viitor ma,oritatea !a&elor de date native XML vor
suporta date Ulive9 aflate la distan"'$
Indec(i
Toate !a&ele de date native XML suport' indec(i ca o modalitate de a m'ri vite&a de
intero#are$ E6ista trei tipuri de indec(i$ Indec(ii valoare inde6ea&' te6t (i valori ale atri!utelor
(i sunt folosi"i pentru a re&olva intero#'ri de formaF 81'se(te toate elementele sau atri!utele
ale c'ror valori sunt i)anta Cru&j$9 Indec(ii structurali inde6ea&' loca"ia elementelor (i
atri!utelor (i sunt folosi"i pentru a re&olva intero#'ri de formaF 81'se(te toate elementele
adres'$9 Indec(ii valoare (i structurali sunt com!ina"i pentru a re&olva intero#'ri de formaF
81'se(te toate elementele ora(e ale c'ror valori sunt i)anta Cru&j$9 Indec(ii full+te6t
inde6ea&' semnele individuale din te6t (i valorile atri!utelor (i sunt folosi"i pentru a re&olva
intero#'ri de formaF 81'se(te toate documentele care con"in cuvintele j)anta Cru&j$9 sau n
con,unc"ie cu indec(ii structurali F91'se(te toate documentele care con"in cuvintele i)anta
Cru&j ntr+un element adres'$9
Ma,oritatea !a&elor de date native XML suport' at*t indec(i valoare c*t (i indec(i
structurali$ Unele !a&e de date native XML suport' indec(i full+te6t$
)tocarea entit'"ilor e6terne
O pro!lem' dificil' care apare la stocarea documentelor XML este tratarea entit'"ilor
e6terne$ -dic'% ar tre!ui e6tinse (i valorile lor stocate mpreuna cu restul documentului% sau
ar tre!ui ca referin"ele la entit'"i s' fie l'sate la locul lorK -ceast' ntre!are nu are r'spuns
unic$
De e6emplu% se consider' c' un document include o entitate e6tern' #eneral' care
apelea&' un pro#ram C1I pentru pro#no&a meteo$ Dac' documentul este folosit ca o pa#ina
=e! care ofer' pro#no&a meteo% ar fi o #re(eal' e6tinderea referin"ei la entitate% deoarece
pa#ina de =e! nu ar mai returna date ilivej$ 0e de alt' parte% dac' documentul ar fi o parte a
Pagina 51 din 97

unei colec"ii de date despre vreme mai veci% ar fi o #re(eal' s' nu se e6tind' referin"a%
deoarece documentul ar recupera ntotdeauna datele curente (i nu le+ar mai re"ine pe cele
veci$
Ca un alt e6emplu% se consider' un manual al unui produs care nu con"ine altceva
dec*t referin"e la entit'"i e6terne care trimit la capitolele manualului$ Daca unele dintre aceste
capitole ar fi folosite n alte documente% ca manualele pentru diferite modele ale aceluia(i
produs% ar fi o #re(eal' e6tinderea acestor referin"e% pentru ca ar duce la copii multiple ale
acelora(i capitole$
A$B$A$B Normali&are% inte#ritate referen"ial' (i scala!ilitate
0entru mul"i% n special pentru cei ce poseda cuno(tin"e despre !a&e de date
rela"ionale% !a&ele de date native XML ridic' un num'r de pro!leme controversate% n special
cu privire la pro!lemele de stocare a datelor .spre deose!ire de documente/$ Unele dintre
aceste pro!leme sunt de&!'tute n sec"iunile urm'toare$
Normali&area
Normali&area se refer' la procesul de proiectare a scemei unei !a&e de date n care
un anumit set de date sunt repre&entate o sin#ur' dat'$ Normali&area are c*teva avanta,e
clare% cum ar fi reducerea spa"iului necesar pe disc (i eliminarea posi!ilit'"ii apari"iei
inconsisten"elor% care se pot #'si atunci c*nd un set de date este stocat n mai multe locuri$
-ceasta este una din pietrele de temelie a tenolo#iei rela"ionale (i este un punct aprins n
discu"iile despre stocarea datelor n !a&e de date native XML$
Normali&area nu este o pro!lem' pentru documente centrate pe documente$ De
e6emplu% se consider' o colec"ie de documente ce descrie produsele unei companii$ Jn multe
asemenea colec"ii% e6ist' pu"ine date comune tuturor documentelor 7 notific'ri de copLri#t%
adresele corpora"iilor (i numere de telefon% lo#o+uri ale produselor 7 (i aceste date sunt prea
pu"ine relativ la total nc*t normali&area acestora nu se ia n calcul$ 0e de alt' parte% alte seturi
de documenta"ii au p'r"i comune importante ntre documente (i se merit' normali&area lor$
Ca (i n ca&ul !a&elor de date rela"ionale% normali&area !a&elor de date native XML nu
este o!li#atorie$ De aceea este important' proiectarea atent' a structurii documentelor nainte
de stocarea lor ntr+o !a&' de date nativ' XML$ 4a&ele de date native XML au un avanta, fa"'
de !a&ele de date rela"ionale$ Din moment ce !a&ele de date native XML nu au sceme% se pot
stoca documente similare n !a&a de date cu mai multe sceme la un anumit moment$ Ciar
dac' este necesar' reproiectarea intero#'rilor (i convertirea documentelor e6istente% acest
lucru ar putea u(ura procesul de tran&i"ie$
Pagina 52 din 97

Normali&area datelor pentru o !a&' de date nativ' XML este apro6imativ la fel ca
normali&area unei !a&e de date rela"ionaleF documentele tre!uie proiectate astfel nc*t datele
s' nu se repete$ O diferen"' ntre !a&ele de date native XML (i !a&ele de date rela"ionale este
aceea ca XML suport' propriet'"i multi+valoare n timp ce ma,oritatea !a&elor de date
rela"ionale nu$ -ceasta face posi!il' normali&area datelor ntr+o !a&' de date nativ' XML
ntr+o manier' care nu este posi!il' ntr+o !a&' de date rela"ional'$
De e6emplu% se consider' un ordin de v*n&are$ -cesta const' n informa"iile din antet%
cum ar fi num'rul ordinului% data% num'rul clientului% (i unul sau mai mul"i itemi care con"in
un num'r curent% cantitatea% (i pre"ul total$ Jntr+o !a&' de date rela"ional'% informa"ia din antet
tre!uie stocat' ntr+o ta!el' separat' fa"' de itemi% deoarece sunt mai multe linii n fiecare
antet$ Jntr+o !a&' de date nativ' XML% aceast' informa"ie poate fi stocat' ntr+un sin#ur
document f'r' redundan"e% deoarece natura ieraric' a XML permite unui element p'rinte s'
ai!' mai mul"i descenden"i$
Din nefericire% normali&area pe ca&uri concrete nu este at*t de simpl'$ De e6emplu% ce
se nt*mpl' atunci c*nd se dore(te ca ordinul de v*n&are s' con"in' informa"ii despre client%
cum ar fi nume de contact (i adresa de e6pediere (i facturareK E6ista dou' variante$ 0rima% se
pot duplica informa"iile despre client n fiecare ordin de v*n&are pentru acel client% duc*nd la
date redundante (i toate pro!lemele care apar cu acestea$ - doua variant'% se pot stoca
informa"iile despre client separat (i fie ad'u#at un XLinN n documentul ordinului de v*n&are
c'tre documentul clientului% fie unite cele dou' documente atunci c*nd datele sunt intero#ate$
-cest lucru presupune c' fie le#'turile XLinN sunt suportate .n ma,oritatea ca&urilor nu
sunt/% fie lim!a,ul de intero#are suport' uniri .de asemenea nu se nt*mpl' ntotdeauna/$
Jn practic' nu e6ist' solu"ii clare$ Datele rela"ionale din lumea real' sunt adesea
nenormali&ate din motive de performan"'$ Dac' se stocea&' documente centrate pe
documente (i acestea se pot normali&a p*n' la un anumit #rad 7 cum ar fi stocarea capitolelor
sau procedurilor ca documente separate (i unirea lor pentru a crea documente end+user 7
atunci o !a&' de date nativ' XML este o solu"ie !un'% n special pentru c' va oferi
caracteristici precum lim!a,e de intero#are XML care nu se #'sesc n alte !a&e de date$ Dac'
se stocea&' documente centrate pe date (i o !a&' de date nativ' XML m!un't'"e(te
performan"a aplica"iei sau ofer' stocarea datelor semi+structurate% facilit'"i care nu se #'sesc
n alte !a&e de date atunci aceast' !a&' de date ar tre!ui folosit'$
Inte#ritatea referen"ial'
Pagina 53 din 97

Inte#ritatea referen"ial' este str*ns le#at' de normali&are$ -ceasta se refer' la
validitatea pointerilor la datele le#ate (i sunt o parte necesar' a men"inerii consisten"ei !a&ei
de date$ De e6emplu nu este de niciun folos un num'r de client dintr+un ordin de v*n&are care
nu are o nre#istrare a clientului corespondent'$ Departamentul de e6pediere nu va (ti unde s'
trimit' marfa (i departamentul de conta!ilitate nu va (ti unde s' trimit' factura$
Jntr+o !a&' de date rela"ional'% inte#ritatea referen"ial' nseamn' asi#urarea c' se face
le#'tura corect' ntre ceile str'ine (i ceile primare 7 adic'% verificarea c' linia ceii primare
ce corespunde oric'rei cei str'ine e6ist'$ Jntr+o !a&' de date nativ' XML% inte#ritatea
referen"ial' nseamn' asi#urarea c' pointerii n documentul XML trimit la documente valide
sau fra#mente de documente$
0ointerii din documentele XML sunt de mai multe feluriF atri!ute IDMIDREF% c*mpuri
NeLMNeLref .a(a cum sunt definite n sceme XML/% le#'turi XLinN% (i diferite mecanisme
particulare$ Cele din urma includ elemente (i atri!ute de referire ntr+un lim!a, specific% cum
ar fi atri!utul irefj al elementului Yelement\ n scemele XML% (i mecanisme de le#'turi
specifice !a&elor de date$ Jn timp ce elementele (i atri!utele de referire ntr+un lim!a, specific
sunt destul de des nt*lnite% mecanismele de le#'turi specifice !a&elor de date sunt mai rare$
Inte#ritatea referen"ial' ntr+o !a&' de date nativ' XML poate fi mp'r"it' n dou'
cate#oriiF inte#ritatea pointerilor interni .pointeri dintr+un document/ (i inte#ritatea
pointerilor e6terni .pointeri dintre documente/$ Inte#ritatea referen"ial' a pointerilor interni
care folosesc mecanisme non+standard nu este for"at'% deoarece !a&ele de date native XML
nu pot identifica ace(ti pointeri$ Inte#ritatea referen"ial' a pointerilor interni care folosesc un
mecanism standard% cum ar fi IDMIDREF sau NeLMNeLref% este cel pu"in par"ial suportat' prin
validare$
Motivul pentru care acest suport este par"ial este c' ma,oritatea !a&elor de date native
XML e6ecut' valid'ri numai c*nd un document este introdus n !a&a de date$ -stfel% dac'
sunt efectuate actuali&'ri la nivel de document 7 prin (ter#eri (i apoi nlocuiri a unui
document 7 validarea este suficient' pentru a asi#ura inte#ritatea pointerilor interni$ Dar dac'
sunt efectuate actuali&'ri la nivel de nod 7 inser'ri% modific'ri (i (ter#eri de noduri
individuale 7 atunci !a&a de date tre!uie s' mai fac' opera"ii n plus% cum ar fi validarea
tuturor modific'rilor% pentru a #aranta inte#ritatea referen"ial' a pointerilor interni$
Inte#ritatea refen"ial' a pointerilor e6terni nu este suportat'% nici de pu"inele !a&e de
date care suport' pointeri e6terni$ Dac' un pointer e6tern trimite la o resurs' stocat' n alt'
parte n !a&a de date% nu e6ist' motiv pentru a nu se impune inte#ritatea pointerului$ Totu(i%
dac' un pointer trimite la o resurs' din afara !a&ei de date nu este o!li#atorie impunerea
Pagina 54 din 97

inte#rit'"ii$ De e6emplu% se presupune c' un document con"ine o le#'tur' XLinN care trimite
la un document pe un site :e! e6tern$ 4a&a de date nu are nici un control asupra e6isten"ei
documentului e6tern (i astfel nu se poate impune inte#ritatea le#'turii XLinN$
Jn viitor% ma,oritatea !a&elor de date native XML pro!a!il vor suporta inte#ritatea
referen"ial' a pointerilor interni care folosesc mecanisme standard$ Multe !a&e de date native
XML vor suporta anumite tipuri de pointeri e6terni% ca (i pointerii e6terni care trimit la
resurse stocate n aceea(i !a&' de date$ Deocamdat' n ma,oritatea ca&urilor aplica"iile impun
inte#ritatea pointerilor at*t interni c*t (i e6terni$
)cala!ilitate
Ca (i !a&ele de date ierarice (i rela"ionale% !a&ele de date native XML folosesc
indec(i pentru a locali&a date$ -cest lucru nseamn' c' locali&area documentelor (i a
fra#mentelor de documente este le#at' de dimensiunile indec(ilor% nu de dimensiunile
documentelor sau de num'rul de documente% (i de faptul c' aceste !a&e de date pot locali&a
nceputul unui document sau fra#ment la fel de repede ca (i alte !a&e de date care folosesc
aceea(i tenolo#ie de inde6are$ -stfel% !a&ele de date native XML vor scala la fel de !ine ca
(i alte !a&e de date$
Ca (i !a&ele de date ierarice% dar spre deose!ire de cele rela"ionale% multe !a&e de
date native XML lea#' fi&ic datele nrudite$ Jn special% !a&ele de date native XML !a&ate pe
te6t #rupea&' fi&ic datele nrudite (i !a&ele de date native XML !a&ate pe modele care
folosesc sisteme de stocare particulare folosesc adesea pointeri pentru a #rupa date nrudite$
4a&ele de date native XML !a&ate pe modele construite pe !a&e de date rela"ionale folosesc
ca (i acestea le#'turi lo#ice$
Deoarece le#'turile fi&ice sunt mai rapide dec*t cele lo#ice% !a&ele de date native
XML% ca (i cele ierarice% pot recupera date mai repede dec*t !a&ele de date rela"ionale$
-stfel% ele ar tre!ui s' scale&e !ine din punctul de vedere al recuper'rii datelor$ De fapt% ar
tre!ui s' se comporte mai !ine dec*t !a&ele de date rela"ionale% deoarece scala!ilitatea este
le#at' de o sin#ur' c'utare inde6at' ini"ial'% spre deose!ire de multiplele c'ut'ri necesare n
ca&ul !a&elor de date rela"ionale$
Din p'cate% aceast' scala!ilitate este limitat'$ Ca (i !a&ele de date ierarice% le#'turile
fi&ice n !a&ele de date native XML se aplic' numai asupra anumitor ierarii$ Recuperarea
datelor n ieraria n care sunt stocate este foarte rapid'% dar recuperarea acelora(i date ntr+o
ierarie diferit' este mai nceat'$ De e6emplu% se presupune c' informa"iile despre clien"i sunt
stocate n fiecare ordin de v*n&are$ Recuperarea acestor ordine de v*n&are va fi foarte rapid'%
deoarece acesta este ordinul n care datele sunt stocate$ Recuperarea unei alte vederi a datelor%
Pagina 55 din 97

cum ar fi o list' cu ordinele de v*n&are pentru un anumit client% va fi mult mai nceat'%
deoarece le#'turile fi&ice nu se mai folosesc$
0entru a re&olva par"ial aceast' pro!lema% !a&ele de date native XML folosesc foarte
mul"i indec(i% adesea inde6*nd toate elementele (i atri!utele$ Dac' acest lucru a,ut' la
sc'derea timpului de recuperare a datelor% totu(i cre(te timpul de actuali&are% pentru c'
ntre"inerea acestor indec(i poate fi costisitoare$ -ceasta nu este o pro!lem' n medii read+
onlL% dar poate cau&a pro!leme n medii n care se folosesc multe tran&ac"ii$
Jn cele din urm'% !a&ele de date native XML scalea&' mai sla! dec*t cele rela"ionale
n c'utarea datelor neinde6ate$ -m!ele tipuri de !a&e de date tre!uie s' caute secven"ial
datele n acest ca&% dar n ca&ul !a&elor de date native XML este mai #reu datorit'
normali&'rii mai pu"in complete$ De e6emplu% se caut' toate ordinele de v*n&'ri cu o anumit'
dat' (i datele nu sunt inde6ate$ Jntr+o !a&' de date rela"ional'% aceasta nseamn' citirea tuturor
valorilor din coloana OrderDate$ Jntr+o !a&' de date nativ' XML% acest lucru nseamn' citirea
fiec'rui ordin de v*n&are n ntre#ime (i c'utarea elementului YOrderDate\$ Nu numai c' se
cite(te con"inutul fiec'rui element YOrderDate\% dar se cite(te (i con"inutul tuturor celorlalte
elemente$ Jn !a&ele de date native !a&ate pe te6t% te6tul tre!uie anali&at (i convertit la
formatul dat' calendaristic' nainte de a putea fi comparat cu data c'utat'$
-ici se nceie descrierea !a&elor de date native XML$ Urm'toarele doua sec"iuni
tratea&' dou' tipuri speciali&ate de !a&e de date native XMLF DOM+uri persistente (i sisteme
de mana#ement ale con"inuturilor$
A$B$B DOM+uri persistente .0DOM+uri/
Un DOM persistent sau 0DOM este un tip speciali&at de !a&' de date nativ' XML
care implementea&' DOM+ul peste un tip de stocare persistent'$ )pre deose!ire de
ma,oritatea !a&elor de date native XML% care pot returna documente ca ar!ori DOM% ar!orele
DOM returnat de un 0DOM este activ .live/$ -dic'% modific'rile f'cute ar!orelui DOM sunt
reflectate direct n !a&a de date$ Dac' modific'rile sunt f'cute imediat sau n urma apel'rii
unei metode icommitj depinde de !a&a de date$ Jn ma,oritatea !a&elor de date native XML%
ar!orele DOM returnat aplica"iei este o copie% (i modific'rile sunt f'cute n !a&a de date prin
intermediul unui lim!a, de actuali&are XML sau prin nlocuirea ntre#ului document$
Deoarece ar!orii 0DOM sunt activi% !a&a de date este de o!icei local'% adic' este n
acela(i spa"iu de proces'ri ca (i aplica"ia% sau cel pu"in pe aceea(i ma(in'% de(i acest lucru nu
este neap'rat necesar$ -cest lucru este f'cut pentru eficien"'% deoarece un 0DOM peste o !a&'
de date aflat' la distan"' ar necesita cereri frecvente la un server aflat la dep'rtare$
Pagina 56 din 97

0DOM+urile au acela(i rol pentru aplica"iile DOM ca (i !a&ele de date orientate o!iect
pentru aplica"iile orientate o!iectF ele ofer' stocare persistent' pentru datele aplica"iei% (i
servesc (i drept memorie virtuala pentru aplica"ie$ -l doilea rol este foarte important pentru
aplica"iile DOM care operea&' cu documente mari% deoarece ar!orii DOM pot u(or s'
dep'(easc' documentele XML ca m'rime$
A$B$C )isteme de mana#ement ale con"inuturilor
)istemele de mana#ement ale con"inuturilor sunt un alt tip speciali&at de !a&e de date
native XML$ -cestea sunt proiectate pentru operarea cu documente scrise de oameni% cum ar
fi manualele de utili&are% (i sunt construite peste !a&e de date native XML$ 4a&a de date este
n #eneral ascuns' de utili&ator n spatele unui 9front end9 care ofer' caracteristici precumF
Control al versiunilor (i al accesului
Motoare de c'utare
Editoare XMLM)1ML
Motoare de pu!licare pe *rtie% CD sau pe =e!
)epararea con"inuturilor (i a stilurilor
E6tinderea n scripturi (i pro#ramare
Inte#rarea datelor din !a&a de date
Termenul de sistem de mana#ement al con"inuturilor spre deose!ire de sistem de
mana#ement al documentelor reflect' faptul c' asemenea sisteme permit n #eneral
mp'r"irea documentelor n fra#mente cu con"inut discret% cum ar fi e6emple% proceduri%
capitole% dar (i metadate cum ar fi numele autorilor% datele revi&iilor% (i numerele
documentelor% dec*t s' opere&e cu fiecare document ca un ntre#$ Nu numai c' astfel se
simplific' coordonarea lucrului mai multor scriitori la acela(i document% dar permite (i
asam!larea unor documente noi din componente care e6ist' de,a$
C-0ITOLUL I5
CON)TRUIRE- DOCUMENTELOR XML
B$3 )inta6a XML
XML este format de fapt din dou' metalim!a,e% am!ele descrise n acela(i document$
0rimul este un set de re#uli pentru reali&area de documente XML construite corect% n timp ce
al doilea este un set de re#uli pentru reali&area unei defini"ii a tipului documentului XML% sau
DTD .Document TLpe Definition/% care permite ca structura documentului XML s' se supun'
unor constr*n#eri (i s' fie validat' fa"' de acele constr*n#eri$ Distinc"ia dintre aceste dou'
Pagina 57 din 97

lim!a,e este deseori neclar'% deoarece un document XML complet presupune m'car e6isten"a
op"ional' a unui DTD% indiferent dac' acesta este de fapt pre&ent sau nu$ 0entru a complica (i
mai mult lucrurile% un DTD poate fi compus din dou' p'r"i% o su!mul"ime intern' (i o
su!mul"ime e6tern'$ -ceasta parte studia&' documentul XML f'r' a insista prea mult asupra
DTD+ului% deoarece un document XML poate fi creat (i f'r' a face referiri la un DTD$ Din
motive de performan"'% multe documente XML vor fi utili&ate f'r' a le valida n raport cu
DTD+ul% ciar dac' DTD+ul este disponi!il$ Jn ca&ul cone6iunilor lente% citirea dintr+un DTD
situat pe un alt sistem poate fi foarte nceat'% iar datorit' faptului c' un DTD poate con"ine
referin"e la alte documente% re&olvarea tuturor referin"elor e6terne poate dura e6a#erat de
mult ciar (i n ca&ul cone6iunilor de mare vite&'$ Utili&atorii sunt o!i(nui"i ca documentele
RTML s' fie nc'rcate incremental% deci pot citi nainte ca documentul s' fie nc'rcat n
totalitate% dar anali&atoarele XML de validare nu permit afi(area documentului dec*t n ca&ul
n care acesta este valid% deci documentul va ap'rea pe ecranul utili&atorului numai n
momentul n care este nc'rcat n totalitate$ -cest lucru poate fi sup'r'tor$ Totu(i% fiecare
document este creat av*nd n minte un DTD% indiferent dac' DTD+ul este e6plicit sau nu$
Ciar (i la crearea documentelor f'r' un DTD% tre!uie s' avut n vedere un fel de DTD
empiric pe m'sur' ce este creat documentul% deoarece un DTD descrie o structur' de date$
B$2 Descrierea de voca!ulare noi cu XML
XML are o natur' dual'F un metalim!a, care permite descrierea de noi structuri de
documente (i voca!ulare (i un lim!a, utili&at ca s' e6prime acea structur' (i acel voca!ular n
ca&ul unui document$ E6ist' o diferen"' clar' ntre un document XML% care poate avea sau nu
asociat un DTD e6primat n metalim!a,ul XML% (i un DTD XML$ Ele utili&ea&' sinta6e
complet diferite pentru a descrie un document XML% unul prin e6emplu iar cel'lalt
prescriptiv$
Defini"iile tipului documentului XML .DTD+urile/ descriu instan"e ale lim!a,ului
XML% numite uneori voca!ulare XML$ Dcumentele XML sunt create utili&*nd acele lim!a,e$
Din p'cate% aceast' diferen"' se pierde uneori n e6primarea neoficial'% iar voca!ularele XML
particulare (i DTD+urile asociate sunt descrise ine6act ca 9 XML9$ Utili&atorul unui lim!a,
sau voca!ular XML poate c' nu va vedea niciodat' sau poate c' nici nu i pas' de DTD+ul
utili&at pentru a descrie aplica"ia sa% la fel cum miilor de persoane care lucrea&' n desi#n
=e! utili&*nd RTML nu le pas' de =AC RTML B$I )1ML DTD utili&at n descrierea
RTML$ De fapt% un DTD poate s' nu e6iste$ Nu are o importan"' ciar a(a mare la nivelul
aplica"iei$
B$A -vanta,ele defini"iei tipurilor documentului
Pagina 58 din 97

Cu toate c' DTD+urile sunt op"ionale deoarece un procesor XML poate conduce un
DTD convena!il dintr+o instan"' a XML% e6isten"a unui DTD ofer' multe avanta,eF
P Un DTD descrie or#ani&area unui document ntr+un mod care poate fi distri!uit cu
u(urin"'$
P Un DTD permite unui proiectant s' cree&e o transformare ro!ust' dintr+un anumit
tip de document XML ntr+un alt format% pentru afi(are sau transfer$ Deoarece cu un DTD se
cunoa(te a!solut orice despre documente% se vor putea trata structuri care este posi!il s' nu
e6iste ntr+un anumit e6emplu% dar sunt permise de tipul documentului% ciar dac' nu au fost
nt*lnite niciodat' p*n' acum$
P Un DTD permite unui anali&or care validea&' s' determine dac' un anumit
document este sau nu creat n conformitate cu re#ulile sta!ilite de autorul specifica"iei$ -cest
lucru este e6trem de important pentru EDI .Electronic Data Intercan#e 7 scim! electronic
de date/ (i alte aplica"ii n care documentele vor fi parta,ate (i utili&ate (i de alte procese$
P F'r' un DTD% un mediu de creare XML nu poate oferi su#estii despre elementele
care sunt necesare sau op"ionale ntr+un anumit loc (i despre atri!utele pe care le poate
con"ine un anumit element$ Meniurile conte6tuale sau su#estiile pot fi de mare a,utor n
accelerarea de&volt'rii documentelor (i n prevenirea erorilor$
P F'r' un DTD% autorul unui manual de crea"ie sau al unui document de stil nu are de
unde s' (tie cum ar tre!ui construit documentul definit$ Un manual de crea"ie este o ntrupare
a informa"iei e6primate ntr+un DTD% cu toate c' nu este un DTD n sine$
P )pecificarea DTD+ului utili&at ntr+un document identific' versiunea standardului
folosit la crearea sa$ C*nd documentele se de&volt' n func"ionalitate (i sinta6'% acesta poate
fi un indiciu ntr+o situa"ie nou'$
B$B Com!aterea de&avanta,elor defini"iei tipurilor documentului
Cu toate avanta,ele lor% DTD+urile ridic' (i pro!leme$ Ele utili&ea&' o sinta6' diferit'
de XML% deci construirea unui DTD necesit' un alt set de a!ilit'"i$ Jn plus ca orice descriere
tenic'% implicarea n proiectarea unui DTD neav*nd n vedere aspectul structurii datelor n
document poate duce la mpotmolirea n detalii atunci c*nd este nevoie de aten"ie la structura
#eneral'$ Multe persoane proiectea&' documente XML utili&*nd voca!ularul XML destinat (i
apoi utili&ea&' un instrument de e6tra#ere automat' de DTD+uri pentru a #enera un DTD pe
!a&a documentului$ Dup' reali&area acestui lucru% DTD+ul poate fi re#lat prin ad'u#'ri la
codul surs' sau prin a,ustarea acestuia$
Dar DTD au (i urm'toarele de&avanta,eF
Pagina 59 din 97

P Cu un DTD% un a#ent utili&ator XML care validea&' necesit' cel pu"in nc' o
opera"ie de citire pentru a accesa loca"ia unde este disponi!il DTD+ul$ Cu toate c' plasarea n
cace poate reduce performan"ele pentru unii utili&atori din re"ea% multe utili&'ri previ&i!ile
ale documentelor XML vor face imposi!il' utili&area stoc'rii n cace$
P Un DTD cre(te cu mult comple6itatea anali&orului necesar pentru a determina dac'
un document poate fi afi(at$ 0entru unele dispo&itive% este posi!il ca acest lucru s' fie
reali&a!il$
P Unele medii de creare care validea&' (i utili&ea&' un DTD n#reunea&' salvarea
spa"iului de lucru la sf*r(itul &ilei sau restaurarea sa n &iua urm'toare% cu e6cep"ia ca&ului n
care documentul se afl' ntr+o stare valid'$
P Din punct de vedere teoretic% un DTD este capa!il s' continue nelimitat citiri
e6terne% deoarece un DTD poate con"ine alte DTD+uri sau mul"imi de entit'"i$ Este posi!il ca
pentru afi(area unor documente comple6e s' fie nevoie de foarte mult timp atunci c*nd se
utili&ea&' un anali&or care validea&'$
Deci&ia utili&'rii unui DTD este un compromis ntre a!ilitatea de utili&are f'r'
restric"ii% o!i(nuit' n RTML 7 posi!ilitate de a face aproape tot ce se dore(te 7 (i un mediu
mult mai structurat$ Jn multe situa"ii% cum sunt cele n care se reali&ea&' documente care
tre!uie s' fie #eneral disponi!ile (i sunt create distri!uit% tre!uie s' se respecte strict re#ulile
(i este de dorit folosirea unui DTD$ Jn alte ca&uri% cum ar fi atunci c*nd se de&volta un tip de
document XML nou% nu este nevoie sau nu este dorit' constr*n#erea strict' (i se poate reali&a
f'r' un DTD% cel pu"in n timpul proiect'rii ini"iale$
Dar dup' ce de&voltarea a devenit un produs sta!il% este de dorit ca proiectul s' poat'
fi distri!uit cu u(urin"'$ Ciar dac' se dore(te crearea unui manual de utili&are% un DTD este o
metod' simpl' de a permite utili&atorilor s' (i teste&e propriile documente pentru a se asi#ura
c' au respectat indica"iile pe care le+au citit n manual$ Jn acel moment% se poate considera c'
DTD+urile ofer' o fle6i!ilitate prea mare$
B$C XML% doar un alt RTMLK
XML este un lim!a, cu eticete (i atri!ute asem'n'tor cu RTML% dar un RTML
transformat at*t de mult% nc*t nu mai poate fi recunoscut$ XML este mult mai structurat dec*t
RTML$ Jn timp ce procesoarele RTML accept' n mod curent cod incorect (i diform (i
ncearc' s' i dea sens pe ecran% XML tre!uie s' se opreasc' atunci c*nd #'se(te o eroare
fatal'% care poate fi aproape orice tip de eroare$ -ceasta este ntr+un fel o ntoarcere la primele
&ile ale prelucr'rii datelor% c*nd orice eroare din cod era pedepsit' cu un vida, de memorie%
.core dump/ l*n#' care se puteau petrece ore ntre#i n ncercarea de a+l descifra$
Pagina 60 din 97

Totu(i pe l*n#' acest comportament necru"'tor% XML este cu mult mai puternic$ Jn
timp ce RTML se mul"ume(te cu un num'r relativ mic de eticete% XML are un num'r de
eticete aproape infinit% structurate n aproape orice fel se dore(te$ Oricum% fundamentele au
r'mas acelea(i% XML repre&ent*nd un pas evolutiv al RTML$ Nu numai c' un RTML !ine
f'cut este foarte aproape de XRTML 7 un nlocuitor al RTML care respect' XML 7 dar un
cod RTML B$I curat este destul de li&i!il ca XRTML 3$I$ Deoarece RTML B$I a fost
structurat ca o aplica"ie )1ML% iar XML este o su!mul"ime a )1ML% acest lucru este lo#ic$
Diferen"ele sintactice minore dintre XRTML% un voca!ular XML% (i RTML% un voca!ular
)1ML% pot fi a,ustate automat dac' este nevoie$ -utorul unui document XML ofer' de o!icei
un manual de creare sau codare .sau o foaie% pentru DTD+uri mici/ descriind eticetele
utili&ate n aplica"ia XML% atri!utele lor% valorile posi!ile (i modul lor de im!ricare$
Urm'rirea unui astfel de manual de codare nu este mai dificil' dec*t re"inerea faptului c' o
linie de ta!lou Ytr\ tre!uie s' fie im!ricat' n interiorul unui ta!lou Yta!le\ (i nu are% sau nu
ar tre!ui s' ai!'% sens n afara acelui conte6t$ 0entru ma,oritatea situa"iilor% acest lucru este
suficient$ XML este capa!il s' ofere autorilor suficient a,utor n nv'"area modului de
utili&are a unei anumite aplica"ii% deoarece ace(tia sunt ncura,a"i s' dea eticetelor nume
su#estive% care s' fie u(or de re"inut$ -utorul unei aplica"ii ar tre!ui s' furni&e&e un manual de
creare care s' e6plice n termeni simpli modul de utili&are a aplica"iei$
Cu toate c' orice procesor XML poate spune despre o por"iune de cod dac' este sau
nu construit corect% iar un manual poate a,uta la construirea unui document valid% DTD+ul
permite verificarea f'r' am!i#uit'"i a codului$ Totu(i% n func"ie de tipul de creare utili&at%
acesta poate fi un pas diferit de procesul de editare$
Codul ndepline(te acest ideal n func"ie de utili&area dat' numelor eticetelor% totu(i
ntre anumite limiteF
P Numele de eticete care ncep cu (irul U6ml9% indiferent de tipul literelor% sunt
re&ervateQ adic'% indiferent de situa"ie% nu este permisa crearea lor$
P Numele de eticete care con"in caracterul dou' puncte pot fi interpretate ca
identificatori av*nd asociat' o &on' de nume% deci utili&area celor dou' puncte n numele
eticetelor este puternic com!'tut' (i poate fi ciar inter&is'$
P Un nume de eticet' tre!uie s' nceap' cu o Uliter'9% care n acest conte6t este orice
liter' sau ideo#ram' UnicodeMI)OMIEC 3IDBD% sau cu o liniu"' de su!liniere
Jn continuare% numele unei eticete poate con"ine orice Uliter'9% ideo#ram' sau cifr'
UnicodeMI)OMIEC 3IDBD% caractere de com!inare% caractere de e6tindere% puncte% cratime%
spa"ii sau dou' puncte$ De altfel% pu"ine lim!i de pe #lo! au caractere cu care s' nu poat'
Pagina 61 din 97

ncepe un nume corect n lim!a respectiv'$ -ceste caractere sunt e6cluse din lista de caractere
dac' se afl' ntr+o po&i"ie n care pot fi v'&ute ca Uprimele9 dup' o cratim' sau un alt
separator lo#ic de cuvinte$
Caracterul tailande& mai LamoN .arat' ca un f ntors (i f'r' liniu"'/% de e6emplu%
arat' ca o liter'% dar nu poate fi folosit ca prim' liter' a unui cuv*nt deoarece el semnific'
repetarea literei anterioare$
Caracterele de com!inare sunt caractere speciale% folosite pentru a accentua un alt
caracter% multe dintre ele fiind normali&ate la un sin#ur caracter cu accent$ -cesta este un
avanta, pentru intr'rile de la tastatur' deoarece multe lim!i care con"in caractere accentuate
permit introducerea utili&*nd caractere accent speciale Ude l'"ime &ero9 care se pot ata(a la
orice alt caracter$
Caracterele de e6tindere sunt diverse semne de punctua"ie% cum ar fi .n lim!ile
europene/ middle dot% trian#ular colon (i alf+trian#ular colon$ Caracterele e6tinse sunt
similare n alte scrieri din lumeQ nu sunt e6acte din punct de vedere alfa!etic dar se potrivesc
pe undeva$
B$D )tartul n XML
-cest su!iect eviden"ia&' mul"imea de deprinderi necesare pentru XML (i clarific'
numeroasele asem'n'ri dintre XML (i RTMLF
P XML este sensi!il la tipul literelor deoarece ma,usculele nu repre&int' un concept
universal 7 Dac' s+ar trata literele mari (i mici ca fiind ecivalente% ar tre!ui s' se fac' la fel
pentru mii de alte variante de litere n alte lim!i% o opera"ie mpov'r'toare$ Unele lim!i nici
nu au tipuri de litere$ De e6emplu% n lim!a e!raic' nu e6ist' litere mici% iar lim!a ara!' nu
face distinc"ie ntre forma ini"ial'% de mi,loc (i final' a literelor$ 0entru cei care prefer' s'
scrie eticetele cu ma,uscule (i atri!utele cu litere mici% pentru a le eviden"ia% aceasta este o
(tire teri!il'$ Dar editoarele de cod moderne nu mai acord' o importan"' a(a de mare acestui
lucru ca nainte$ De e6emplu% preci&area anumitor culori pentru a marca eticete este un lucru
o!i(nuit% deci utili&area ma,usculelor este ntruc*tva un anacronism istoric% asemenea
numerelor de linii n CO4OL$
P XML este foarte precis cu privire la im!ricarea corect' a eticetelor 7Eticetele nu
se pot nceia ntr+un conte6t diferit de cel de nceput$ Deci% dac' se dore(te Y!old\Yitalics\%
fra&a eviden"iat' tre!uie ncis' cu YMitalics\YM!old\% pentru a evita o eroare fatal'$ Deoarece
XML poate referi (i include documente XML (i fra#mente de documente oriunde pe =e!%
fiecare document XML tre!uie s' se supun' acelora(i re#uli pentru a nu strica documentele
altora$
Pagina 62 din 97

P XML nu este !ine prote,at mpotriva recursivit'"ii 7 Cu toate c' este posi!il'
sta!ilirea e6cluderilor e6plicite la un anumit nivel% la o structur' comple6' a unui document
este dificil' men"inerea acelor e6cluderi la un nivel redus% mai ales atunci c*nd se utili&ea&'
eticete care pot fi aplicate la orice nivel$ Deci% interdic"ia RTML referitoare la includerea
unei eticete ancor' Ya\ n interiorul altei eticete ancor' e6ist' (i n XML% dar nu este
impus' dincolo de includerea direct'$
P XML o!li#' la nciderea fiec'rei eticete% ciar (i a eticetelor vide 7 Deoarece
este posi!ila crearea unui document XML care s' nu utili&e&e un DTD% un procesor XML nu
are de unde s' (tie dac' o eticet' este sau nu vid'$ Deoarece toate documentele XML tre!uie
s' fie construite corect% eticetele vide tre!uie marcate cu o sinta6' special' care spune unui
procesor XML c' eticeta este vid' (i ncis'$ -cest lucru se reali&ea&' plas*nd un spa"iu (i
un caracter slas la sf*r(itul eticetei% astfelF
Y!reaN M\
E6ist' o sinta6' alternativ'% care este la fel de !un' pentru procesoarele XML reale%
dar !locea&' frecvent !ro:serele =e! atunci c*nd este utili&at' cu XRTMLQ aceasta cere ca
o eticet' vid'% cum ar fi Y!r\% s' fie ncis' cu YM!r\% astfelF Y!r\YM!r\
Din p'cate% este prea periculoas' pentru a fi utili&at' n si#uran"'$ Multe !ro:sere
actuale (i ma,oritatea celor mo(tenite nu recunosc eticeta de ncidere non+ RTML (i fac
lucruri ciudate cu ea$ Navi#ator B$E% de e6emplu% poate &'p'ci afi(area atunci c*nd se
mpiedic' de o eticet' YM!r\$ Comportamentul e6act poate diferi n func"ie de po&i"ia n cod
(i de eticeta vid' care se ncide$ 0e scurt% aceast' sinta6' este predispus' la erori (i ar tre!ui
evitat'$
P XML necesit' ncadrarea valorilor atri!utelor fie ntre apostrofuri% fie ntre #ilimele
7 -colo unde RTML este indul#ent% mai ales n ceea ce prive(te numerele (i aproape orice (ir
f'r' spa"ii n interior% XML tratea&' totul ca (ir de caractere (i las' aplica"ia s' (i dea seama
sin#ur' de toate acestea$
P XML recunoa(te mai multe lim!i 7 )pre deose!ire de RTML% seturile de caractere
e6tinse utili&ate n multe lim!i europene nu sunt pe deplin recunoscute n mod presta!ilit$
E6ist' un mecanism simplu pentru includerea acestora% precum (i a ntre#ului set de caractere
Unicode .cunoscut% de asemenea% (i ca I)OMIEC 3IDBD/ care are peste un milion de caractere%
deci suportul pentru cine&'% ara!' (i multe alte lim!i mai e6otice ale lumii este un lucru
u(or$ Jn afar' de diferen"ele men"ionate n aceast' list'% XML este foarte asem'n'tor cu
RTML din punctul de vedere al marc'rii eticetelor% al ar#ument'rii atri!utelor (i al trecerii
con"inutului ntre pereci de eticete$
Pagina 63 din 97

Lim!a,ul XML a fost proiectat astfel nc*t s' fie transparent la utili&are pentru a putea
fi n"eles (i utili&at cu u(urin"'$ Descrierile XML succinte sau complicate din ma,oritatea
documentelor sunt #reu de n"eles n efortul de a fi e6plicit ntr+un mod n care pro#ramatorii
s' l poat' translata cu u(urin"' n aplica"ii care s' func"ione&e$
B$E Definirea unui document XML ca ntre#
Un document XML este o colec"ie de entit'"i care pot fi sau nu anali&ate$ Datele care
nu sunt n"elese de un procesor XML% date !inare sau date care au sens numai pentru alte
aplica"ii% repre&int' date neanali&ate$ Datele n"elese de XML% fie ca (i caractere fie ca
marca,e% sunt date anali&ate$
Un document XML tre!uie s' fie construit corect$ Jn Recomandarea XML 3$I a =AC
aceast' situa"ie este descris' concis prin urm'toarele cerin"eF
P Luat ca ntre#% corespunde produc"iei eticetate ca document$
P )atisface toate constr*n#erile de construire corect' din aceast' specifica"ie
.Recomandarea XML 3$I/
P Fiecare entitate anali&at'% referit' direct sau indirect n cadrul documentului% este
construit' corect$
0rima constr*n#ere spune c' pentru a fi construit corect% un document XML tre!uie s'
respecte toate re#ulile care descriu un document n Recomandarea XML 3$I$ -cele re#uli
spun n primul r*nd c' un document XML tre!uie s' con"in' un prolo# (i un sin#ur element
care formea&' elementul r'd'cin' al documentului% mpreun' cu comentarii op"ionale (i
instruc"iuni de prelucrare la sf*r(itul documentului% dar% din p'cate% anali&orul XML nu are
cum s' spun' dac' aceste comentarii (i instruc"iuni de prelucrare ata(ate sunt sau nu ata(ate
documentului$ Deoarece ele pot sa fie plasate dup' eticeta de nceiere% un anali&or XML nu
poate s' spun' nici dac' instruc"iunile de prelucrare (i comentariile ata(ate au fost sau nu
recep"ionate$ -ceasta contravine re#ulii #enerale din XML care spune c' un anali&or tre!uie
s' fie capa!il s' indice dac' un document este sau nu complet$ Dac' se utili&ea&' instruc"iuni
de prelucrare sau comentarii% este prefera!il' trecerea lor n prolo# unde sunt mult mai n
si#uran"' (i nu se pot pierde$
Cea de a doua constr*n#ere spune c' documentul respect' constr*n#erile construirii
corecte descrise n document$ Una din constr*n#erile construirii corecte este c' entit'"ile
anali&ate recursiv sunt inter&ise$ Recursivitatea din aceast' interdic"ie se refer' la formarea
unei !ucle de entit'"i n care o entitate se ncorporea&' pe ea ns'(i sau o alt' entitate care se
ncorporea&' pe ea ns'(i indiferent de nivelul de indirectare$ -ceasta mai nseamn' (i c' un
document nu se poate referi la el nsu(i% nici m'car indirect printr+o entitate e6tern'$ El se
Pagina 64 din 97

poate referi la o entitate e6tern' numai dac' aceasta nu se refer' la ea ns'(i% ciar (i indirect$
Este posi!il ca anali&oarele care nu validea&' s' nu depiste&e aceast' eroare% dar aceasta este
totu(i o eroare$ Din punct de vedere lo#ic este evident c' dac' documentul - con"ine
documentul 4% definindu+l pe 4 ca (i c*nd l+ar con"ine pe - se #enerea&' o !ucl' infinit'$
4ucla infinit' este inter&is'$
Jn termeni XML% construc"ia corect' este o alt' modalitate de a spune c' un document
XML formea&' un ar!ore% sau o ramur' a unui ar!ore% adic' este complet n sine$ -cest lucru
este necesar deoarece XML permite construirea de documente mai mari din unele mai mici (i
repre&int' o ceie a posi!ilit'"ii de utili&are a XML pe =e!$
De(i construirea corect' poate fi considerat' suficient' deoarece un document
construit corect are un DTD care l descrie% pot fi construite un num'r infinit de DTD+uri
care% de asemenea% s' l descrie$ Deci% pentru validitate total'% un DTD asociat este necesar$
0roduc"ia documentului este definit' n numai dou' afirma"ii% preluate din nou din
Recomandarea XML 3$IF
P Con"ine unul sau mai multe elemente$
P E6ist' un sin#ur element% numit r'd'cin' sau element document% care s' nu ai!' nici
o parte a sa n con"inutul oric'rui alt element$ 0entru toate celelalte elemente% dac' eticeta de
pornire se afl' n con"inutul unui alt element% atunci (i eticeta de nceiere se afl' n
con"inutul aceluia(i element$ E6primat mai simplu% elemente delimitate de eticete de pornire
(i nceiere sunt im!ricate corect unele n altele$
0rima afirma"ie spune c' ntr+un document tre!uie s' e6iste cel pu"in un element sau%
altfel spus% un document construit corect nu poate fi vid$
Cea de a doua afirma"ie spune c'% ntr+un sens restr*ns% un document tre!uie s' fie un
ar!ore$ El nu poate fi o re"ea conectat' ar!itrar sau s' ai!' orice alt' topolo#ie care nu se
reduce la un ar!ore simplu$ El tre!uie s' fie complet pentru a putea vedea diferen"a dintre o
desc'rcare reu(it' (i una par"ial'$
Din punct de vedere tenic% un ar!ore este un #raf cone6 care nu con"ine circuite$ Cu
alte cuvinte% un ar!ore se ramific' de la r'd'cina sa f'r' a se mai conecta la el nsu(i% deci nu
con"ine mucii multiple sau !ucle$ Orice lucru care con"ine !ucle sau mucii multiple% nu este
un ar!ore% ci altceva% (i nu poate fi repre&entat n XML$ Un efect secundar interesant este
acela c' ntr+un ar!ore se poate ale#e ar!itrar un punct% (i se poate transforma un nod ntr+o
r'd'cin'% reor#ani&*nd ar!orele ntr+un alt ar!ore% cu o alt' ordine de parcur#ere$ -ceasta
ilustrea&' caracterul capricios al scemelor de clasificare$
Pagina 65 din 97

O desc'rcare par"ial' este posi!il' n RTML% deoarece RTML nu are nevoie de
eticeta de nceiere YMtml\% sau nu are nevoie de aproape nici o eticet' de nceiere$
Uneori !ro:serul poate detecta ntreruperea% dar acest lucru nu este #arantat$ -ceasta
nsemn' c' un document par"ial se poate de#i&a ntr+unul complet% iar utili&atorul nu are de
unde s' (tie acest lucru p*n' c*nd n te6t nu apare o eroare evident'$ XML previne aceste
pro!leme% lucru care poate fi important n ca&ul n care un utili&ator reclam' ulterior c' o
conven"ie de acordare a licen"ei% de e6emplu% nu a fost afi(at' n ntre#ime$ Insist*nd asupra
unui ar!ore complet% un astfel de e6emplu fiind pre&entat n Fi#ura 3% se
elimin' aceste pro!leme posi!ile$
Fi#ura 3
0e de alt' parte% un #raf care nu formea&' un ar!ore nu poate fi transformat ntr+un
document XML dec*t dac' #raful poate fi simplificat% elimin*nd toate caracteristicile care nu
sunt repre&entative pentru ar!ori$ Jn Fi#ura 2% de e6emplu% #raful din st*n#a poate fi
simplificat prin eliminarea unei c'i de la frun&a de sus c'tre un nod$ Jn aceea(i fi#ur'%
Pagina 66 din 97

#rafului din partea dreapt' tre!uie s' i se elimine o r'd'cin' deoarece un document XML
poate avea o sin#ur' r'd'cin'$
B$G 0rolo#ulF declara"ia XML
Fiecare document XML% ar tre!ui s' nceap' cu o declara"ie XML care identific'
fi(ierul ca fiind un fi(ier XML (i identific'% de asemenea% versiunea XML utili&at' n
documentul respectiv$ Caracterul op"ional este datorat numai faptului c' pe =e! e6ist' multe
fi(iere RTML (i )1ML care corespund perfect unui document XML construit corect$ De
asemenea% declara"ia XML este locul unde se declar' codificarea (i dac' documentul este sau
nu autonom$ Ordinea din fra#mentul urm'tor este o!li#atorie cu toate c' atri!utele encodin#
(i standalone sunt am!ele op"ionale$
YK6ml versionZ93$I9 encodin#Z9I)O+GGCH+39 standaloneZ9Les9\
Codific'rile permit identificarea c'rui dintre multiplele seturi de caractere va fi
utili&at n document$ -cest lucru este important deoarece% spre deose!ire de RTML% care
implic' -)CII% (i o!li#' la folosirea numelor -)CII% XML permite vor!itorilor de Rindi% de
e6emplu% s' utili&e&e codificarea lor (i s' fac' te6tul (i mediul de editare li&i!il (i pentru
persoanele o!i(nuite care pot fi autori XML$ )au% un autor cine& poate s' prefere caracterele
cine&e(ti n eticete (i n con"inut cu c*teva limit'ri !a&ate pe re#ulile lim!a,ului n sine% se
pot utili&a moduri de scriere (i ideo#rame at*t n numele eticetelor c*t (i n con"inut$
B$H Documente autonome
Pagina 67 din 97

Jn conformitate cu Recomandarea XML 3$I a =AC% UDocumentele autonome nu au
declara"ii de marcare e6terne care s' afecte&e informa"ia XML transferat' de procesorul XML
unei aplica"ii9$ -cesta este un mod e6traordinar de succint (i o!scur de a spune c'
standaloneZ9Les9 nseamn' c'F
P Jntr+un DTD e6tern nu e6ist' valori presta!ilite declarate ale atri!utelor care s' nu
fie setate e6plicit n document$
P Nu sunt utili&ate alte entit'"i n afar' de SampQ% SltQ% S#tQ% SaposQ% (i S]uotQ% care
nu au fost declarate local sau poate citite prin referin"' dintr+un fi(ier$
P Nu e6ist' elemente care s' ai!' ca (i con"inut numai spa"ii al!e de orice natur'$
P Nu e6ist' atri!ute e6terne care tre!uie normali&ate% deci con"inutul atri!utelor nu
poate con"ine spa"ii al!e% caractere sau referin"e la entit'"i$ -ceasta nu nseamn' c'
documentul nu are nimic e6tern$ -ceasta nseamn' n special c'% indiferent de locul n care un
procesor XML care nu validea&' se opre(te din citirea documentelor e6terne% se opre(te
prelucrarea tuturor declara"iilor$ Toate aceste lucruri se pot face dac' (i numai dac' sunt puse
n su!mul"imea DTD+ului intern$ Datele e6terne care nu sunt marca,e nu fac su!iectul acestei
afirma"ii$ Deci% pot e6ista fi(iere #rafice% fi(iere te6t incluse (i orice altceva% at*t timp c*t ele
nu sunt marca,e (i au fost declarate n su!mul"imea DTD+ului intern$ Dup' toate acestea%
procesorul XML nu tre!uie s' anun"e aplica"ia dac' documentul este sau nu autonom$ De
fapt% procesorul nu tre!uie s' fac' nimic cu aceast' informa"ie (i nici s' se comporte ntr+un
anumit fel atunci c*nd nt*lne(te aceast' informa"ie$
Jn mod fundamental% proiectantul DTD+ului tre!uie s' descifre&e dac' documentul
creat utili&*nd acel DTD poate fi sau nu autonom (i s' comunice acest lucru oamenilor
inclusiv autorilor$ -utorii care (tiu c' DTD a fost proiectat pentru a fi autonom sau cei care au
convertit un document care nu a fost proiectat s' fie autonom n acest format% pot insera
stanaloneZ9Les9 n declara"ia lor XML ca o documenta"ie a acelui faptF
YK6ml versionZ93$I9 standaloneZ9Les9 K\
Documentele care nu sunt autonome pot fi convertite prin al#oritmi la documente
autonome% automat% presupun*nd c' este disponi!il' o facilitate care s' reali&e&e acest lucru%
sau manual n ca& contrar$
B$3I Construirea prolo#ului unui document XMLF Declara"ia tipului documentului
.Document TLpe Declaration/
0rolo#ul unui document XML con"ine mai multe instruc"iuni$ 0rima% declara"ia XML%
afirm' c' documentul urm'tor este XML$ Cea de a doua% declara"ia tipului documentului
.Document TLpe Declaration/% este metoda utili&ata pentru a identifica defini"ia tipului
Pagina 68 din 97

documentului .Document TLpe Definition + DTD/ folosit' de un anumit document$ Faptul c'
acronimul DTD poate fi aplicat la Document TLpe Declaration este o coinciden"' nefericit'$
DTD se refer' numai la Document TLpe Definition$ Jntr+un document XML poate e6ista o
sin#ur' declara"ie a tipului documentului% deci este introdus' ciar n instan"a documentului$
Deoarece pot fi com!inate mai multe DTD+uri pentru a forma un sin#ur document% aceasta
permite controlul nc'rc'rii DTD+urilor n fiecare document$
Declara"ia tipului documentului .DOCTk0E/ are dou' p'r"i% am!ele op"ionale$ 0rima
se refer' la un DTD e6tern% (i utili&ea&' cuvinte ceie 0U4LIC sau )k)TEM pentru a
identifica o intrare dintr+un catalo#% respectiv un URI$ Jn ca&ul n care cataloa#ele nu sunt
implementate n procesorul XML% se pot specifica am!ele p'r"i deodat'% f'r' cel de al doilea
cuv*nt ceieF
YeDOCTk0E nume+document 0U4LIC UTcatalo# idV9\
YeDOCTk0E nume+document 0U4LIC UTcatalo# idV9 UTuriV9\
YeDOCTk0E nume+document )k)TEM UTuriV9\
Cea de a doua parte op"ional' a declara"iei DOCTk0E permite introducerea
su!mul"imii interne a unui DTD direct n document$ E6ist' restric"ii severe cu privire la #enul
de informa"ie care poate fi introdus' n DTD+ul intern% dar oricum se pot face destul de multe$
)u!mul"imea intern' a unui DTD este ncadrat' ntre parante&e drepte% astfelF
YeDOCTk0E nume+document ? Tdeclara"iile DTD+ului internV @\
De asemenea% cele dou' pot fi com!inate% permi"*nd ad'u#area anumitor tipuri de
declara"ii (i entit'"i aproape n orice modF
YeDOCTk0E nume+document 0U4LIC UTcatalo# idV9 UTuriV9 ? Tdeclara"iile DTD+
ului internV @\
0entru claritate% su!mul"imea intern' este eviden"iat' ca mai ,osF
YeDOCTk0E nume+document 0U4LIC UTcatalo# idV9 UTuriV9 ?
Tdeclara"iile DTD+ului internV
@\
Declara"ia DOCTk0E tre!uie s' utili&e&e numele elementului r'd'cin' al DTD+ului
fie acesta intern sau e6tern% ca fiind c*mpul eticetat nume+document din e6emplele
anterioare$ Deci dac' numele elementului r'd'cin' al DTD+ului este Dave% declara"ia
DOCTk0E ar tre!ui s' nceap' astfelF
YeDOCTk0E Dave l\
Manualul de codare indic' autorilor ce tre!uie trecut n DOCTk0E$ Un proiectant
DTD ar tre!ui s' furni&e&e un astfel de document sau o foaie de codare fiec'rui autor$ De
Pagina 69 din 97

asemenea% se poate crea un DTD master care apelea&' p'r"ile DTD necesare% lucru care
seam'n' cu comen&ile dintr+un meniu$ -tunci c*nd se o!"ine o com!ina"ie de func"ionalit'"i
care permite crearea structurii documentului de care este nevoie% se poate pu!lica DTD+ul
re&ultat (i nl'tura nepl'cerea refacerii pentru fiecare document nou$
B$3I$3 Crearea corpului documentului
Un document XML este alc'tuit din te6t% care de o!icei este format dintr+un amestec
de marca,e (i date caracter$ 0rolo#ul con"ine numai marca,e% dar nu aceasta este partea
interesant'% deoarece este nevoie de date care s' nso"easc' marca,ele care% altfel% nu ar fi
dec*t ni(te cutii #oale ce a(teapt' s' fie umplute$ Corpul documentului con"ine aproape tot
ceea ce contea&' din perspectiva unei aplica"ii mpr'(tiate #eneros n cadrul marca,elor$
B$3I$2 Date caracter
Un DTD poate declara multe tipuri de date care s' poat' fi utili&ate ntr+un document%
dar tipul de date presta!ilit este ntotdeauna CD-T-% pentru date o!i(nuite de tip caracter$
Foaia sau manualul de codare indic' ce tip de dat' poate fi introdus n fiecare atri!ut sau
c*mp cu con"inut element$ 0resupun*nd c' tipul de date este CD-T-% n c*mp se poate pune
aproape orice se dore(te at*t timp c*t nu con"ine un marca, n afara unei secven"e escape$
Este pe deplin posi!il' construirea unui DTD care s' nu con"in' te6t n interiorul
elementelor$ Jn scim!% se pot pune datele semnificative n interiorul atri!utelor asociate
fiec'rui element% care pot fi toate declarate ca fiind vide sau av*nd numai con"inut element$
-cest lucru se face uneori pentru a converti un document utili&*nd un standard de codificare
cum ar fi M-RC% care este n esen"' un format !inar% la XML$
B$3I$A Marca,ul
Marca,ul este format din ansam!lu de date non+caracter dintr+un fi(ier XML$
Diversele forme pe care le poate lua un marca, sunt pre&entate n ta!elul urm'torF
Ta!el
3 )inta6a marca,ului XML
Pagina 70 din 97

Toate celelalte sunt date de tip caracter$
Marca,ul ncepe ntotdeauna fie cu caracterul Y% ca& n care se nceie ntotdeauna cu
caracterul \% fie cu caracterul S% ca& n care se nceie ntotdeauna cu caracterul UQ9$
B$3I$B Formarea structurilor lo#ice n XML
Im!ricarea elementelor este sin#urul mecanism utili&at pentru a ar'ta structura lo#ic'
dintr+un document XML$ Eticetele de pornire (i nceiere din flu6ul de te6t spun
procesorului XML c' a fost nt*lnit un nod$ Dac' procesorul XML nt*lne(te o alt' eticet'
de pornire nainte de eticeta de nceiere corespun&'toare% atunci procesorul (tie c' acesta
este fie un nod nou n ar!ore% fie o frun&'$ Dac' nu #'se(te o nou' eticet' de pornire (i
nt*lne(te o eticet' de nceiere% atunci procesorul (tie c' aceasta este o frun&' (i c' poate
ac"iona iterativ la acel nivel al ar!orelui p*n' c*nd nt*lne(te o alt' eticet' de pornire sau de
nceiere$ 0relucrarea ac"ionea&' treptat% !a&*ndu+se pe aceast' re#ul' simpl'$ Dac'
procesorul validea&' documentul% atunci fiec'rui nod i se poate asocia o re#ul' care s'
determine ce tip de con"inut poate ap'rea n el$ O eticet' vid' este% prin defini"ie% o frun&'%
deoarece nu poate avea nici un con"inut$
Ma,oritatea structurilor de date con"inute ntr+un document XML pot fi accesate
secven"ial f'r' a construi structura n memorie$ O eticet' de pornire ncepe un nod sau o
frun&'% iar eticeta de nceiere corespun&'toare l.o/ nceie$ Orice eticete nt*lnite ntre o
eticet' de nceiere corespun&'toare ei ncep un nod sau o frun&' nou'$ -cest principiu
repre&int' !a&a lui )-X (i a altor procesoare XML conduse prin evenimente$
Restul structurii lo#ice a documentului este definit prin atri!utele asociate fiec'rui
element$ Jn plus% structura lo#ic' poate diferi n func"ie de con"inutul sec"iunilor condi"ionale
din cadrul documentului sau al componentelor sale$
B$3I$C Cum formea&' XML structurile fi&ice
Im!ricarea entit'"ilor este sin#urul mecanism utili&at pentru a ar'ta structura fi&ic'
dintr+un document XML$ Defini"iile de entit'"i nt*lnite n flu6ul de te6t i comunic'
procesorului XML c' a fost #'sit' o alt' entitate$
E6ist' multe tipuri de entit'"i% de la entit'"ile mici care formea&' caractere individuale%
cum ar fiF Sf62IQ .spa"iu/% p*n' la entit'"ile e6terne care permit ncorporarea ntr+un
document por"iuni din alte documente XML sau includerea ntr+un document a referin"elor la
date neanali&ate% cum ar fi fi(iere multimedia pentru redarea ulterioar' de c'tre un a#ent
utili&ator$
Pagina 71 din 97

Un document XML este o colec"ie de astfel de entit'"i$ Fiecare din aceste su!entit'"i
tre!uie s' fie complet' n sine$ -ceasta nseamn' c'% deoarece structura documentului ca
ntre# tre!uie s' fie un ar!ore simplu% fiecare su!entitate tre!uie s' fie un sin#ur nod sau
tre!uie s' fie% de asemenea% un ar!ore simplu$ )tructuri mai mari se pot construi prin
ad'u#area nodurilor sau a ar!orilor su!entitate ca por"iuni ale ar!orelui mai mare$
B$3I$D Eticete de pornire (i eticete de nceiere
Jn XML sunt utili&ate dou' tipuri de eticete% eticete cu con"inut (i eticete vide$
Eticetele cu con"inut tre!uie s' ai!' o eticet' de pornire (i o eticet' de nceiere$ Eticeta
de pornire con"ine numele elementului ncadrat ntre parante&e un#iulare% av*nd op"ional
atri!ute ca ar#umente$ Eticeta de nceiere con"ine numele elementului precedat de
caracterul slas% totul fiind ncadrat ntre parante&e un#iulare$ Jn eticeta de nceiere nu
pute"i trece atri!ute$ Codul urm'tor repre&int' o eticet' cu con"inutF
Ytitlu su!titluZ9I c'l'torie acas'9 \Dus+ntorsYMtitlu\
)eam'n' mult cu eticetele RTML standard (i nu ar tre!ui s' ridice alte pro!leme n
afara celei de construire corect'% care cere ca ele s' se im!rice ntr+adev'r una n cealalt'$ Nu
pot e6ista eticete care s' alterne&e ntre ele ca n acest e6emplu #re(it construitF
Y!old\Yitalic\TEXT -CCENTU-TYM!old\YMitalic\
Cu toate c' este o eroare o!i(nuit' n RTML% XML este cu mult mai preten"ios (i nu
va permite aceast' construc"ie$ Eticetele tre!uie im!ricate corect% dup' cum se vede n
e6emplul urm'torF
Y!old\Yitalic\TEXT -CCENTU-TYMitalic\YM!old\
-cum eticetele sunt im!ricate corect$ Tre!uie ncis' fiecare eticet' care ncepe n
conte6tul unei anumite eticete .sau a mai multor eticete/ nainte de nciderea conte6tului
eticetei respective$
Eticetele vide au disponi!il un format special% cu toate c' aceea(i scem'% eticet' de
pornireM eticet' de nceiere% poate fi utili&at' at*ta timp c*t se "ine cont de faptul c' nu
tre!uie pus nici un fel de con"inut ntre eticeta de pornire a elementului vid (i eticeta de
nceiere care urmea&' imediat dup' ea$ De asemenea% poate e6ista preocuparea c' este
posi!il ca documentul XML s' fie vi&uali&at cu un !ro:ser =e! o!i(nuit% deoarece eticetele
de nceiere pentru elementele care arat' ca eticete RTML vide pot duce la !locarea
!ro:serului sau la un comportament ciudat al acestuia$ Totu(i% pentru utili&are #eneral'%
formatul special este mnemonic n sine% un avanta, deoarece se poate vedea c' eticeta este
vid' (i nu !locea&' aproape nici un !ro:ser$ De o!icei% eticetele vide sunt pornite (i
nceiate n cadrul aceleia(i pereci de parante&e un#iulare% plas*nd dup' numele
Pagina 72 din 97

elementului (i toate atri!utele sale posi!ile un spa"iu% un caracter slas (i apoi parante&a
un#iular' ncis'F
Yima#e sourceZ9po&amea$,pe#9 tLpeZ9W0E19 M\
B$3I$E Normali&area
Normali&area este un cuv*nt e6centric pentru aducerea lucrurilor la cel mai mic
numitor comun (i punerea lor ntr+un fel de form' canonic'$ Jn conte6tul XML% el se refer' la
procesul re&olv'rii referin"elor la entit'"i n loca"ii n care pot ap'rea astfel de referin"e% la
aran,area r*ndurilor noi pentru a lua n considerare diversele metode de tratare a lor de c'tre
diferite sisteme de operare (i la ordonarea altor lucruri care tre!uie f'cute n anumite situa"ii$
0roiectantul rareori tre!uie s' se preocupe de normali&are% e6cep"ie f'c*nd ca&urile
ne#ative$ -nali&orul XML ar tre!ui s' reali&e&e toate normali&'rile necesare% deci sin#urul
lucru la care tre!uie s' se #*ndeasc' creatorul documentului este dac' normali&area va afecta
sau nu datele sale atunci c*nd se va face trecerea de la forma nenormali&at' (i invers$ )+a
dovedit c' e6ist' dou' locuri n care pot fi nt*lnite spa"ii al!eF n datele de tip caracter din
cadrul documentului (i n datele de tip caracter atri!uite atri!utelor elementelor$ Jn primul
ca&% n entit'"ile anali&ate este dificil s' se fac' distinc"ie ntre spa"iile al!e Usemnificative9 (i
cele nesemnificative$ 0entru proiectan"i% cea mai !un' cale pare s' fie transferul c'tre
aplica"ie al tuturor spa"iilor al!e mpreun' cu cea mai !un' presupunere a procesorului%
!a&at' pe DTD% referitoare la datele care sunt n mod si#ur nesemnificative (i la cele
nesi#ure$ -cest transfer de r'spundere are sens deoarece aplica"ia este cea n m'sur' s' (tie
cum s' procede&e cu spa"iile al!e suplimentare$
0rocesorul XML poate numai s' presupun' care spa"iu al! este semnificativ (i care
nu% !a&*ndu+se pe ceea ce a fost definit n DTD sau n orice alt lim!a, de sceme utili&at$ O
aplica"ie tre!uie s' fie pre#'tit' s' trate&e presupunerile eronate$ Cu tratarea sf*r(iturilor de
linie% o alt' form' de spa"ii al!e% e6ist' o alt' pro!lem'$ Liniile noi sunt tratate diferit pe
sisteme diferite$ -lternativele #enerale sunt un salt la linie nou' .UNIX/% un return .MacO)/
(i at*t un return c*t (i saltul la linie nou' .M) =indo:s/$ Un alt lucru o!i(nuit pentru aplica"ii
este% de asemenea% inserarea de secven"e contradictorii cu oricare dintre acestea% n orice
ordine% atunci c*nd nt*lnesc un fi(ier dintr+un sistem str'in$ =AC a ot'r*t c' nu poate face
totul (i a ales un set re&ona!il de re#uli$ Dac' anali&orul nt*lne(te fie Sf6IDQSf6I-Q .return
% salt la linie nou'/% fie Sf6IDQ.return/% el le nlocuie(te cu SfI-Q .salt la linie nou'/%
caracterul de linie nou' UNIX$
Microsoft (i -pple au ales mecanisme diferite pentru separarea liniilor% Microsoft
ale#*nd tenica Ucurea (i !retele9 o!i(nuit' pentru teleimprimatoare% utili&*nd un return (i
Pagina 73 din 97

apoi un salt la linie nou' pentru a indica o linie nou'$ -pple a ot'r*t c' saltul la linie nou'
era redundant (i a considerat c' un sin#ur return este suficient% modelat pro!a!il dup'
comportamentul unei ma(ini de scris o!i(nuite$ UNIX a utili&at de la nceput un sin#ur salt la
linie nou' pentru a reali&a acela(i lucru% iar acesta a fost standardul convenit pentru XML$ Jn
atri!ute e6ist' o secven"' de transformare standard (i apoi o prelucrare
ad'u#at' special pentru orice n afar' de CD-T-F
P Referin"ele la caractere sunt prelucrate prin ad'u#area caracterului referit la valoarea
de ie(ire a atri!utului$
P Referin"ele la entit'"i sunt procesate prin prelucrarea recursiv' a te6tului de nlocuit
al entit'"ii$
P )pa"iile al!e% f62I .spa"iu/% f6ID .retur de car/% f6I- .salt de linie nou'/ (i f6IH
.ta! ori&ontal/ sunt prelucrate prin ad'u#area lui f62I .spa"iu/ la valoarea normali&at' a
ie(irii e6cep"ie f'c*nd faptul c' se adau#' un sin#ur f62I.spa"iu/ pentru secven"a
Uf6IDf6I-9 .retur de car% salt la linie nou'/% care este parte a unei entit'"i e6terne anali&ate
sau valoarea entit'"ii literale a unei entit'"i anali&ate interne$
P Celelalte caractere sunt prelucrate prin ad'u#area lor la valoarea normali&at' a
ie(irii$
P Dac' tipul de dat' al atri!utului nuI este CD-T-% cel presta!ilit% atunci se aplic'
nc' o transformare$ )pa"iile din fa"' (i din spate sunt eliminate% iar spa"iile multiple sunt
comasate ntr+un sin#ur spa"iu$ Diferen"a dintre cele dou' tipuri de normali&are const' n
faptul c' se pot transfera n mod convena!il (iruri lun#i ntr+un atri!ut% restr*n#e linii astfel
nc*t s' ncap' n pa#in'% iar n final con"inutul elementului s' r'm*n' relativ curat$
B$3I$G Tipuri de elemente
Jn mod surprin&'tor% la validare nu este o eroare utili&area unui element de un tip care
nu a fost declarat% cu toate c' este posi!il ca anali&orul s' emit' un advertisment$ De fapt%
permi"*nd n interiorul unor elemente alte tipuri de elmente nedeclarate% indiferent de ceea ce
spune modelul lor de con"inut% se poate suplimenta DTD+ul unui document cu elemente din
alte &one de nume$ Deci% tot ce r'm*ne de f'cut este utili&area elementului nedeclarat ntr+o
manier' e6act'% construit' corect% identific*nd pe c*t posi!il &ona de nume de unde provine$
Jn termeni XML% a fi construit corect este un alt mod de a spune c' acel element formea&' un
ar!ore sau o ramur' a unui ar!ore care este complet' n sine$ -cest lucru este necesar
deoarece XML permite construirea de documente mai mari din unele mai mici (i este un
element ceie pentru utili&area XML pe =e!$ Fiecare element dintr+un document XML valid
Pagina 74 din 97

a fost definit n DTD+ul asociat acelui document prin declara"ia DOCTk0E$ DTD+ul declar'
urm'toareleF
P Numele efective ale elementelor
P Re#ulile utili&ate pentru a determina care elemente se pot im!rica n alte elemente (i
n ce ordine
P -tri!utele posi!ile (i valorile lor presta!ilite sau constante
P 5alorile caracter ale tipurilor enumerate
P Entit'"ile neanali&ate utili&ate n document (i modul n care sunt referite prin nume
P Codific'rile de lim!' utili&ate n document
P -lte informa"ii importante pentru prelucrarea (i redarea documentului
Respect*nd aceste re#uli se pot crea documente n concordan"' cu (a!lonul pe care
proiectantul documentului l+a avut n minte atunci c*nd a creat DTD+ul$ Jntr+un mediu care
nu validea&' se pot crea eticete (i atri!ute pe m'sura naint'rii$ Foaia sau manualul de
codare afi(ea&' toate acestea ntr+un format u(or de citit (i n"eles% dac' autorul DTD+ului (i+a
f'cut trea!a corect$ C*nd se creea&' un document XML sau se corectea&' o eroare% este
posi!il s' nu se !eneficie&e de avanta,ul unui mediu de creare complet$ Este ntotdeauna
important' p'strarea la ndem*n' a documenta"iei de codare pentru ca&ul n care apar
defec"iuni$
B$3I$H Entit'"i neanali&ate
O entitate neanali&at' este orice lucru care nu poate fi recunoscut de un procesor
XML% fie date !inare% cum ar fi un fi(ier ima#ine sau audio% fie te6t care tre!uie s' fie
transferat unei aplica"ii f'r' a fi prelucrat n vreun fel$ RTML utili&ea&' comentarii pentru a
ascunde un astfel de te6t de !ro:serul RTML% dar XML are c*teva mecanisme care
func"ionea&' mult mai si#ur$
O entitate neanali&at' tre!uie mai nt*i s' fie declarat' ca NOT-TION% o declara"ie
special' care nume(te o aplica"ie de asisten"' care (tie cum s' lucre&e cu entit'"i de un anumit
tip$ Nota"iei i este dat un nume% un identificator pu!lic op"ional (i apoi numele mai pu"in
op"ional al aplica"iei de asisten"'% ca n una din variantele urm'toareF
Ye NOT-TION nume+mnemonic 0U4LIC Uidentificator+pu!lic9\
Ye NOT-TION nume+mnemonic 0U4LIC Uidentificator+pu!lic9 Unume+
aplica"ie$e6e9\
Ye NOT-TION nume+mnemonic )k)TEM Unume+aplica"ie$e6e9\
0rima op"iune func"ionea&' numai dac' e6ist' un catalo#$ Nu se poate pune !a&a pe
un catalo# deoarece acesta func"ionea&' indiferent dac' e6ist' sau nu catalo#$ Nu se poate
Pagina 75 din 97

!a&a pe un catalo# deoarece acesta este un instrument )1ML pe care multe procesoare XML
actuale l+au mo(tenit implicit de la predecesoarele lor )1ML$ )tudierea catalo#ului nu este
specificat' n recomandarea =AC (i nu se poate conta niciodat' pe ea$ Dac' este posi!il% se
recomand' utili&area ultimele dou' versiuni$ 0e de alt' parte% codarea ard a informa"iilor
despre loca"ia (i identitatea aplica"iei de asisten"' n a!solut fiecare DTD este un anacronism
predispus la erori pe =e!$
0rin redefinirea comportamentului script+urilor n pre&en"a comentariilor% proiectan"ii
XML+ului au introdus o pro!lem' de incompati!ilitate ntre XML (i RTML$ Dup' toate
pro!a!ilit'"ile% procesoarele XML vor continua s' transfere comentarii la aplica"ii deoarece
multe pa#ini se vor ntrerupe dac' nu vor avea acest comportament$ De asemenea%
procesoarelor le este permis transferul informa"iei comentate prin acela(i lim!a, prin care li
se permite s' nu o fac'$ Dup' ce o nota"ie a unei entit'"i neanali&ate a fost definit'% ea tre!uie
s' fie declarat' ca o entitate% astfelF
Ye ENTITk nume+mnemonic ND-T- nume+mnemonic\
(i apoi trecut' ca un atri!ut ntr+un element pentru a o putea utili&aF
Ye ELEMENT name EM0Tk\
Ye -TTLI)T name tLpe NOT-TION Umnemonic9
l\
Numele mnemonice nu mpart aceea(i &on' de nume% deci nu are importan"' dac' ele
sunt identice$ Jn acest moment se poate utili&a tipul de date definit astfel$ Tipul de date poate
fi utili&at numai ca atri!ut al unui element declarat ca fiind de acel tip sau av*nd acel tip
disponi!il ntr+o enumerare$ Celelalte atri!ute adun' informa"iile de care are nevoie aplica"ia
de asisten"' e6tern' pentru a fi capa!il' s' prelucre&e datele$ O aplica"ie tipic' poate fi un
fi(ier ima#ineF
Yima#e source Z9uri9 alt Z9#rapic description9 tLpeZ9#ifGHa9\
-cest element va necesita n DTD urm'toarele declara"iiF
Ye NOT-TION #ifGHa 0U4LIC U+MMCompu)erveMMNOT-TION 1rapics Intercan#e
Format GHaMMEN9 Ue6plorer$e6e9\
Ye ENTITk #ifGHa ND-T- #ifGHa \
Ye ELEMENT ima#e EM0Tk\
Ye -TTLI)T ima#e source CD-T- fRE>UIRED
alt CD-T- fIM0LIED
tLpe ND-T- #ifGHa \
Pagina 76 din 97

0entru ma,oritatea instrumentelor% nu va avea importan"' dac' formatul este specificat
ca #ifGEa sau ca #ifGHa% deoarece acelea(i instrumente manevrea&' am!ele formate$
Nota"iile vor fi mult m!un't'"ite o dat' cu ad'u#area facilit'"ilor oferite de
XLinNMX0ointer care a,ut' la urm'rirea loca"iilor asisten"ilor$ Cu insta!ilitatea #eneral' a
=e!+ului la nivelul s'u actual (i cu lar#a varietate de facilit'"i (i aritecturi de pe sistemele
utili&atorilor% orice a,utor care poate fi o!"inut de c'tre utili&ator va face mai u(oar'
confi#urarea instrumentelor XML$ DTD+ul% n forma sa actual'% necesit' mult prea mult'
a,ustare n stil UNIX a fi(ierelor pentru a fi pe placul utili&atorilor o!i(nui"i$ XLinN (i
X0ointer ncearc' s' nvin#' limit'rile tenolo#iei pointer actuale$ 0ermit toate tipurile de
rela"ii% inclusiv pointeri inver(i care s' fie #enera"i pe loc n documente f'r' acces la scriere%
reali&*nd+u(i efectul ciar asupra copiei afi(ate% (i nu prin inserarea fi&ic' !rut' a eticetelor
n con"inut$
Cerin"ele XML pentru nota"ii% n forma actual'% sunt e6trem de severe$
0osi!ilitatea de a indica loca"ia unde se afl' aplica"ia de asisten"' poate fi comod'
pentru nota"ii neo!i(nuite sau foarte speciali&ate$ Totu(i% este de a(teptat ca a#entul utili&ator
s' (tie cum s' afi(e&e multe dintre tipurile mai o!i(nuite% cum ar fi 1IF+uri% W0E1+uri%
0N1uri% =-5+uri (i alte tipuri de fi(iere !inare mai mult sau mai pu"in standard% utili&ate pe
=e!$ Iat' o list' a nota"iilor o!i(nuiteF
Ye NOT-TION eps 0U4LIC UdMMI)4N m+2I3+3G32E+BFF-do!eMMNOT-TION
0ostscript Lan#ua#e Reference ManualMMEN9\
Ye NOT-TION te6 0U4LIC UdMMI)4N m+2I3+3ABBG+HFFXnutMMNOT-TION Te
TeX!ooNMMEN9\
Ye NOT-TION cm#car 0U4LIC UI)O GDA2M2MMNOT-TION Caracter encodin#
MMEN9 \
Ye NOT-TION cm#!inarL 0U4LIC UI)O GDA2MAMMNOT-TION 4inarL encodin#
MMEN9 \
Ye NOT-TION cm#clear 0U4LIC UI)O GDA2MBMMNOT-TION Clear te6t encodin#
MMEN9 \
Ye NOT-TION tiff 0U4LIC UI)O 32IGAF3HHBMMNOT-TION TIFF+3 MMEN9 \
Ye NOT-TION ,pe# 0U4LIC UI)OMIEC 3IH3GF3HGAMMNOT-TION Di#ital
Compresion and Encodin# of
Continuous 7tone )till Ima#es .W0E1/MMEN9 \
Ye NOT-TION #ifGEa 0U4LIC U+MMCompu)erve MMNOT-TION 1rapics Intercan#e
Format GEaMMEN9
Pagina 77 din 97

\
Ye NOT-TION #ifGHa 0U4LIC U+MMCompu)erve MMNOT-TION 1rapics Intercan#e
Format GHaMMEN9
\
Ye NOT-TION fa6 0U4LIC U+MMU)-+DODMMNOT-TION CCITT 1roup B Facsimile
TLpe 3 Untiled
RasterMMEN9 \
Desi#ur% va tre!ui s' se adau#e un ID sistem pentru a le putea utili&a% fie ca pointer la
o aplica"ie de asisten"' local'% fie n fi(ierul catalo# care centrali&ea&' loca"iile acestor
aplica"ii% dac' este disponi!il pentru instrumentele folosite$
B$3I$3I -plica"ii din lumea real'
)+au v'&ut de,a% mai sus% unele dintre instrumentele care pot fi utili&ate pentru a crea
un document XML% dar unde se pot #'si DTD+urileK Multe DTD+uri se afl' n domenii
pu!lice sau sunt disponi!ile ca standarde de la I)O% -N)I sau de la alte or#anisme de
standardi&are$ C*teva dintre aplica"iile mai importante ale XML care se afirm' n lumea de
a&i suntF
P Realt Level+E .RLE/% )tandardul informatic de s'n'tate .Realt Informatics
)tandard/ a fost introdus n anul 3HGE pentru a de&volta standarde pentru scim!ul electronic
de informa"ii clinice% financiare (i administrative ntre sistemele de calcul din domeniul
s'n't'"ii$ RLE s+a concentrat asupra utili&'rii )1ML (i XML ca mecanisme de transport ntre
diferite sisteme informatice din domeniul s'n't'"ii$
P Real Estate Transaction )tandard .RET) 7 standardul de tran&ac"ii imo!iliare/ este o
metod' !a&at' pe XML pentru scim!ul de informa"ii referitoare la tran&ac"iile imo!iliare$
Un standard concurent este Real Estate MarNup Lan#ua#e .RELML 7 lim!a,ul de marcare
pentru domeniul imo!iliar/ care utili&ea&' DTD+urile XML pentru a pre&enta listin#uri cu
spa"ii pentru locuin"e% spa"ii comerciale (i terenuri virane% pentru pu!licarea lor pe =e!$
P RosettaNet% lim!a,ul comun pentru afaceri% este o ini"iativ' EDIME+Commerce
destinat' intermedierilor n domeniul calculatoarelor$
P MatML (i CML sunt dou' standarde XML (tiin"ifice care permit matematicienilor
s' edite&e ecua"ii% iar cimi(tilor s' pre&inte formule cimice$
P )MIL% te )Lncroni&ed Multimedia Inte#ration Lan#ua#e .lim!a,ul de inte#rare
multimedia sincroni&at/% este RLTime for EverLman .RLTime pentru fiecare/% un lim!a, de
marcare multimedia care permite furni&orilor de con"inut s' reali&e&e pre&ent'ri audio (i
video comple6e$
Pagina 78 din 97

P ICE% Information and Content E6can#e .scim! de informa"ii (i con"inut/% cu toate
c' nu este ciar o aplica"ie XML% fiind de fapt un mecanism de transport% permite scim!ul
de investi"ii on+line (i informa"ii personale pe =e!$
P )-E W2IIG este un sistem de comen&i (i inventariere !a&at pe XML pentru industria
autoQ MI)TI% te Missile IndustrL )upplL+cain Transaction Infrastructures% face acela(i lucru
pentru industria spa"ial'$
P Cinese DTDs furni&ea&' structura speciali&at' necesar' pentru pu!licarea n lim!a
cine&'$ DTD+uri similare e6ist' pentru ,apone&'% coreean'% vietname&' (i multe alte lim!i$
P 1edML% un standard XML #enealo#ic% ncura,ea&' flu6ul li!er pe =e! al datelor
#enealo#ice$ E6ist' de,a pro#rame pentru conversia fi(ierelor standard 1enealo#ical Data
COMmunication .1EDCOM/ la 1edML$ Fiecare produc'tor de !ro:sere are standarde
propuse% despre care ceilal"i se pl*n# c' sunt ndreptate mpotriva lor$ -(a cum r'&!oaiele
!ro:serelor au dus la de&voltarea unor Ue6tensii9 patentate la RTML% care tindeau .sau
ncercau/ s' !loce&e celelalte !ro:sere% cre*nd un turn 4a!el de metode incompati!ile%
XML va fi ntr+o continu' scim!are pentru o !un' perioad' de timp$ Totu(i% !a&ele e6ist'
de,a% iar o comunitate de utili&atori cer*nd din ce n ce mai insistent standarde descise
conduce diferitele propuneri spre conver#en"'$ Multe dintre succesele ma,ore au fost
standarde ale I)O (i -N)I% care v*nd documenta"ia pentru a+(i finan"a eforturile n crearea de
standarde% dar asi#ur' un teren neutru pentru to"i partenerii$ 0entru pre"ul documenta"iei% de
o!icei c*teva sute de dolari% to"i pot concura la acela(i nivel$
C-0ITOLUL 5
0REOENT-RE- -0LIC-<IEI
UElectronX9 este o aplica"ie 8e+commerce9% un site :e! ce repre&int' un ma#a&in
virtual de electronice care se adresea&' tuturor persoanelor care doresc s' aci&i"ione&e
diverse produse% n ca&ul de fa"' electronice% prin intermediul internetului acces*nd un
ma#a&in virtual din confortul propriei locuin"e% comer"ul electronic mondial av*nd o
dinamic' ascendent' pe m'sur' ce tot mai mul"i consumatori (i tot mai multe afaceri se
conectea&' la :e!% acest tip de comer" c*(ti#*nd din ce n ce mai mult teren (i n Rom*nia$
-plica"ia se dore(te a fi o unealt' folositoare utili&atorilor% av*ndu+se n vedere
de&voltarea interfe"ei pentru a fi user+friendlL% dorindu+se a fi o aplica"ie c*t mai u(or de
Pagina 79 din 97

folosit% eventualele nea,unsuri (i opinii put*nd fi aduse la cuno(tin"a administratorului site+
ului prin adresele de e+mail puse la dispo&i"ia utili&atorilor n pa#ina de contact$
Tenolo#iile folosite pentru reali&area aplica"iei sunt 0R0 pentru #enerarea dinamic'
pa#inilor XRTML (i intero#area !a&elor de date % (i ML)]l pentru #estionarea !a&elor de
date% totul rul*nd pe suportul oferit de serverul -pace$
Reali&area acestui site presupune utili&area unei !a&e de date care s' con"in' at*t date
despre utili&atori c*t (i date despre produsele puse n v*n&are (i date despre comen&ile
efectuate de c'tre utili&atori$ 4a&a de date va con"ine (apte ta!ele cuprin&*nd informa"iile
necesare !unei func"ion'ri a aplica"iei$
C$3 Cerin"e ard:are
-plica"ia nu necesit' componente ard:are performante$
Cerin"ele ard:are pentru server suntF
0rocesor 0entium I5 2DII MR&
Memorie R-M C32 M!
Rard DisN 32I 1!
Minimul cerin"elor ard:are pentru utili&atori consta inF
0rocesor 0entium III .-MD -tlon/% GII MR&
Memorie R-M 32G M!
C$2 Cerin"e soft:are
Cerin"ele soft:are pentru aplica"ie suntF
0entru serverF
=ampserver C% versiunea 3$D$B
Un editor 0R0
0entru clientF
Internet E6plorer C$I si versiunile urm'toare sau Mo&illa Firefo6 3$I$E
C$A Func"ionalit'"ile aplica"iei
La accesarea site+ului se va descide pa#ina principal' unde utili&atorul se va putea
autentifica prin intermediul unui nume de utili&ator (i a unei parole$ Dac' nu are cont (i va
putea crea unul nou$
Dup' autentificare utili&atorul poate s' modifice datele personale sau parola
desci&*ndu+se un formular predefinit unde se pot efectua scim!'rile dorite$
Utili&atorul poate s' accese&e pa#ina de pre&entare a produselor oferite de site de
unde (i poate ale#e unul sau mai multe produse pentru a le cump'ra$ 0rodusele alese vor fi
Pagina 80 din 97

ad'u#ate ntr+un co( de cump'r'turi acestea put*nd fi comandate$ La trimiterea comen&ii
datele utili&atorului (i produsele comandate sunt re"inute n !a&a de date$
)e poate de asemenea efectua o c'utare dup' nume a produselor% fiind afi(ate
re&ultatele c'ut'rii n !a&a de date$
C$B 0roiectarea !a&ei de date
4a&a de date con"ine (apte ta!ele$
Ta!ela Utili&atori con"ine informa"ii despre utili&atorii nre#istra"i n sistem$
Ta!ela Itemi re"ine datele despre produsele oferite la v*n&are$
Jn ta!ela Caracteristici sunt re"inute caracteristicile fiec'rui produs din ta!ela Itemi
Jn ta!ela Cate#orii sunt stocate datele cate#oriilor definite pentru ieraria produselor$
Jn ta!ela Co( sunt re"inute produsele pe care un utili&ator lo#at dore(te s' le comande
la un moment dat$ Dup' trimiterea comen&ii sau la ie(irea din cont nre#istr'rile din aceast'
ta!el' sunt (terse$
Ta!ela Comen&i con"ine informa"ii despre toate comen&ile efectuate de c'tre
utili&atori$
Ta!ela ItemibComanda stocea&' datele despre produsele comandate$
)tructura !a&ei de date este descris' n scema conceptual' urm'toareF
Pagina 81 din 97

)cema fi&ic' a !a&ei de date se pre&int' astfelF
Itemi
C*mp
Tip Nul )etare de !a&' )et'ri e6tra Ceie
itembid int.33/ Da NULL -utobincrement 0rimara
catbid int.33/ Da +
numebitem varcar.EC/ Da +
0rnt float.G%2/ Da +
Pagina 82 din 97
Utili&atori
C*mp
Tip N
ul
)etare de !a&' )et'ri e6tra Ceie
id int.33/ D
a
NULL -utobincremen
t
primar'
utili&ator car.DI/ D
a
+
parola car.DI/ D
a
+
nume car.AI/ D
a
+
prenume car.AI/ D
a
+
cnp varcar.3A/ D
a
+
varsta car.A/ D
a
+
email varcar.CI/ D
a
+
telefon varcar.2C/ D
a
+
adresa varcar.2CC
/
D
a
+
sector varcar.2/ D
a
+
codbpost
al
varcar.3I/ D
a
+
oras car.AI/ D
a
+
,udet varcar.2C/ D
a
+

descriere varcar.2II/ Da +
ima#ine varcar.CI/ Da +
Caracteristici
C*mp
Tip Nul )etare de
!a&'
)et'ri e6tra Ceie
Idbitem int.33/ Da +
producator varcar.2C/ Da +
Model varcar.2C/ Da +
Cate#orii
C*mp
Tip Nul )etare de !a&' )et'ri e6tra Ceie
catbid int.33/ Da NULL -utobincrement primar'
numebcat varcar.CI/ Da +
descbcat varcar.2II/ Da +
Co(
C*mp
Tip Nul )etare de !a&' )et'ri e6tra Ceie
Id int.33/ Da NULL -utobincrement primara
Idbsesiune car.DI/ Da +
Idbitembv int.33/ Da +
Cant int.33/ Da +
producator varcar.2C/ Da +
Model varcar.2C/ Da +
databad datetime Da +
Comen&i
C*mp
Tip Nul )etare de
!a&'
)et'ri e6tra Ceie
idbc Int.33/ Da NULL -utobincrement primara
databc datetime Da +
Numebc varcar.3II/ Da +
adresa varcar.2CC/ Da +
Oras varcar.CI/ Da +
codbpostal varcar.3I/ Da +
Wudet varcar.2C/ Da +
sector varcar.2/ Da +
valoare float.G%2/ Da +
modbplata varcar.2I/ Da +
)tatus enum.hprocesatah%
hasteptareh/
Da +
Itemibcomanda
C*mp
Tip Nul )etare de !a&' )et'ri e6tra Ceie
Id int.33/ Da NULL -utobincrement primar'
Pagina 83 din 97

Idbcomanda int.33/ Da
Idbitem int.33/ Da
Cant int.33/ Da
producator varcar.2C/ Da
Model varcar.2C/ Da
0rnt float.G%2/ Da
C$C Implementarea codului
Dup' crearea !a&ei de date% urm'torul pas este #enerarea pa#inilor :e! ale aplica"iei
folosind codul RTMLM0R0$
0entru editarea codului am folosit utilitarul 0R0Edit versiunea 2$3I$I$BD3D de&voltate
de compania =ater0roof )oft:are% acest utilitar put*nd fi desc'rcat de pe internet de la
adresa ttpFMM:::$:aterproof$frM cu o licen"' de utili&are #ratuit' pe o perioada de AI de &ile$
-cest editor de cod este destinat n special cre'rii scripturilor 0R0 oferind suport (i pentru
alte lim!a,eF RTML% C))% XML% X)LT% Wavascript% )>L$
)istemul complet are dou' tipuri de componenteF fi(iere RTML (i fi(iere 0R0$
Interfa"a aplica"iei este reali&at' cu a,utorul pa#inilor RTLM% iar scripturile 0R0 #estionea&'
interac"iunea dintre pa#inile RTML (i !a&a de date prin intermediul serverului -pace$
Inre#istrare$pp
-tunci c*nd un client nou dore(te s' aci&i"ione&e unul din produsele oferite de siteul
8ElectronX9 tre!uie s' (i cree&e mai nt*i un cont de utili&are$ Clientul tre!uie s' introduc'
datele personale .nume% prenume% CN0% v*rsta% adresa de e+mail% telefon% adres'% ora(% ,ude" /
ntr+un formular% precum (i un nume de utili&ator (i o parol'$ Datele vor fi folosite
nre#istrarea comen&ilor (i pentru a de"ine o eviden"' a utili&atorilor site+ului$ Contul nu va fi
creat dac' nu sunt completate toate c*mpurile considerate o!li#atorii$ Dup' inserarea datelor
n ta!ela Utili&atori se creea&' (i fi(ierul clien"i$6ml n care sunt stocate toate datele clien"ilor
nre#istra"i n !a&a de date$
cb)E))ION?huserh@ Z cb0O)T?huserh@Q
cb)E))ION?hparola3h@ Z cb0O)T?hparola3h@Q
cb)E))ION?hparola2h@ Z cb0O)T?hparola2h@Q
cb)E))ION?hnumeh@ Z cb0O)T?hnumeh@Q
cb)E))ION?hprenumeh@ Z cb0O)T?hprenumeh@Q
cb)E))ION?hcnph@ Z cb0O)T?hcnph@Q
cb)E))ION?hvarstah@ Z cb0O)T?hvarstah@Q
Pagina 84 din 97

cb)E))ION?hemailh@ Z cb0O)T?hemailh@Q
cb)E))ION?htelefonh@ Z cb0O)T?htelefonh@Q
cb)E))ION?hadresah@ Z cb0O)T?hadresah@Q
cb)E))ION?hsectorh@ Z cb0O)T?hsectorh@Q
cb)E))ION?hcodbpostalh@ Z cb0O)T?hcodbpostalh@Q
cb)E))ION?horash@ Z cb0O)T?horash@Q
cb)E))ION?h,udeth@ Z cb0O)T?h,udeth@Q
if..cb)E))ION?huserh@ ZZ hh/ `` .cb)E))ION?hparola3h@ ZZ hh/ ``
.cb)E))ION?hparola2h@ eZ cb)E))ION?hparola3h@/ `` .cb)E))ION?hnumeh@ ZZ hh/
`` .cb)E))ION?hprenumeh@ ZZ hh/ `` .cb)E))ION?hvarstah@ ZZ hh/ ``
.eisbnumeric.cb)E))ION?hvarstah@// `` .strlen.cb)E))ION?hvarstah@/ Y 2/ ``
.cb)E))ION?hcnph@ ZZ hh/ ``.cb)E))ION?hemailh@ ZZ hh/ `` .cb)E))ION?htelefonh@ ZZ hh/
``
.cb)E))ION?hadresah@ ZZ hh/ `` .cb)E))ION?horash@ ZZ hh//
T
eco hYtml\
Yead\YMead\
Y!odL te6tZ[f3-3-GC[\
Yfont colorZ[fCHIIAF[ si&eZ[dA[\EroareeYMfont\Y!r\Y!r\
Ycenter\Yfont si&eZ[d3[\Nu ai introdus date in formular sau cele introduse nu sunt
corecte$ Y!r\
-pasa Ya refZ[inre#istrare$pp[\aiciYMa\ pentru a te intoarce la pa#ina
anterioara$YMfont\YMcenter\
YM!odL\
YMtml\hQ
V
else
T
eco hYtml\
Yead\YMead\
Y!odL te6tZ[f3-3-GC[\
Y!r\Y!r\Y!r\
Pagina 85 din 97

Ycenter\Yfont si&eZ[d3[\5a multumim$ Y!r\
Datele au fost introduse cu succes in !a&a de date$ Y!r\
0entru a va autentifica apasati Ya refZ [autentificare$pp[\ aici
YMa\$YMfont\YMcenter\
YM!odL\
YMtml\hQ
ccerere)>L Z [IN)ERT INTO outili&atorio .outili&atoro% oparolao% onumeo% oprenumeo%
ocnpo%
oemailo% otelefono% ovarstao% oadresao% osectoro% ocodbpostalo% ooraso% o,udeto/
5-LUE) .h[$addentities.cb)E))ION?huserh@/$[h% h [ $mdC.cb)E))ION?hparola3h@/$[ h%
h[$addentities.cb)E))ION?hnumeh@/$[h% h[$addentities.cb)E))ION?hprenumeh@/$[h%
h[$addentities.cb)E))ION?hcnph@/$[h% h[$addentities.cb)E))ION?hemailh@/$[h%
h[$addentities.cb)E))ION?htelefonh@/$[h% h[$addentities.cb)E))ION?hvarstah@/$[h%
h[$addentities.cb)E))ION?hadresah@/$[h% h[$addentities.cb)E))ION?hsectorh@/$[h%
h[$addentities.cb)E))ION?hcodbpostalh@/$[h% h[$addentities.cb)E))ION?horash@/$[h%
h[$addentities.cb)E))ION?h,udeth@/$[h/[Q
mLs]lb]uerL.ccerere)>L/Q
-utentificare$pp
Odat' ce contul de utili&are a fost creat utili&atorul tre!uie sa se autentifice pentru a
avea acces la pa#inile de administrare a contului personal% pentru a putea face comen&i$ Jn
acest script se verific' e6isten"a numelui de utili&ator n !a&a de date (i corectitudinea parolei%
(i n ca& de eroare% aceasta se semnalea&'$ -utentificarea se reali&ea&' prin intermediul
sesiunilor% re"in*ndu+se pentru fiecare utili&ator o instan"' unic' de sesiune$
cb)E))ION?huserh@ Z cb0O)T?huserh@Q
if..cb0O)T?huserh@ ZZ hh/ `` .cb0O)T?hparolah@ ZZ hh//
T
eco hYtml\
Yead\YMead\
Y!odL te6tZ[f3-3-GC[\
Y!r\Y!r\Ycenter\Yfont si&eZd3\0entru a va accesa contul tre!uie sa completati
casutele$ Y4r\
Pagina 86 din 97

-pasati Ya refZ[autentificare$pp[\aiciYMa\ pentru a va intoarce la pa#ina
precedenta$
YMfont\YMcenter\
YM!odL\
YMtml\hQ
V
else
T
ccerere)>L Z [)ELECT _ FROM outili&atorio =RERE utili&atorZh
[$tmlentities.cb0O)T?huserh@/$[h -ND parolaZh [$ mdC.cb0O)T?hparolah@/$[h[Q
cre&ultat Z mLs]lb]uerL.ccerere)>L/Q
if.mLs]lbnumbro:s.cre&ultat/ ZZ 3/
T
:ile.crand Z mLs]lbfetcbarraL.cre&ultat//
T
cb)E))ION?hlo#ath@ Z hDahQ
eco hYMET- RTT0+E>UI5ZRefres CONTENTZ[IQ URLZpa#ina$pp[\hQ
V
V
else
T
eco hYtml\
Yead\YMead\
Y!odL te6tZ[f3-3-GC[\
Yfont colorZ[fCHIIAF[ si&eZ[dA[\EroareeYMfont\Y!r\Y!r\
Ycenter\Y4r\ Yfont si&eZd3\Date incorecte$ Y4r\
-pasati Ya refZ[autentificare$pp[\aiciYMa\ pentru a va intoarce la pa#ina
precedenta$
YMfont\
YMcenter\
YM!odL\
YMtml\hQ
0a#ina$pp
Pagina 87 din 97

Dup' ce utili&atorul s+a autentificat se descide pa#ina de administrare a contului de
utili&are$ Jn acest script utili&atorul are la dispo&i"ie mai multe op"iuniF modificarea datelor
personale% modificarea parolei% sunt afi(ate toate comen&ile trimise de c'tre utili&ator% (i poate
accesa unul din linN+urile care duc c'tre pa#inile de pre&entare a produselor% afi(are a
statisticilor v*n&'rilor% afi(are a co(ului de cump'r'turi sau pentru ie(irea din cont$
5e&ima#a&in$pp
Jn acest script sunt pre&entate toate cate#oriile (i toate produsele e6istente n !a&a de
date$ La desciderea pa#inii apare o list' de linN+uri cu toate cate#oriile de produse% iar dac'
utili&atorul selectea&' o cate#orie se vor afi(a toate produsele din acea cate#orie% pentru
fiecare dintre acestea afi(*ndu+se numele% pre"ul (i o mic' ima#ine de pre&entare$
c#etbcats Z [select catbid% numebcat% descbcat from cate#orii order !L numebcat[Q
c#etbcatsbres Z mLs]lb]uerL.c#etbcats/ or die.mLs]lberror.// Q
if .mLs]lbnumbro:s.c#etbcatsbres/Y3/ T
cdisplaLb!locN Z [Yp\ Yem\ Nu e6ista cate#orii de vi&uali&at YMem\ YMp\[Q
V else T
:ile.ccats Z mLs]lbfetcbarraL.c#etbcatsbres//T
ccatbid Z ccats?catbid@Q
ccatbtitle Z strtoupper.stripslases.ccats?numebcat@//Q
ccatbdesc Z stripslases.ccats?descbcat@/Q
cdisplaLb!locN $Z [Yp\Ystron#\
Ya refZa[cb)ER5ER?0R0b)ELF@KcatbidZ ccatbida[\ ccatbtitle YMa\YMstron#\
Y!r\ ccatbdesc YMp\[Q
if .cb1ET?catbid@ ZZ ccatbid/ T
c#etbitems Z [select itembid% numebitem% pret% ima#ine from itemi :ere
catbidZccatbid order !L numebitem[Q c#etbitemsbres Z mLs]lb]uerL.c#etbitems/ or
die.mLs]lberror.//Q
if .mLs]lbnumbro:s.c#etbitemsbres/ Y3/ T
cdisplaLb!locN Z [Yp\ Yem\ Nu e6ista produse in aceasta cate#orie YMem\ YMp\[Q
V else T
cdisplaLb!locN $Z [Yul\[Q
:ile.citems Z mLs]lbfetcbarraL.c#etbitemsbres// T
Pagina 88 din 97

citembid Z citems?itembid@Q
citembtitle Z stripslases.citems?numebitem@/Q
citembprice Z citems?pret@Q
citembima#e Z citems?ima#ine@Q
cdisplaLb!locN $Z [ Yli\
Yta!le !orderZ3 :idtZCIg\
Ytr\
Yt\Ya refZa[so:item$ppKitembidZcitembida[\ citembtitleYMa\YMt\
YMtr\
Ytr\
Yt ei#tZ3GI :idtZ3GI\Yim# srcZa[citembima#ea[ altZa[po&aa[ !orderZI\YMt\
YMtr\
Ytr\
Yt\citembprice RON .0retul contine T5-/YMt\
YMtr\
Ytr\
Yt\Ya refZa[so:item$ppKitembidZcitembida[\ Cumpara acest produsYMa\YMt\
YMtr\
YMta!le\Y!r\[Q
V
cdisplaLb!locN $Z [YMul\[Q
V
V
V
V
-rataprodus$pp
0a#ina de afi(are a produselor nu face dec*t sa afi(e&e toate informa"iile referitoare la
c*te un produs$ -ceste informa"ii sunt introduse automat ntr+un formular$ Jn acest formular
utili&atorul mai poate s' alea#' num'rul produselor pe care dore(te s' le comande (i apoi
dac' dore(te s'+l adau#e la co( tre!uie s' apese pe !utonul 8-dau#' la co(9$
-ratacos$pp
Pagina 89 din 97

Jn aceast' pa#in' este pre&entat con"inutul co(ului de cump'r'turi$ 0rodusele e6istente
n co( sunt afi(ate ntr+un ta!el% pentru fiecare fiind afi(ate numele% produc'torul% modelul%
pre"ul% cantitatea% pre"ul total (i un linN pentru scoaterea produsului respectiv din co($ 0e
pa#in' mai sunt pre&ente valoarea total' a produselor ad'u#ate n co( (i linN+urile c'tre
pa#ina de afi(are a produselor (i c'tre pa#ina de comand'$
Comanda$pp
0a#ina de comand' con"ine un formular n care sunt afi(ate numele% prenumele% CN0+
ul utili&atorului% adresa% ora(ul% ,ude"ul% aceste c*mpuri put*nd fi modificate n ca&ul n care
utili&atorul dore(te livrarea comen&ii la o alt' adresa dec*t cea din cont (i valoarea total' a
comen&ii$ La ap'sarea !utonului 8Trimite comanda9 se inserea&' n ta!ela comen&i datele
despre comand'% iar n ta!ela itemibcomanda se inserea&' produsele comandate$ Dup'
inserarea datelor n ta!ele se creea&' fi(ierul comen&i$6ml n care sunt stocate toate comen&ile
din ta!el'$
if.eisset.cb0O)T?hadresah@// cb)E))ION?hadresah@ Z hhQ
else cb)E))ION?hadresah@ Z cb0O)T?hadresah@Q
if.eisset.cb0O)T?hsectorh@// cb)E))ION?hsectorh@ Z hhQ
else cb)E))ION?hsectorh@ Z cb0O)T?hsectorh@Q
if.eisset.cb0O)T?hcodbpostalh@// cb)E))ION?hcodbpostalh@ Z hhQ
else cb)E))ION?hcodbpostalh@ Z cb0O)T?hcodbpostalh@Q
if.eisset.cb0O)T?horash@// cb)E))ION?horash@ Z hhQ
else cb)E))ION?horash@ Z cb0O)T?horash@Q
if.eisset.cb0O)T?h,udeth@// cb)E))ION?h,udeth@ Z hhQ
else cb)E))ION?h,udeth@ Z cb0O)T?h,udeth@Q
if..cb)E))ION?hadresah@ ZZ hh/ `` .cb)E))ION?horash@ ZZ hh//
T
eco hYtml\
Yead\YMead\
Y!odL te6tZ[f3-3-GC[\
Ycenter\YB\Nu ai introdus noua adresa de livrare sau orasul$ Y!r\
-pasa Ya refZ[comanda$pp[\aiciYMa\ pentru a te intoarce la pa#ina
anterioara$YMB\YMcenter\
YM!odL\
Pagina 90 din 97

YMtml\hQ
V
else
T
eco hYtml\
Yead\YMead\
Y!odL te6tZ[f3-3-GC[\
Ycenter\YB\5a multumim$ Y!r\
Comanda a fost trimisa cu succes$ Y!r\
Inapoi la ma#a&in Ya refZ[seestore$pp[\aiciYMa\$YMB\YMcenter\
YM!odL\
YMtml\hQ
ccerere)>L Z [IN)ERT INTO ocomen&io .odatabco% onumebco% oadresao% ooraso%
ocodbpostalo%
o,udeto% osectoro% ovaloareo% omodbplatao% ostatuso/
5-LUE) .no:./% h[$addentities.cb)E))ION?huserh@/$[h%
h[$addentities.cb)E))ION?hadresah@/$[h% h[$addentities.cb)E))ION?horash@/$[h%
h[$addentities.cb)E))ION?hcodbpostalh@/$[h% h[$addentities.cb)E))ION?h,udeth@/$[h%
h[$addentities.cb)E))ION?hsectorh@/$[h%
h[$addentities.cb)E))ION?hafisbpricebprodh@/$[h%
h[$cb0O)T?hplatah@$[h% hasteptareh /[Q
mLs]lb]uerL.ccerere)>L/Q
ccidZmLs]lbinsertbid./Q
ccerere)>L3 Z [)ELECT cos$idbsesiune% cos$idbitembv% cos$cant% cos$producator%
cos$model% itemi$itembid% itemi$pret FROM cos left ,oin itemi on cos$idbitembv Z
itemi$itembid =RERE idbsesiune Zhcb)E))ION?user@h[Q
cre&ultat3 Z mLs]lb]uerL.ccerere)>L3/Q
:ile.crand3 Z mLs]lbfetcbarraL.cre&ultat3//
T
cciditZcrand3?hidbitembvh@Q
cccantZcrand3?hcanth@Q
ccproducatorZcrand3?hproducatorh@Q
ccmodelZcrand3?hmodelh@Q
ccpretZcrand3?hpreth@Q
Pagina 91 din 97

ccerere)>L Z [insert into itemibcomanda . idbcomanda% idbitem% cant%
producator%model% pret / values . hccidh% hccidith% hcccanth%
hccproducatorh% hccmodelh% hccpreth /[Q
mLs]lb]uerL.ccerere)>L/Q
V
ccerere)>L2 Z [delete from cos :ere idbsesiuneZhcb)E))ION?user@h[Q
mLs]lb]uerL.ccerere)>L2/ or die.mLs]lberror.//Q
V
C$D Manual de utili&are
-ceast' sec"iune are drept scop pre&entarea modului de interac"ionare al utili&atorului
cu aplica"ia$
La accesarea site+ului se va descide pa#ina principal' unde utili&atorul are doua
posi!ilit'"iF
Dac' are un cont creat va accesa linN+iul care trimite la pa#ina de autentificare$
Jn ca&ul n care nu are un cont tre!uie s' accese&e linN+ul de nre#istrare care va
descide o pa#ina ce con"ine un formular de nscriere$
De asemenea pe aceasta pa#ina% ca de altfel pe toate pa#inile aplica"iei% e6ist' mai
multe sec"iuniF
3$ Un meniu cu urm'toarele linN+uriF
Rome 7 face le#'tura cu pa#ina principal'
Contul meu 7 descide pa#ina de administrare a contului personal
0roduse 7 sunt afi(ate cate#oriile (i produsele e6istente n !a&a de date
Co(ul de cump'r'turi 7 con"ine produsele ad'u#ate n co( de c'tre utili&ator
)tatistici v*n&'ri 7 sunt pre&entate v*n&'rile totale (i pe cate#orii n termen de o
s'pt'm*na (i o lun'% precum (i cel mai !ine v*ndute produse din fiecare cate#orie (i cate#oria
cu cele mai mari v*n&'ri
Contact 7 sunt pre&entate op"iunile de a lua le#'tura cu sediul societ'"ii
Termeni (i condi"ii 7 con"ine drepturile (i o!li#a"iile utili&atorilor si societ'"ii
Ie(ire din cont 7 de&autentificarea utili&atorului
2$ O sec"iune de c'utare unde utili&atorul poate s' introduc' unul sau mai multe
cuvinte ce vor fi c'utate n !a&a de date
A$ O sec"iune n care sunt afi(ate toate cate#oriile de produse
Pagina 92 din 97

B$ O sec"iune ce con"ine un top ale celor mai v*ndute cinci produse din ma#a&in
0entru crearea unui cont tre!uie accesat linN+ul de nre#istrare (i se va descide o
pa#ina cu un formular de nscriere$ -poi utili&atorul va completa datele cerute (i va ap'sa
!utonul Jnre#istrea&'$ -stfel se va crea un cont (i se va confirma nre#istrarea contului%
afi(*ndu+se (i un linN c'tre pa#ina de autentificare$ Jn ca&ul n care nu mai dore(te nscrierea
va ap'sa !utonul Resetea&' pentru a (ter#e toate informa"iile introduse$
La pa#ina de autentificare utili&atorul tre!uie s' introduc' numele de utili&ator
(i parola$ Dup' aceasta tre!uie s' apese !utonul Lo#in (i se va descide pa#ina 8Contul meu9
unde utili&atorul va putea modifica datele personale sau parola% va putea vi&uali&a
produ
sele% co(ul de cump'r'turi (i va vi&uali&a comen&ile efectuate de el anterior$
Pagina 93 din 97

Jn pa#ina de pre&entare a produselor sunt afi(ate toate cate#oriile (i toate produsele
e6istente n ma#a&in$ 0e pa#in' apare o list' de linN+uri cu toate cate#oriile de produse$ La
selectarea unei cate#orii se vor afi(a toate produsele din acea cate#orie% pentru fiecare dintre
acestea afi(*ndu+se numele% pre"ul (i o mic' ima#ine de pre&entare$
0entru a vi&uali&a un produs se apas' fie pe numele produsului fie pe linN+ul
8Cump'r' acest produs9 (i se va descide pa#ina de pre&entare a produselor care afi(ea&'
toate informa"iile referitoare la c*te un produs$ Utili&atorul mai poate s' alea#' num'rul
produselor pe care dore(te s' le comande (i apoi dac' dore(te s'+l adau#e la co( tre!uie s'
apese pe !utonul 8-dau#' la co(9$
Pagina 94 din 97

Jn pa#ina de vi&uali&are a co(ului de cump'r'turi este pre&entat con"inutul acestuia$
0rodusele e6istente n co( sunt afi(ate ntr+un ta!el% pentru fiecare fiind afi(ate numele%
produc'torul% modelul% pre"ul% cantitatea% pre"ul total (i un linN pentru scoaterea produsului
respectiv din co($ 0e pa#in' mai sunt afi(ate valoarea total' a produselor ad'u#ate n co( (i
linN+urile c'tre pa#ina de afi(are a produselor (i c'tre pa#ina de comand'$
0entru a comanda produsele din cont se apas' !utonul de comanda (i se va descide
pa#ina de comand' n care sunt afi(ate numele% prenumele% CN0+ul utili&atorului% adresa%
ora(ul% ,ude"ul% aceste c*mpuri put*nd fi modificate de c'tre utili&ator dac' acesta dore(te
livrarea la alt' adres' (i valoarea total' a comen&ii (i apoi va ap'sa pe !utonul 8Trimite
Comanda9 dup' care utili&atorul va primi confirmarea nre#istr'rii comen&ii$
Pagina 95 din 97

C$E Conclu&ii
Odat' cu nceputurile Internetului un nou tip de afacere s+a profilat din ce n ce mai
pronun"at pe plan interna"ionalF comer"ul online$ -u ap'rut nenum'rate site+uri (i firme care
se ocup' cu v*n&'rile en+#ros de produse prin Internet% cu furni&area accesului contracost la
pa#ini cu informa"ii% ntr+un cuv*nt a!ordea&' o form' sau alta de comer" electronic% un
domeniu aflat n plin' e6pansiune$ -vanta,ul comer"ului online este evidentF pia"a pe Internet
cre(te e6ponen"ial de la un an la altul$ Un site !ine lucrat% cunoscut (i care ofer' produse de
calitate la pre"uri !une va avea mai mul"i vi&itatori% mai motiva"i (i mai n&estra"i financiar
dec*t multe ma#a&ine conven"ionale$
-v*nd n vedere proiectarea% implementarea (i testarea acestui tip de aplica"ii
resursele de ard:are% soft:are% de timp% cele umane (i cele materiale sunt reduse% (i n
acela(i timp aceast' aplica"ie are un poten"ial mare de succes$
-plica"ia 8ElectronX9 are ca scop pre&entarea unui model de ma#a&in virtual care s'
con"in' func"ionalit'"ile de !a&' specifice unei aplica"ii de acest #enF #estionarea conturilor
unui utili&ator% pre&entarea cate#oriilor (i produselor% c'utarea n !a&a de date% ad'u#area
produselor ntr+un co( de cump'r'turi% trimiterea comen&ilor$ -ceste func"ionalit'"i pot fi
m!un't'"ite (i de asemenea pot fi ad'u#ate (i altele at*t la nivelul aspectului interfe"ei c*t (i
la nivelul opera"iilor ce pot fi efectuate astfel nc*t s' asi#ure o func"ionare optim' a site+ului$
Pagina 96 din 97

De&voltarea f'r' precedent din ultimele dou' decenii a tenolo#iilor informa"ionale
determinate de necesitatea stoc'rii (i a transmiterii rapide a informa"iilor cu cele mai mici
costuri% a revolu"ionat comer"ul #lo!al% comer"ul direct sau cu am'nuntul$
Pagina 97 din 97

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