Documente Academic
Documente Profesional
Documente Cultură
INTRODUCERE
Formatul de date XML devine formatul comun acceptat n industrie pentru schimbul
de informaii dintre diverse sisteme eterogene. Din acest motiv, este important ca o baz de
date s fie capabil s stocheze informaiile nu doar n formatele tradiionale, relaionale, ci i
n format XML. Stocnd datele XML n format nativ se ctig foarte mult n performan,
aceasta materializndu-se n costuri reduse. Un plus de performan la o tehnologie de baze
de date nseamn o infrastructur redus, servere cu mai puine procesoare, deci un sistem
informatic ceva mai ieftin, costuri mai mici pentru liceniere, deci per total o economie de
bani.
Standardul industrial al datelor n format XML prezint o serie de avantaje i
dezavantaje. Avantajul major este acela c este adoptat de toi productorii de tehnologie din
industrie, dar n schimb are dezavantajul c este un format nu foarte eficient din punct de
vedere al stocrii datelor. De aceea devine foarte util ca baza care stocheaz aceste date sa
aib capabiliti de compresie, care s duc la scderea spaiului i resurselor de stocare
necesare pentru a pstra date n format XML.
Lucrarea de fa i propune s prezinte n capitolele sale cteva noi direcii de
dezvoltare n domeniul bazelor de date, modelul de date semistructurat i tehnologia XML ca
o nou baz de date.
Capitolul I prezint necesitatea apariiei modelului semistructurat al datelor, datorit
nevoii de interogare a unor surse de date care nu au o schem predefinit sau a unor date care
provin din surse diferite i au scheme diferite. Modelul semistructurat al datelor reprezint
schema (tipul, structura) i instana (valoarea) datelor n mod uniform, permind interogarea
lor simultan spre deosebire de modelele de date convenionale, care difereniaz ntre cele
dou tipuri de informaie.
Capitolul II detaliaz modelul semistructurat al datelor definind conceptul de date
neconvenionale din mai multe perspective i pe cel de date semistructurate prezentnd
avantajele acestui tip de date, modelarea acestor date i limbajele de interogare a acestora, i
Pagina 1 din 97
prezint n detaliu tipul de date MPEG-21 ca suport pentru integrarea datelor n aplicaii
multimedia distribuite.
Capitolul III prezint legtura dintre tehnologia XML i bazele de date ncercnd s
clarifice n ce msur este XML-ul o baz de date, reprezentarea datelor i documentelor,
stocarea i recuperarea datelor, stocarea datelor n baze de date native XML, generarea
schemelor XML din scheme relaionale i invers, stocarea documentelor n sistemul de fiiere
i n BLOB-uri, detaliaz bazele de date native XML, i prezint noiunile de DOM
(Document Object Model) persistent i sisteme de management ale coninuturilor.
Capitolul IV se ocup de construirea documentelor XML prezentnd sintaxa XML,
descrierea de vocabulare noi cu XML, avantajele definiiei tipurilor documentului,
combaterea dezavantajelor definiiei tipurilor documentului, definirea unui document XML
ca ntreg, declaraia XML, documentele autonome, construirea unui document XML,
declaraia tipului documentului i prezint cteva aplicaii din lumea real a declaraiei tipului
documentului.
Capitolul V const n prezentarea aplicaiei magazinul virtual ElectronX - i
prezint scopul acestei aplicaii, cerinele minime hardware i software ale aplicaiei,
funcionalitile de baz ale acestui website, proiectarea bazei de date coninnd schema
conceptual a structurii bazei i schema fizic a fiecrei tabele, implementarea codului n care
sunt explicate fiierele cele mai importante ale aplicaiei cu exemplificri din codul surs, un
manual de utilizare al aplicaiei n care e descris modul de funcionare al acesteia i concluzii
asupra aplicaiei.
CAPITOLUL I
NOI MODELE DE DATE I APLICAIILE LOR
1.1 Interogarea World-Wide-Web-ului
Exist surse de date, ca de pild World-Wide-Web-ul, pe care am dori s le interogm
ca baze de date, dar care nu pot fi constrnse de o schem. Majoritatea interogrilor web-ului
folosesc tehnici de regsire a informaiei pentru a gsi pagini dup coninut. Exist ns
puine posibiliti de formulare a interogrilor n vederea exploatrii structurii web-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 necesiti.
Ideea central n modelul semistructurat este de a reprezenta datele sub forma unui graf
Pagina 2 din 97
etichetat. Structura documentelor hipertext este capturat interpretnd arcele grafului drept
legturi. O reprezentare posibil este cea introdus n proiectul UnQL[1]. Etichetele arcurilor
pot fi att valori (de tip ntreg, ir de caractere i alte tipuri de baz, precum i de tip de date
abstract, ca video, audio, etc.) ct i nume de atribute (Film, Titlu, Regizor, Actor), etc.
modelnd de exemplu cunoscuta baz de date cinematografic IMDB [2].
Exist numeroase limbaje de interogare pentru modelul semistructurat. Toate aceste
limbaje sunt construite pe baza ideii de expresii asociate cilor (path expressions). Acestea
sunt expresii regulate ce exprim ci generice n graful etichetat, permind astfel traversarea
grafului i colecionarea tuturor etichetelor ce satisfac o anumit condiie de selecie.
Limbajele semistructurate pot fi clasificate n dou categorii, dup strategia de calcul
adoptat. Prima categorie, dezvoltat oarecum ad-hoc, se bazeaz pe modelarea grafurilor n
modelul relaional i apoi pe interogarea lor ntr-un limbaj relaional de tip SQL. Cteva
exemple prezentate n literatur sunt [3], [4], [5], [6], [7]
A doua categorie pornete de la un limbaj bazat pe o noiune formal de calcul cu date
semistructurate: limbajul UnQL este reprezentantul acestei categorii [1]. Acest limbaj
pornete de la recursivitatea structural, forma natural de recursivitate asociat cu tipul de
date grafuri etichetate. Datorit bazei sale teoretice, UnQL este capabil de restructurri
complexe, n adncime, spre deosebire de limbajele din prima categorie, care se limiteaz la
scoaterea la suprafa a datelor din graf, fr ns a crea noi structuri.
Aceast capacitate de restructurare st la baza proiectului STRUDEL[8] care propune
limbajul StruQL de gestiune a sit-urilor de web. Un alt avantaj al bazei teoretice a limbajelor
UnQL i StruQL este posibilitatea efecturii optimizrilor specifice acestui nou model de
date. Limbajele din prima categorie pot beneficia doar de optimizrile specifice modelului
relaional, deci dezvoltate pentru alt model de date i n consecin nu att de folositoare.
1.2 Integrarea surselor de date eterogene
Integrarea datelor provenind din surse eterogene (cu scheme disparate sau, mai grav,
modelate diferit), este un domeniu de cercetare care, dei consacrat de mai bine de un
deceniu, continu s rmn n centrul ateniei multor cercettori. Cercetarea n acest
domeniu este motivat de absena unui model de date atotcuprinztor, fapt ce ngreuneaz
dezvoltarea de software care convertete date ntre dou modele diferite.
O complicaie adiional este reprezentat de faptul c majoritatea datelor stocate
electronic nu se afl n baze de date convenionale, ci n sisteme de fiiere, programe de
bibliotec, de pot electronic, foi de calcul etc., care prezint capaciti de interogare
limitate.
Pagina 3 din 97
Pagina 4 din 97
care
n
atribut
baza
de
gsim
date
irul
ntregi
de
mai
caractere
mari
Casablanca?
dect
216?
Pagina 5 din 97
Pagina 6 din 97
CAPITOLUL II
MODELE DE REPREZENTARE A DATELOR NECONVENIONALE
2.1 Definirea conceptului de date neconvenionale
n literatura de specialitate exist o serie de definiri ale conceptului de date
neconvenionale i a altor concepte asociate acestuia:
Datele neconvenionale sunt datele care nu au nici unul din tipurile standard: ntreg,
real etc. [Blanken, 2002]
Structura de date neconvenional este structura de date care nu este n uzul curent al
aplicaiilor; aceasta poate fi structura produs de datele semistructurate, cea definit noilor
tipuri de date folosite n aplicaii i date cu structuri ce se modific n mod dinamic. [GSIHT,
2005]
A patra generaie a tehnologiilor bazelor de date este prezentat n [Mannino, 2004]
ca fiind o extensie a tehnologiilor bazelor de date cu datele neconvenionale i Internetul.
Sistemele celei de-a patra generaii pot stoca i manipula tipuri de date neconvenionale cum
sunt: imaginile, secvenele video, hrile, sunetele i animaiile i permit accesul la bazele de
date Web.
Unul din obiectivele sistemelor de gestiune a bazelor de date orientate obiect este
prezentat ca fiind extinderea flexibilitii cu datele neconvenionale i procedurile de
prelucrare asociate acestora, inclusiv text, grafic i voce, date care nu pot fi manipulate i
integrate de sistemele de baze de date convenionale.
La University of Southern California din Los Angeles (USC) exist un laborator de
informare numit InfoLAB al crui scop este investigarea de noi metode pentru gestiunea
tipurilor de date neconvenionale cu arhitecturi atipice. Principalele zone de cercetare sunt:
Gestiunea fluxurilor de date multidimensionale n arhitecturi de tip punct la punct
(peer-to-peer),
Analiza datelor multidimensionale,
Gestiunea datelor peer-to-peer,
Prelucrarea interogrilor de stream-uri,
Baze de date spaio-temporale.
Descrierea datelor neconvenionale se realizeaz folosind metadate. Metadatele sunt
folosite pentru descrierea altor date, cu o structur complex sau nestructurate. Metadatele
pot fi privite din diferite perspective, n funcie de productorul sau sursa metadatelor:
Pagina 7 din 97
altele nu pot fi ncadrate n modelele clasice de gestiune a datelor. Cel mai evident exemplu
de date care nu pot fi ncadrate ntr-o schem sunt datele manipulate prin intermediul Webului. Majoritatea interogrilor Web exploateaz tehnicile de regsire a datelor pentru a
determina paginile individuale care au coninut ce corespunde criteriului solicitat. Dar numai
o mic parte din resursele Web sunt structurate astfel nct s permit rezolvarea interogrilor,
Web-ul nefiind conform nici unui model standard. Astfel c se simte nevoia de a gsi o
metod pentru descrierea structurii datelor Web n vederea rezolvrii acestei probleme.
Al doilea motiv este dat de necesitatea schimbului de date ntre aplicaii care folosesc
formate diferite de stocare i gestiune a datelor necesitnd astfel transformarea datelor. Nici
unul din modelele de date existente nu este acceptabil din toate punctele de vedere i n plus
este dificil s convertim datele dintr-un model n altul. Astfel, s-a simit nevoia s se dezvolte
un model care s lege cele dou lumi diferite: relaional i orientat obiect, acesta este
modelul semistructurat al datelor.
n plus, datele n format electronic se afl n medii diferite, interconectate care trebuie
s comunice ntre ele. Dar i cnd 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 existe
un format flexibil pentru schimbul de date ntre diferite tipuri de baze de date. [Buneman,
1997]
O parte din aceste date se gsesc sub forma datelor nestructurate, ca de exemplu
sunetele, imaginile, secvenele video i chiar unele documente text, iar alt parte sub forma
datelor structurate, memorate n baze de date relaionale sau orientate obiect. n general, un
utilizator nu poate scrie o interogare pentru o baz de date fr s cunoasc schema de
organizare a datelor, iar aceasta este netransparent pentru utilizatori i raionamentul folosit
la proiectarea ei este adesea greu de determinat. Au fost dezvoltate limbaje care permit
interogarea simultan a datelor i a schemelor de organizare a bazelor de date, dar aceste
limbaje nu au flexibilitatea s manipuleze constrngeri complexe.
2.2.1 Conceptul de date semistructurate
n general, prin termenul de date semistructurate sunt denumite datele care nu
respect formate stricte cum ar fi cele impuse de modelele bazelor de date relaionale sau
orientate obiect. n mod evident o astfel de definiie este imprecis. Datele sunt
semistructurate dac: nu au o structur rigid (de exemplu datele Web, datele sunt combinate
din cteva surse eterogene - ca n cazul depozitelor de date), nu au o structur implicit
asociat datelor, sau au o structur parial specificat [Abiteboul, 1997]. Modelele orientatPagina 9 din 97
obiect i relaional au o schem fix pentru fiecare clas sau fiecare relaie. Datele
semistructurate permit o flexibilitate sporit, fiind o combinaie a celor dou concepte: clasa
i relaia.
Datele semistructurate conin informaii despre schema lor i aceast schem poate
diferi, n timp, n cadrul unei singure baze de date. Acest model care nu se bazeaz pe nici o
schem, are un rol special n sistemele bazelor de date.
n acest model datele sunt autoreferite, acest lucru nsemnnd c schema este ataat
datelor. Combinarea unor date dintr-o baz de date relaional cu altele dintr-o baz de date
orientat-obiect se poate realiza prin conectarea celor dou baze de date, prin intermediul
unei interfee, translatnd datele de la fiecare surs n date semistructurate.
n modelul semistructurat al datelor, informaiile care sunt n mod normal asociate
unei scheme sunt incluse n interiorul datelor. n aceste baze de date nu exist o distincie
clar ntre date i schem, iar gradul de structurare depinde de aplicaie. n anumite forme ale
modelului semistructurat exist o schem distinct, n altele nu.
Avantajele modelului semistructurat al datelor sunt urmtoarele:
Flexibilitatea - simplific integrarea bazelor de date care au scheme diferite. Spre
deosebire de alte modele, care au o schem de descriere a datelor, modelul semistructurat este
fr schem, ceea ce justific flexibilitatea sa. Flexibilitatea reprezint un instrument util
pentru integrarea datelor, mai ales n cazul problemelor legate de motenirea bazei de date.
mbuntirea eficienei regsirii datelor publicate n Internet
Posibilitatea integrrii datelor
Documentele HTML i cele stocate n biblioteci digitale sunt semistructurate. Spre
deosebire de fluxurile nestructurate de date (precum imagini, sunete, video), datele
semistructurate au o structur i spre deosebire de datele structurate (bazele de date
relaionale sau orientate-obiect), datele semistructurate nu au o schem absolut sau o clas
fix, fiecare obiect coninnd propria schem. Iregularitatea structural nu implic inexistena
similaritilor structurale ntre obiecte. Din contr, n mod obinuit, obiectele semistructurate
care descriu acelai tip de date au structur similar.
Modelul datelor semistructurate este un model pentru integrarea bazelor de date. Este
folosit pentru descrierea datelor aflate n dou sau mai multe baze de date care conin date
similare n diferite scheme de organizare.
2.2.2 Modelarea datelor semistructurate
Pagina 10 din 97
Datele semistructurate sunt modelate, n general, sub forma structurilor de tip graf sau
arbore, n noduri avnd reprezentate obiecte iar arcele reprezentnd atributele obiectelor. n
plus, arcele modeleaz natural relaiile de subordonare dintre dou obiecte. [Reveiu, 2003]
Modelul de facto pentru datele semistructurate este OEM (Object Exchange Model),
model propus n proiectul pentru integrarea datelor numit TSIMMIS i descris pentru prima
dat n lucrarea Multimedia database systems Design and implementation Strategies. OEM
este un model autodescriptibil, nefiind necesar definirea anterioar a structurii unui obiect i
nici nu exist o schem fix de reprezentare a datelor. Fiecare obiect reprezentat conine
propria lui schem.
Fiecare obiect din OEM poate avea un identificator (Id), o etichet, un tip i o valoare.
Id-urile obiectelor pot fi simboluri cu sau fr nelesuri speciale. De exemplu, dac un obiect
este o pagin Web, URL-ul paginii poate fi folosit ca id-ul obiectului. Etichetele nodurilor
sunt iruri care expliciteaz rolul obiectului pentru utilizator i pentru aplicaii. Eticheta joac
aici dou roluri: identific un obiect i d sens obiectului. Obiectele pot fi atomice sau
complexe (seturi de obiecte). Valorile obiectelor atomice au tipuri atomice (valori ntregi,
reale, iruri de caractere, imagine, sunet etc.), iar cele complexe au ca valori seturi de obiecte,
reprezentate prin perechi de tipul atribut-obiect. Prin urmare, un obiect complex va avea o
definire recursiv deoarece valoarea unui obiect este parte a sa. Nodurile frunz au asociate
ntotdeauna valori atomice.
Etichetele arcelor reprezint atribute, sunt descrise prin iruri de caractere i
reprezint un set de proprieti descriptive. O proprietate poate fi folosit ntr-un arc pentru a
descrie nodurile nvecinate.
Pagina 11 din 97
n figura 1 este prezentat exemplificarea modelrii unei pri dintr-o baz de date
multimedia folosind OEM.
Figura 1 Modelul OEM al unei pri dintr-o baz de date multimedia
Informaii: &o1
{film: &o21
{titlu: &o30 Titanic,
actor principal: &o31
{nume: &o41 DiCaprio,
prenume: &o42 Leonadro},
regizor: &o32
{nume: &44 Cameron,
prenume: &o45 James},
{ actor principal: &o33,
nume: &o46 Kate,
prenume: &o47 Winslet},
premii obinute: &o48 11 Oscaruri},
melodie: &o22
{titlu: &49 My heart will go on,
interpret: &o34
{nume: &o50 Dion,
Pagina 12 din 97
Compunere: datele obinute n urma unei interogri pot fi folosite ca date de intrare
n alte interogri, motiv pentru care limbajele trebuie s fie transparente.
Au fost propuse, ntr-o serie de proiecte de cercetare pe aceast tem, cteva limbaje
de interogare pentru datele semistructurate. Dou dintre acestea sunt: limbajul orientat-obiect
Lorel, derivat din OQL (Object Query Language) i limbajul UnQL (Unstructured Query
Language).
Domeniul datelor semistructurate este unul n studiu i va avea un impact mare asupra
unei multitudini de aplicaii, dar mai ales asupra aplicaiilor multimedia i a celor dezvoltate
pentru mediul Internet.
2.3 MPEG-21 Suport pentru integrarea datelor n aplicaii multimedia distribuite
n ciuda descrierilor complete i detaliate ale tipurilor datelor multimedia
implementate n MPEG-7, aspecte legate de organizarea datelor i de infrastructura unui
sistem multimedia distribuit nu pot fi descrise doar folosind metadate. Astfel c a fost iniiat
un nou standard, MPEG-21 cu scopul de a oferi mecanisme de proiectare a sistemelor
multimedia distribuite, de a crea un mediu unic, universal accesibil pentru livrarea i
utilizarea resurselor multimedia n diferite condiii, ca de exemplu diferite tipuri de utilizatori,
reele cu diferite caracteristici, terminale cu caracteristici diferite etc.
2.3.1 Prezentare general
MPEG-21 este un standard ISO/IEC21000 al MPEG (Moving Picture Experts Group)
care definete un cadru de lucru deschis pentru multimedia. Fora MPEG-21 este dat de
urmtoarea situaie: exist multe resurse mutimedia ce pot fi folosite la construirea unei
infrastructuri pentru distribuirea i utilizarea coninutului multimedia, dar nu exist nici o
arhitectur pentru descrierea modului n care aceste elemente interacioneaz ntre ele. Scopul
standardului MPEG-21 este s defineasc un cadru de lucru deschis pentru multimedia care
s permit utilizarea transparent i la performane bune a resurselor multimedia folosind
reele i dispozitive periferice diverse. Se urmrete gestiunea coninutului multimedia,
gestiunea proprietii intelectuale i adaptarea coninutului la resursele disponibile prin
intermediul diferitelor clase de servicii. MPEG-21 ofer un suport deschis pentru distribuirea
i utilizarea datelor multimedia. [Kosch, 2004]
MPEG acoper ntregul coninut multimedia din punctul de vedere al canalelor de
distribuie folosite, al modalitilor de creare a coninutului, din punct de vedere al modalitii
de producie, n vederea personalizrii, consumului, prezentrii i comercializrii acestuia.
Pentru realizarea acestui lucru, MPEG-21 propune norme pentru un standard deschis pentru
Pagina 14 din 97
crearea, distribuirea i utilizarea datelor multimedia. Acest standard se refer la toi actorii
implicai, de la creatorii de coninut, productori, distribuitori i furnizorii de servicii.
MPEG-21 standardizeaz fluxul informaiilor i serviciilor multimedia de la crearea
coninutului pn la livrarea ctre utilizatorii finali. Pentru a realiza acest lucru, coninutul
trebuie identificat, descris, gestionat i protejat. Transportul i livrarea coninutului poate avea
loc peste diferite reele, ntre o varietate de terminale.
Exist o serie de arhitecturi aprute ca rspuns la varietatea tipurilor de aplicaii care
utilizeaz coninutul multimedia. Exist trei modele principale folosite pentru gestiunea,
descrierea i regsirea resurselor multimedia i anume Dublin Core, SMPTE i MPEG-7.
Pentru a evita recomandarea unui model n defavoarea altuia, n mod nejustificat, MPEG-21
propune descrierea suportului multimedia sub forma unei arhitecturi generice. [ISO, 2001]
MPEG-21 se bazeaz pe dou concepte eseniale: definirea unei uniti fundamentale
de distribuie i tranzacionare - elementul digital i utilizatorii care interacioneaz cu
elementele digitale. Elementul digital este un obiect digital, structurat care are o reprezentare
standard, ce poate fi identificat i care are asociate metadate. Elementele digitale conin att
resursele multimedia (coninutul) ct i metadatele asociate resurselor sau ntregului element
digital. n accepiunea MPEG-21, utilizatorul este orice entitate care interacioneaz cu
mediul MPEG-21 sau care folosete un element digital, ca de exemplu un consumator al
datelor multimedia, o organizaie, sau un alt standard ce folosete resursele multimedia. Un
utilizator poate folosi coninutul n mai multe feluri: prin publicare sau prin livrare i poate
avea drepturi i responsabiliti specifice n funcie de modalitile de interaciune cu ali
utilizatori n cadrul MPEG-21.
Principalele elementele folosite n definirea arhitecturii MPEG-21 sunt:
Elementul digital - este un container ierarhic de resurse eterogene (video, audio, text
etc.), metadate i alte elemente digitale. Un element digital este o unitate elementar de
distribuie i tranzacionare;
Declararea elementului digital definete un set de termeni folosii la declararea
elementelor digitale;
Identificarea i descrierea elementului digital presupune identificarea i descrierea
elementului digital, natura lui, tipul sau granularitatea (film, scen sau cadru);
Gestiunea i utilizarea coninutului ofer interfee i protocoale care permit
crearea, manipularea, cutarea, accesarea, stocarea, livrarea i reutilizarea coninutului de-a
lungul canalelor de distribuie i consum;
Pagina 15 din 97
Pagina 17 din 97
Relaia dintre modelul abstract MPEG-21 i DIDL este prezentat n figura 4.2.
Figura 2 - Relaia dintre modelul abstract MPEG-21 i DIDL
n continuare sunt prezentate componentele de baz ale schemei de declarare a
elementelor digitale. Aceste elemente se folosesc n schemele documentelor XML.
Pagina 18 din 97
</xsd:sequence>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
De exemplu, dac ntr-un element digital vor fi grupate mai multe elemente ce conin
cte o secven video, atunci pentru fiecare secven se va folosi cte un container ce conine
declararea elementului.
Declararea descriptorului elementului digital compus este:
<ElementDigital>
<Container>
<Descriptor>
<Declarare mimeType = "video/avi">Secventele Video</Declarare>
</Descriptor>
<Element id = "Secventa1">
</Element>
<Element id = "Secventa2">
</Element>
</Container>
</ElementDigital>
2.3.3 Adaptarea coninutului utiliznd MPEG-21
Standardul MPEG-21 faciliteaz dezvoltarea de soluii de adaptare a coninutului
distribuit n funcie de caracteristicile tehnice ale terminalelor folosite pentru receptarea
datelor, de caracteristicile tehnice ale mediului de comunicaie folosit sau n funcie de
preferinele utilizatorului.
Pentru adaptarea coninutului multimedia este necesar existena unei descrieri a
mediului de lucru, pe lng descrierea coninutului propriu-zis. n vederea adaptrii
coninutului multimedia trebuie s existe o descriere a sa, folosind unul din standardele
adecvate, ca de exemplu Dublin Core, SMPTE sau MPEG-7. Partea a aptea a MPEG-21,
denumit Adaptarea elementului digital (DIA) este dedicat descrierii caracteristicilor
mediului i adaptrii elementelor digitale la aceste caracteristici.
Pagina 20 din 97
Pagina 21 din 97
Pagina 22 din 97
<Terminal>
<Monitor>
<Caracteristici bitiPerPixel="24" Culori="32biti" RataRefresh="70">
<Rezolutia Orizontala="1024" Verticala="768"/>
</Caracteristici>
</Monitor>
</Terminal>
</DIA>
CAPITOLUL III
XML CA BAZ DE DATE
3.1 Este XML-ul o baz de date?
nainte de a discuta despre XML i baze de date trebuie s rspundem la ntrebarea
Este XML-ul o baz de date?
Un document XML este o baz de date n sensul cel mai strict al cuvntului i anume
este o colecie de date. Se poate considera c aceste documente nu sunt diferite de orice alt tip
de fiiere n fond, toate fiierele conin anumite tipuri de date. Avnd formatul unei baze de
date documentele XML prezint anumite avantaje. De exemplu este auto-descris (tag-urile
descriu structura i numele tipurilor de date, dar nu i semantica), este portabil (Unicode), i
poate descrie date n structuri de arbori sau grafuri. De asemenea are i dezavantaje. De
exemplu, este prolixs(neclar) i accesul la date este greoi datorit analizrii i conversiei
textului.
Putem considera i c XML i tehnologiile asociate constituie o baz de date n sensul
mai larg al cuvntului adic, un sistem de gestiune a bazelor de date (SGBD). XML ofer
multe din avantajele bazelor de date: stocare (documente XML), scheme (DTD-uri, scheme
XML, RELAX NG, .a,), limbaje de interogare (XQuery, XPath, XQL, XML-QL, QUILT,
etc.), interfee de programare (SAX, DOM, JDOM). Totui multe componente ale bazelor de
date convenionale: stocare eficient, indeci, securitate, tranzacii i integritatea datelor,
accesul multi-user, triggere, interogri fcute pe mai multe documente .a.
Astfel, se pot folosi documente XML ca o baz de date ntr-un mediu cu cerine
modeste i date puine, dar aceast soluie nu este viabil ntr-un mediu pentru producie n
mas, unde exist muli utilizatori, cerine stricte de integritate a datelor i nevoia de o
performan bun.
Pagina 23 din 97
<Parte NumarParte="123">
<Descriere>
<p><b>Cheie reglabila:</b><br />
Hotel inoxidabil,
Garantie pe viata.</p>
</Descriere>
<Pret>9.95</Pret>
</Parte>
<Cantitate>10</Cantitate>
</Item>
<Item NumarItem="2">
<Parte NumarParte="456">
<Descriere>
<p><b>Separator:<b><br />
Aluminiu, un an garantie.</p>
</Descriere>
<Pret>13.27</Pret>
</Parte>
<Cantitate>5</Cantitate>
</Item>
</OrdinVanzari>
Pe lng documentele centrate pe date cu structura asemntoare cu documentul din
exemplul anterior, multe documente care conin i text adiional sunt centrate pe date. Spre
exemplu s considerm o pagin web care conine informaii despre o carte. Dei pagina
conine n mare parte text, structura acelui text este regulat, i o parte din acel text este
comun tuturor paginilor care descriu cri, fiecare poriune de text specific avnd dimensiuni
limitate. Astfel pagina ar putea fi construit dintr-un document XML simplu, centrat pe date
care conine informaii despre o singur carte i este obinut dintr-o baz de date i un
stylesheet XSL care adaug textul care leag informaiile din XML. n general orice site web
care construiete documente HTML dinamic prin completarea unui template cu informaii
dintr-o baz de date poate fi nlocuit cu mai multe documente XML centrate pe date i unul
sau mai multe stylesheet-uri XSL.
De exemplu, s considerm urmtorul document care descrie un zbor:
Pagina 25 din 97
<InfoZbor>
<LinieAeriana>ABC Airways</LinieAeriana> ofera <Numar>trei</Numar>
zboruri zilnice non-stop din <Origine>Dallas</Origine> spre
<Destinatie>Fort Worth</Destinatie>. Orele de plecare sunt
<Plecare>09:15</Plecare>, <Plecare>11:15</Plecare>,
and <Plecare>13:15</Plecare>. Sosirile sunt cateva minute mai tarziu.
</InfoZbor>
Acesta ar putea fi construit dintr-un fiier XML i un stylesheet simplu:
<Zboruri>
<LinieAeriana>ABC Airways</LinieAeriana>
<Origine>Dallas</Origine>
<Destinatie>Fort Worth</Destinatie>
<Zbor>
<Plecare>09:15</Plecare>
<Sosire>09:16</Sosire>
</Zbor>
<Zbor>
<Plecare>11:15</Plecare>
<Sosire>11:16</Sosire>
</Zbor>
<Zbor>
<Plecare>13:15</Plecare>
<Sosire>13:16</Sosire>
</Zbor>
</Zboruri>
3.2.2 Informaii centrate pe documente
Documentele care folosesc viziunea centrat pe documente sunt, de obicei, acele
documente care sunt destinate folosirii de ctre utilizatori. Exemple de astfel de documente
sunt crile, email, anunuri publicitare i aproape orice document XHTML scris de mn.
Acestea sunt caracterizate de o structur mai puin regulat, datele nu sunt atomice (cea mai
mic unitate independent de informaie poate fi format dintr-un element mbinat cu alte
informaii din document). Ordinea elementelor care apar n document este aproape
ntotdeauna important.
Pagina 26 din 97
Aceste tipuri de documente sunt de obicei scrise manual n XML sau n alte formate
cum ar fi RTF, PDF sau SGML i apoi sunt transformate n XML. Spre deosebire de
documentele centrate pe date aceste documente nu pot proveni din baze de date.
Spre exemplu urmtorul document ce conine descrierea unui produs este centrat pe
documente:
<Produs>
<Intro>
<NumeProdus>Cheie reglabila</NumeProdus> de la <Producator>Full
Fabrication Labs,Inc.</Producator>este<Sumar>ca o cheie universala,
dar mai mica.</Sumar>
</Intro>
<Descriere>
<Paragraf>Cheia universala, care are <i> doua versiuni stanga si dreapta </i>, este
confectionata din <b>cel mai fin hotel inoxidabil
</b>. Manerul cauciucat se adapteaza la mainile dumneavoastra
chiar si in cele mai aluneacoase situatii. Se poate regla
prin mai multe discuri.</Paragraf>
<Paragraf>Puteti:</Paragraf>
<Lista>
<Item><Link URL="Comanda.html">comanda propria dumneavoastra
cheie reglabila </Link></Item>
<Item><Link URL="Wrenches.htm">Cititi mai multe despre chei</Link></Item>
<Item><Link URL="Catalog.zip">Descarcati catalogul</Link></Item>
</Lista>
<Paragraf>Cheia reglabila costa <b>doar 44.90 RON</b> si, daca veti
comanda acum, veti primi un <b>ciocan</b>
cadou.</Para>
</Descriere>
</Produs>
3.2.3 Date, documente i baze de date
n realitate diferena dintre documentele centrate pe date i cele centrate pe documente
nu este ntotdeauna clar. Astfel de documente sunt cele legale sau medicale, care sunt scrise
Pagina 27 din 97
ca text dar conin i poriuni de date cum ar fi nume, date, proceduri i de multe ori trebuiesc
stocate n ntregime din cauze legale.
Cu toate acestea clasificarea documentelor ca fiind centrate pe date sau pe documente
poate determina tipul bazei de date necesare stocrii informaiilor din aceste documente. De
obicei datele sunt stocate ntr-o baz de date tradiional cum sunt cele relaionale sau
orientate-obiect. Documentele sunt stocate ntr-o baz de date nativ XML (o baz de date
destinat stocrii XML) sau un sistem de gestionare a coninuturilor (content management
system) o aplicaie destinat administrrii documentelor i construit peste o baz de date
nativ XML.
Totui aceste reguli nu sunt stricte. Datele n special datele semistructurate pot fi
stocate n baze de date native XML i documentele pot fi stocate n baze de date tradiionale
atunci cnd nu sunt necesare foarte multe caracteristici specifice XML. n plus, graniele
dintre bazele de date tradiionale i cele native XML devin din ce n ce mai neclare, deoarece
la bazele de date tradiionale se adaug facilitai native XML i bazele de date native XML
suport stocarea fragmentelor de documente n baze de date, de obicei relaionale, externe.
3.3 Stocarea i recuperarea datelor
Pentru transferarea datelor ntre documente XML i o baz de date, este necesar
maparea schemei documentului XML (DTD, Scheme XML, RELAX NG, etc.) pe schema
bazei de date. Software-ul pentru transferul de date este construit peste aceast mapare.
Software-ul poate folosi un limbaj de interogare XML (cum ar fi XPath, XQuery) sau poate
transfera direct date conform cu maparea (echivalentul n XML al interogrii SELECT *
FROM Tabel).
n al doilea caz, structura documentului i structura necesar pentru mapare trebuie s
fie identice. Deoarece acest lucru se ntmpl destul de rar, produsele care folosesc aceast
strategie sunt adesea folosite mpreun cu XSLT. Astfel, nainte de transferarea datelor n
baza de date, documentul este nti adus la structura necesar maprii i apoi datele sunt
transferate. Similar dup transferarea datelor din baza de date, documentul obinut este adus
la structura folosit de ctre aplicaie.
3.3.1 Maparea schemelor documentelor pe schemele bazelor de date
Maprile ntre schemele documentelor i schemele bazelor de date sunt efectuate pe
tipurile elementelor, atribute, i text. Aproape ntotdeauna se omit structurile fizice (cum ar fi
entitile i informaia codificat) i unele structuri logice (cum ar fi instruciunile de
procesare, comentariile). Aceste omiteri nu au o influen prea mare, deoarece baza de date i
aplicaia sunt interesate numai de datele din documentul XML.
Pagina 28 din 97
Pagina 29 din 97
Pagina 30 din 97
Multe produse transfer date direct conform cu modelul pe care sunt construite.
Deoarece structura documentului XML este de obicei diferit de structura bazei de date,
aceste produse deseori conin sau sunt folosite cu XSLT. Acesta d posibilitatea utilizatorilor
s transforme documente la structura modelului naintea transferrii datelor n baza de date, i
invers. Deoarece procesarea XSLT poate fi scump, unele produse conin un numr limitat de
transformri n maprile lor.
Soluia pe termen lung la aceast problem este implementarea unor limbaje de
interogare care returneaz XML. n prezent cele mai multe asemenea limbaje se bazeaz pe
fraze SELECT integrate n abloane. Se presupune c aceast situaie se va schimba atunci
cnd XQuery i SQL/XML vor fi finalizate, acestea aflndu-se n lucru. Aproape toate
limbajele de interogare XML sunt deocamdat read-only, deci vor fi necesare metode diferite
pentru inserarea, actualizarea i tergerea datelor (n viitor aceste facilitai vor fi adugate).
3.3.2.1 Limbaje de interogare bazate pe abloane
Cele mai des ntlnite limbaje de interogare care returneaz XML din baze de date
relaionale sunt cele bazate pe abloane. n aceste limbaje, nu exist o mapare predefinit
ntre document i baza de date. Frazele SELECT sunt integrate ntr-un ablon i rezultatele
sunt procesate de ctre software-ul care transfera date. De exemplu, urmtorul template
folosete elementele <SelectStmt> pentru a include fraze SELECT i numele coloanelor
pentru a determina unde trebuiesc plasate rezultatele:
<?xml version="1.0"?>
<InfoZbor>
<Introducere> Urmatoarele zboruri sunt diponibile:</Introduction>
<SelectStmt>SELECT Airline, FltNumber,
Depart, Arrive FROM Flights</SelectStmt>
<Zbor>
<LinieAeriana>$Airline</LinieAeriana>
<NumarFlt>$FltNumber</NumarFlt>
<Plecare>$Depart</Plecare>
<Sosire>$Arrive</Sosire>
</Zbor>
<Concluzie>Speram ca unul dintre ele va este de folos</Concluzie>
</InfoZbor>
Pagina 32 din 97
folosete obiecte SQL 3, de asemenea transformate direct n XML. Un alt limbaj folosete
fraze OUTER UNION i marcaje speciale pentru a determina cum sunt transformate
rezultatele n XML.
n plus faa de limbajele particulare, un numr de companii s-au reunit n 2000 pentru
a standardiza extensiile XML la SQL. Rezultatele lor fac parte acum din specificaia ISO
SQL i este cunoscut ca SQL/XML. SQL/XML introduce un tip de date XML i adaug un
numr de funcii la SQL, aa c este posibil construirea elementelor XML i a atributelor din
date relaionale.
De exemplu, urmtoarea interogare:
SELECT Orders.SONumber,
XMLELEMENT(NAME "Order",
XMLATTRIBUTES(Orders.SONumber AS SONumber),
XMLELEMENT(NAME "Date", Orders.Date),
XMLELEMENT(NAME "Customer", Orders.Customer)) AS xmldocument FROM
Orders
construiete un set de rezultate cu dou coloane. Prima coloan conine numrul
ordinului de vnzri i a doua coloan conine un document XML. Exist un document XML
pe fiecare linie, construit din datele din linia corespunztoare n tabelul de comenzi. De
exemplu documentul pentru linia pentru ordinul de vnzare 123 ar putea fi:
<Ordin NumarOV="123">
<Data>04/29/07</Data>
<Client>Gallagher Industries</Client>
</Ordin>
3.3.2.3 Limbaje de interogare XML
Spre deosebire de limbajele de interogare bazate pe abloane sau bazate pe SQL, care
pot fi folosite numai cu baze de date relaionale, limbajele de interogare XML pot fi folosite
pentru orice document XML. Pentru a folosi acest tip de limbaje cu baze de date relaionale,
datele din baza de date trebuie s fie modelate ca XML.
Cu XQuery, poate fi folosit fie maparea bazat pe tabele fie maparea obiectual
relaional. Dac este folosit o mapare bazat pe tabele, fiecare tabel este tratat ca un
document separat i n fiecare interogare sunt specificate uniri ntre tabele, ca n SQL. Dac
este folosit o mapare obiectual-relaional atunci ierarhiile de tabele sunt tratate ca un singur
document i sunt specificate uniri n mapare. Se preconizeaz c maprile bazate pe tabele
Pagina 34 din 97
Pagina 35 din 97
ntr-o baz de date relaional. Astfel, stocarea datelor ntr-o baz de date nativ XML se
recomand din motive de performana atunci cnd predomin o singur vedere asupra datelor.
Al treilea motiv pentru stocarea datelor ntr-o baz de date nativ XML este
exploatarea capacitilor specifice XML, cum ar fi executarea interogrilor XML. Deoarece
relativ puine aplicaii centrate pe date au nevoie de acestea i bazele de date relaionale
implementeaz limbaje de interogare XML, acest motiv nu este foarte important.
O problem cu stocarea datelor ntr-o baz de date nativ XML este c majoritatea
acestor baze de date pot returna datele numai ca XML. (Puine baze de date suport legarea
elementelor sau atributelor de variabilele dintr-o aplicaie.) Dac o aplicaie are nevoie de
date ntr-un alt format (ceea ce este posibil), aceasta trebuie s analizeze XML-ul nainte de a
folosi datele. Acesta este un dezavantaj pentru aplicaiile locale care folosesc o baz de date
nativ XML n locul unei baze de date relaionale.
3.3.4 Tipuri de date, valori nule, seturi de caractere
Aceast seciune se ocup de anumite probleme legate de stocarea datelor din
documente XML n baze de date tradiionale. Problemele legate de tipurile de date i datele
binare apar i n cazul stocrii datelor n baze de date native XML. n general utilizatorul nu
poate alege modalitatea n care sotf-ul care transfer datele rezolv aceste probleme, dar
atunci cnd se alege un anumit soft trebuie inut cont de faptul c aceste probleme exist.
Pagina 36 din 97
Pagina 38 din 97
Pe de alt parte, dac referinele la entiti sunt extinse, software-ul de transfer de date
nu poate distinge ntre marcaj i folosirea entitilor. De exemplu, dac descrierea de mai sus
este stocat n baza de date n forma urmtoare, soft-ul nu poate spune dac <b>,</b>, i
<foo/> sunt marcaje sau text:
<b>Exemplu confuz:</b> <foo/>
Soluia pe termen lung la aceast problem sunt bazele de date care recunosc XML, n
care marcajul efectiv e tratat diferit de elementele care doar par a fi marcaj. Dar, probabil vor
fi ntotdeauna probleme atunci cnd aplicaii non-XML lucreaz cu XML.
3.3.5 Generarea schemelor XML din scheme relaionale i invers
O ntrebare care apare frecvent la transferul datelor ntre documente XML i baze de
date este cum se genereaz scheme XML din scheme ale bazelor de date i invers. nainte de
a explica cum se face acest lucru, este bine de reinut faptul c aceasta este o operaie designtime. Motivul pentru acest lucru este c majoritatea aplicaiilor centrate pe date, i cele mai
multe aplicaii pe vertical, lucreaz cu un set cunoscut de scheme XML i scheme de baze de
date. Astfel ele nu trebuie s genereze scheme n momentul rulrii. n plus procedurile pentru
generarea schemelor nu sunt perfecte. Aplicaiile care trebuie s rein documente XML
aleatoare ntr-o baz de date ar trebui s foloseasc o baz de date nativ XML n loc s
genereze scheme la rulare.
Cea mai uoar cale de a genera scheme relaionale din scheme XML i invers este de
a codifica o cale prin maparea obiectual relaional, care are un numr de trsturi opionale.
O schem relaional se genereaz dintr-o schema XML astfel:
Pentru fiecare tip complex de elemente trebuie creat o tabel i o coloan cheie
primar.
Pentru fiecare tip de elemente cu coninut mixt, trebuie creat o tabel separat n care
se va stoca PCDATA, legat de tabela printe prin intermediul cheii primare din tabela
printe.
Pentru fiecare atribut cu o singur valoare a acelui tip de element, i pentru fiecare
element descendent simplu care apare o singur dat trebuie creat o coloan n acel tabel.
Dac schema XML conine informaia despre tipurile de date, atunci trebuie setate tipurile de
date ale coloanelor la tipul corespunztor. Altfel, tipurile de date trebuie setate la un tip
predeterminat, cum ar fi CLOB sau VARCHAR(255). Dac tipul elementelor descendente
sau al atributelor este opional coloana trebuie s aib posibilitatea de a fi setat nul.
Pagina 39 din 97
Pentru fiecare atribut cu mai multe valori i pentru fiecare element descendent simplu
care apare de mai multe ori trebuie creat o tabel separat pentru a stoca valorile, legat de
tabela printe prin intermediul cheii primare din tabela printe.
Pentru fiecare element descendent complex, trebuie legat tabela tipului elementului
printe de tabela tipului elementului descendent prin intermediul cheii primare din tabela
printe.
O schema XML se genereaz dintr-o schem relaional astfel:
Pentru fiecare tabel se genereaz un tip de element
Pentru fiecare coloan care nu este cheie n acea tabel, dar i pentru coloanele chei
primare, se adaug la model un atribut la tipul elementului sau un element descendent ce
conine numai PCDATA.
La fiecare tabel pentru care cheia primar este exportat, se adaug un element
descendent la model i se proceseaz tabela recursiv.
Pentru fiecare cheie strina, se adaug un element descendent la model i se
proceseaz tabela cu cheie strin recursiv.
Exist cteva dezavantaje la aceste procedee. Multe dintre acestea se pot corecta uor
de ctre programator, cum ar fi coliziuni de nume i specificarea lungimilor i tipurilor de
date ale coloanelor. DTD-urile nu conin informaii despre tipurile de date, deci nu este
posibil cunoaterea tipurilor de date care ar trebui folosite n baza de date. Tipurile de date i
lungimile pot fi prevzute dintr-o schem XML.
O problem mai important este aceea c modelul de date folosit de documentul XML
este adesea diferit i de obicei mai complex dect cel mai eficient model pentru stocarea
datelor n baza de date. De exemplu, se consider urmtorul fragment XML:
<Client>
<Nume>ABC Industries</Nume>
<Adresa>
<Strada>123 Main St.</Strada>
<Oras>Fooville</Oras>
<Stat>CA</Stat>
<Tara>USA</Tara>
<CodPostal>95041</CodPostal>
</Adresa>
</Client>
Pagina 40 din 97
Procedura pentru generarea unei scheme relaionale dintr-o schem XML ar crea dou
tabele: una pentru clieni i una pentru adrese. Totui n majoritatea cazurilor ar fi mai bine s
se rein adresa n tabela de clieni, i nu ntr-o tabel separat.
Elementul <Adresa> este un bun exemplu pentru un element wrapper. Elementele
wrapper sunt n general folosite din dou motive. n primul rnd, ele ofer structuri adiionale
ceea ce face documentul mai uor de neles. n al doilea rnd, ele sunt de obicei folosite ca o
form de redactare a datelor. De exemplu, elementul <Adresa> ar putea fi trimis la o rutin
care transform toate adresele n obiecte Adresa, indiferent unde apar acestea.
Daca elementele wrapper sunt folositoare n XML, n general ele cauzeaz probleme
atunci cnd sunt mapate la baza de date dac acestea se gsesc sub forma extra-structurilor.
Din aceast cauz, ele ar trebui eliminate din schema XML naintea generrii schemei
relaionale. Din moment ce este puin probabil c modificarea schemei XML ar trebui s fie
permanent, acest lucru duce la o neconcordan ntre documentul existent i documentele
presupuse de ctre soft-ul de transfer de date, din moment ce elementele wrapper nu sunt
incluse n mapare. Acest lucru poate fi rezolvat prin transformarea documentelor la rulare cu
XSLT: elementele wrapper sunt eliminate naintea transferrii datelor n baza de date i sunt
inserate dup transferul datelor din baza de date.
Cu toate aceste dezavantaje, procedurile de mai sus ofer n continuare un punct de
pornire folositor pentru generarea schemelor XML din scheme relaionale i invers, n special
n sisteme mari.
3.4 Stocarea i recuperarea documentelor
Pentru stocarea documentelor XML exist dou strategii de baz: stocarea lor n
sistemul de fiiere sau ca un BLOB ntr-o baz de date relaional i acceptarea
funcionalitilor XML limitate, sau stocarea lor ntr-o baz de date nativ XML.
3.4.1 Stocarea documentelor n sistemul de fiiere
Dac se lucreaz cu un set simplu de documente, cum ar fi un set mic de
documentaie, cea mai uoara cale de stocare este n sistemul de fiiere. Se pot folosi
instrumente cum ar fi grep pentru interogarea lor, i sed pentru modificarea lor. Cutrile
complete de text n documentele XML sunt inexacte, pentru c ele nu pot distinge marcajul
de text i nu pot nelege folosirea entitilor. Totui, ntr-un sistem mic, aceste inexactiti ar
putea fi acceptabile. Dac se dorete un simplu control al tranzaciilor, documentele pot fi
ntreinute cu o versiune de control a sistemului cum ar fi CVS sau RCS.
3.4.2 Stocarea documentelor n BLOB-uri
Pagina 41 din 97
O opiune puin mai sofisticat este stocarea documentelor ca BLOB-uri ntr-o baz
de date relaional. Aceast modalitate ofer un numr de avantaje a bazelor de date:
controlul tranzaciilor, securitate, acces multiuser. n plus, multe baze de date au instrumente
pentru cutri de text i pot face cutri complete de text, cutri aproximative, cutri
sinonime i cutri fuzzy. Unele dintre aceste instrumente sunt construite pentru a recunoate
XML, ceea ce va elimina problemele care apar la cutrile documentelor XML ca simplu
text.
Atunci cnd se stocheaz documente XML ca BLOB-uri, se pot implementa uor
indexri simple care recunosc XML, chiar dac baza de date nu poate indexa XML. O
modalitate de a face acest lucru este crearea a dou tabele, o tabel index i o tabel
document. Tabela document conine o cheie primar i o coloan BLOB n care este reinut
documentul. Tabela index conine o coloan n care se gsete valoarea ce va fi indexat i o
cheie strin care duce la cheia primar a tabelei document.
Atunci cnd documentul este stocat n baza de date, el este cutat pentru toate
instanele elementului sau atributului care este indexat. Fiecare instana este stocat n tabela
index, mpreuna cu cheia primara a documentului. Coloana de valori este apoi indexat, i
permite unei aplicaii s efectueze o cutare rapid a unei anumite valori a unui element sau
atribut i s recupereze documentul corespunztor.
De exemplu, se consider un set de documente cu urmtorul DTD i se dorete
construirea unui index de autori:
<!ELEMENT Brosura (Titlu, Autor, Continut)>
<!ELEMENT Titlu (#PCDATA)>
<!ELEMENT Autor (#PCDATA)>
<!ELEMENT Continut (%Inline;)> <!-- Inline entity from XHTML -->
Acestea ar putea fi stocate n urmtoarele tabele:
Autori Brosuri
---------------------- --------Autor VARCHAR(50) BrosurID INTEGER
BrosuraID INTEGER Brosura LONGVARCHAR
Cnd se insereaz o brour n baza de date, aplicaia insereaz broura n tabela
Brouri, apoi caut elementele <Autor>, reinnd valorile acestora i ID-ul brourii din tabela
Autori. Aplicaia poate recupera brourile n funcie de autor cu o simpl fraza SELECT. De
Pagina 42 din 97
exemplu, pentru a recupera toate brourile scrise de autorul Chen, aplicaia execut
urmtoarea interogare:
SELECT Brosura
FROM Brosuri
WHERE BrosuraID IN (SELECT BrosuraID FROM Autori WHERE Autor= 'Chen')
O tabel de indeci mai sofisticat ar conine patru coloane: numele atributului sau
elementului, tipul, valoarea i ID-ul documentului. Aceasta tabel ar putea stoca valorile
marcajelor multiple i ar trebui indexat dup nume, tip, i valoare. Scrierea unei aplicaii
generice SAX pentru a popula o astfel de tabel ar fi relativ uoar.
3.4.3 Baze de date native XML
Dac sunt necesare mai multe caracteristici dect cele oferite de unul din sistemele de
mai sus, trebuie luat n considerare o baz de date nativ XML. Bazele de date native XML
sunt baze de date construite special pentru a stoca documente XML. Ca i alte baze de date,
acestea suport tranzacii, securitate, acces multiuser, API-uri programatice, limbaje de
interogare. Singura diferen fa de alte baze de date este aceea c modelul lor interior este
bazat pe XML i nu pe altceva, ca n cazul modelului relaional.
Bazele de date native XML sunt de obicei folosite pentru a stoca documente centrate
pe documente. Principalul motiv este c ofer suport pentru limbaje de interogare XML, care
ofer posibilitatea adresrii unor ntrebri de forma: Extrage toate documente n care al
treilea paragraf de la nceputul seciunii conine un cuvnt ngroat, sau ofer posibilitatea
limitrii cutrilor complete de text la anumite poriuni din document. Asemenea interogri
sunt dificil de scris ntr-un limbaj ca SQL. Un alt motiv este acela c bazele de date native
XML pstreaz ordinea documentelor, instruciunile de procesare, i comentarii, i adesea
pstreaz seciuni CDATA, folosirea entitilor, i altele, pe cnd bazele de date ce permit
folosirea XML nu posed aceste caracteristici.
Bazele de date native XML sunt de obicei folosite pentru a integra date. Integrarea
datelor a fost fcut cu baze de date relaionale federate, dar acestea necesitau ca toate
resursele de date s fie mapate la modelul relaional. Aceast modalitate nu funcioneaz
pentru mai multe tipuri de date i modelul de date XML ofer o flexibilitate mai mare. Bazele
de date native XML trateaz modificrile schemelor mai uor dect bazele de date relaionale
i pot trata i date care nu au schem. Ambele consideraii sunt importante pentru integrarea
datelor din surse care nu se afl sub control direct.
Pagina 43 din 97
Al treilea caz de utilizare major al bazelor de date native XML este pentru datele
semistructurate, aa cum se gsesc n finane, n biologie, date care se schimb att de des
nct nu este posibil definirea unor scheme definitive. Datorit faptului c bazele de date
native XML nu necesit scheme, ca bazele de date relaionale, ele pot s trateze acest tip de
date, dei aplicaiile adesea necesit procesarea acestor date de ctre oameni.
Ultima utilizare majora a bazelor de date native XML este tratarea evoluiei
schemelor. Chiar dac bazele de date native XML nu ofer soluii complete, ele ofer o
flexibilitate mai mare dect bazele de date relaionale. De exemplu, bazele de date native
XML nu necesit ca datele existente s fie mutate ntr-o alt schem, ele pot trata modificri
ale schemelor pentru care nu exist nicio cale a migraiei, i pot stoca date chiar dac acestea
aparin unei versiuni necunoscute a unei scheme.
Alte utilizri ale bazelor de date native XML includ punerea la dispoziie de cache
pentru date i metadate pentru tranzacii lungi, operarea cu documente mari i date ierarhice,
i comportarea ca un intermediar ntre date i cache (mid-tier data cache).
3.4.3.1 Ce este o baz de date nativ XML?
Termenul baz de date nativ XML a aprut prima dat n campania de marketing a
Tamino, o baz de date nativ XML dezvoltat de Software AG. Probabil datorit succesului
acestei campanii, termenul a fost acceptat de ctre companiile care dezvoltau produse
similare. Dezavantajul acestui termen este c fiind un termen de marketing, nu a avut
niciodat o definiie formal tehnic.
O definiie posibila (dezvoltat de membrii XML:DB) este aceea c o baz de date
nativ XML are urmtoarele caracteristici:
Definete un model logic pentru un document XML spre deosebire de datele din
acel document i stocheaz i recupereaz documente conform acelui model. Modelul
trebuie s includ minim elemente, atribute, PCDATA, i ordinea documentelor. Exemple de
astfel de modele sunt modelul de date Xpath, XML Infoset, i modelele coninute de DOM i
evenimentele din SAX 1.0.
Are ca unitate fundamental de stocare logic un document XML, aa cum o baz de
date relaional are ca unitate de baz de stocare logic o linie dintr-o tabel.
Nu este necesar un model fizic special de stocare a datelor. De exemplu, acesta poate
fi construit pe o baz de date relaional, ierarhic, sau orientat pe obiecte, sau se poate
folosi un format de stocare particular cum ar fi fiierele comprimate indexate.
Pagina 44 din 97
Prima parte a acestei definiii este similar cu definiiile altor tipuri de baze de date, i
se concentreaz pe modelul folosit de baza de date. Nu are nicio importan faptul c o
anumit baz de date nativ XML ar putea stoca mai multe informaii dect conine modelul
folosit de baza de date. De exemplu, ar putea suporta interogri bazate pe modelul Xpath, dar
s stocheze documente ca text. n acest caz, seciunile CDATA i folosirea entitilor sunt
stocate n baza de date dar nu sunt incluse n model.
A doua parte a definiiei spune c unitatea de baz de stocare ntr-o baz de date
nativ XML este un document XML. Dei poate prea posibil ca o baz de date nativ XML
ar putea atribui acest rol fragmentelor de documente, bazele de date native XML sunt
populate cu documente complete.
Unitatea de baz de stocare este nivelul elementar de context n care se potrivete un
anumit element de date, i este echivalent cu o linie ntr-o baz de date relaional. Existena
acestei uniti de baz nu mpiedic recuperarea unor uniti mai mici de date, cum ar fi
fragmente de documente sau elemente individuale, i nu exclude nici posibilitatea combinrii
fragmentelor dintr-un document cu fragmente din alt document. n termeni relaionali, acest
lucru este echivalent cu faptul c existena liniilor nu mpiedica recuperarea individual a
valorilor din coloane sau crearea unor linii noi din altele existente deja.
A treia parte a definiiei spune c formatul de stocare nu este important. Acest lucru
este adevrat, i este analog cu faptul c formatul fizic de stocare folosit de o baz de date
relaional nu are legtur cu faptul ca baza de date este relaional.
3.4.3.2 Arhitecturile bazelor de date native XML
Arhitecturile bazelor de date native XML se clasific n dou categorii: bazate pe text
i bazate pe modele.
Baze de date native XML bazate pe text
O baz de date nativ XML bazat pe text stocheaz XML ca text. Acesta ar putea fi
un fiier ntr-un sistem de fiiere, un BLOB ntr-o baz de date relaional, sau un format de
text particular. Nu are nicio importan faptul c o baz de date relaional care a adugat
procesarea ce recunoate XML a coloanelor CLOB (Character Large Object) este, de fapt, o
baz de date nativ XML avnd n vedere aceste abiliti.
Toate bazele de date native XML bazate pe text au n comun indecii, care ofer
posibilitatea motorului de interogare s sar uor n orice punct din orice document XML.
Acest lucru d o vitez extraordinar la recuperarea documentelor ntregi sau a fragmentelor
Pagina 45 din 97
de documente. Acest lucru se ntmpla deoarece baza de date poate executa o singur cutare
indexat, poate poziiona capul de citire o singur dat, i, presupunnd c fragmentul necesar
este stocat continuu pe disc, poate recupera ntregul document sau fragment cu o singur
citire. Spre deosebire de aceasta modalitate, reasamblarea unui document din fragmente, cum
se face n cazul bazelor de date relaionale i unele baze de date native XML bazate pe
modele, necesit cutri indexate multiple i mai multe citiri ale discului.
n acest sens, o baz de date nativ XML bazat pe text este similar cu bazele de date
ierarhice, amndou avnd performane mai bune dect bazele de date relaionale la
recuperarea i returnarea datelor n funcie de o ierarhie predefinit. La fel ca bazele de date
ierarhice, bazele de date native XML bazate pe text ar putea ntmpina dificulti la
recuperarea i returnarea datelor n orice alt form, cum ar fi inversarea ierarhiei sau a unor
poriuni ale ei. Acest lucru nu a fost dovedit nc, dar predominana bazelor de date
relaionale, care folosesc pointeri logici ce permit ca toate interogrile de aceeai
complexitate s fie executate cu aceeai vitez, pare s indice c aa se va ntmpla.
Baze de date native XML bazate pe modele
A doua categorie de baze de date native XML este cea bazat pe modele. n loc s
stocheze documentul XML ca text, aceste baze de date construiesc un model obiectual intern
din document i stocheaz acest model. Modalitatea reinerii acestui model depinde de baza
de date. Unele baze de date stocheaz modelul ntr-o baz de date relaional sau orientat
obiect. De exemplu, stocarea DOM-ului ntr-o baz de date relaional ar putea duce la
obinerea unor tabele cum ar fi Elements, Attributes, PCDATA, Entities, i EntityReferences.
Alte baze de date folosesc un format de stocare particular optimizat pentru modelul lor.
Un exemplu de baz de date simpl nativ XML bazat pe un model construit pe o
baz de date relaional este cea descrisa de Mark Birbeck la XML-L n decembrie 1998.
Sistemul folosete cinci tabele definirea atributelor, asocierile dintre elemente/atribute,
definirea coninutului modelului, valorile atributelor, i valorile elementelor (PCDATA sau
pointeri la alte elemente) i un model care include numai elemente, atribute, text, i ordinea
documentelor.
Bazele de date native XML bazate pe modele construite pe alte baze de date vor avea
performane similare cu acele baze de date la recuperarea documentelor pentru c ele se
bazeaz pe acele sisteme pentru a recupera datele. Totui, designul bazei de date, n special
pentru bazele de date native XML construite pe baze de date relaionale poate varia destul de
mult. De exemplu, o baz de date care folosete o mapare obiectual-relaional direct a
Pagina 46 din 97
DOM-ului ar putea duce la un sistem care necesit executarea frazelor SELECT separat
pentru a recupera descendenii fiecrui nod. Pe de alt parte, majoritatea acestor baze de date
i optimizeaz modelul de stocare i softul de recuperare. De exemplu, Richard Edwards a
descris un sistem de stocare a DOM-ului ntr-o baz de date relaional care poate recupera
orice fragment de document (inclusiv ntregul document) cu o singur fraza SELECT.
Este probabil c bazele de date native XML bazate pe modele care folosesc un format
de stocare particular s aib performane similare cu cele native XML bazate pe text la
recuperarea datelor n ordinea n care au fost stocate. Acest lucru se ntmpl deoarece
majoritatea acestor baze de date folosesc pointeri fizici ntre noduri, ceea ce ar trebui s duc
la o performan similar cu recuperarea textului. (Rapiditatea unei metode sau alteia depinde
i de formatul de ieire. Sistemele bazate pe text sunt mai rapide la returnarea documentelor
ca text, pe cnd sistemele bazate pe modele sunt mai rapide la returnarea documentelor ca
arbori DOM, presupunnd c modelul lor se mapeaz uor la DOM.)
Ca i bazele de date native XML bazate pe text, e probabil c i cele bazate pe modele
s ntmpine probleme de performan la recuperarea i returnarea datelor ntr-un formular,
altul dect cel n care sunt stocate, cum ar fi inversarea ierarhiei sau a unor poriuni a ei. Nu
se tie dac aceste baze de date vor fi mai rapide sau nu dect cele bazate pe text.
3.4.3.3 Caracteristici ale bazelor de date native XML
n aceast seciune sunt prezentate un numr de caracteristici ale bazelor de date
native XML.
Colecii de documente
Multe baze de date native XML suport noiunea de colecie. Acestea au un rol similar
cu cel al tabelelor n bazele de date relaionale sau cu cel al directoarelor ntr-un sistem de
fiiere. De exemplu, dac se folosete o baz de date nativ XML pentru stocarea unor ordine
de vnzare, ar trebui definit o colecie de ordine de vnzare astfel nct interogrile cu
privire la ordinele de vnzare s poat fi limitate la documentele din acea colecie.
Ca un alt exemplu, dac se stocheaz manualele pentru toate produsele unei companii
ntr-o baz de date nativ XML, ar trebui definit o ierarhie de colecii, o colecie pentru
fiecare produs, i n acea colecie, cte o colecie pentru fiecare capitol din fiecare manual.
Limbaje de interogare
Aproape toate bazele de date native XML suport unul sau mai multe limbaje de
interogare. Cel mai popular este Xpath (cu extensii pentru interogri asupra mai multor
Pagina 47 din 97
Pagina 48 din 97
Pagina 49 din 97
unei colecii de date despre vreme mai vechi, ar fi o greeal s nu se extind referina,
deoarece documentul ar recupera ntotdeauna datele curente i nu le-ar mai reine pe cele
vechi.
Ca un alt exemplu, se consider un manual al unui produs care nu conine altceva
dect referine la entiti externe care trimit la capitolele manualului. Daca unele dintre aceste
capitole ar fi folosite n alte documente, ca manualele pentru diferite modele ale aceluiai
produs, ar fi o greeal extinderea acestor referine, pentru ca ar duce la copii multiple ale
acelorai capitole.
3.4.3.4 Normalizare, integritate referenial i scalabilitate
Pentru muli, n special pentru cei ce poseda cunotine despre baze de date
relaionale, bazele de date native XML ridic un numr de probleme controversate, n special
cu privire la problemele de stocare a datelor (spre deosebire de documente). Unele dintre
aceste probleme sunt dezbtute n seciunile urmtoare.
Normalizarea
Normalizarea se refer la procesul de proiectare a schemei unei baze de date n care
un anumit set de date sunt reprezentate o singur dat. Normalizarea are cteva avantaje
clare, cum ar fi reducerea spaiului necesar pe disc i eliminarea posibilitii apariiei
inconsistenelor, care se pot gsi atunci cnd un set de date este stocat n mai multe locuri.
Aceasta este una din pietrele de temelie a tehnologiei relaionale i este un punct aprins n
discuiile despre stocarea datelor n baze de date native XML.
Normalizarea nu este o problem pentru documente centrate pe documente. De
exemplu, se consider o colecie de documente ce descrie produsele unei companii. n multe
asemenea colecii, exist puine date comune tuturor documentelor notificri de copyright,
adresele corporaiilor i numere de telefon, logo-uri ale produselor i aceste date sunt prea
puine relativ la total nct normalizarea acestora nu se ia n calcul. Pe de alt parte, alte seturi
de documentaii au pri comune importante ntre documente i se merit normalizarea lor.
Ca i n cazul bazelor de date relaionale, normalizarea bazelor de date native XML nu
este obligatorie. De aceea este important proiectarea atent a structurii documentelor nainte
de stocarea lor ntr-o baz de date nativ XML. Bazele de date native XML au un avantaj fa
de bazele de date relaionale. Din moment ce bazele de date native XML nu au scheme, se pot
stoca documente similare n baza de date cu mai multe scheme la un anumit moment. Chiar
dac este necesar reproiectarea interogrilor i convertirea documentelor existente, acest
lucru ar putea uura procesul de tranziie.
Pagina 52 din 97
Normalizarea datelor pentru o baz de date nativ XML este aproximativ la fel ca
normalizarea unei baze de date relaionale: documentele trebuie proiectate astfel nct datele
s nu se repete. O diferen ntre bazele de date native XML i bazele de date relaionale este
aceea ca XML suport proprieti multi-valoare n timp ce majoritatea bazelor de date
relaionale nu. Aceasta face posibil normalizarea datelor ntr-o baz de date nativ XML
ntr-o manier care nu este posibil ntr-o baz de date relaional.
De exemplu, se consider un ordin de vnzare. Acesta const n informaiile din antet,
cum ar fi numrul ordinului, data, numrul clientului, i unul sau mai muli itemi care conin
un numr curent, cantitatea, i preul total. ntr-o baz de date relaional, informaia din antet
trebuie stocat ntr-o tabel separat fa de itemi, deoarece sunt mai multe linii n fiecare
antet. ntr-o baz de date nativ XML, aceast informaie poate fi stocat ntr-un singur
document fr redundane, deoarece natura ierarhic a XML permite unui element printe s
aib mai muli descendeni.
Din nefericire, normalizarea pe cazuri concrete nu este att de simpl. De exemplu, ce
se ntmpl atunci cnd se dorete ca ordinul de vnzare s conin informaii despre client,
cum ar fi nume de contact i adresa de expediere i facturare? Exista dou variante. Prima, se
pot duplica informaiile despre client n fiecare ordin de vnzare pentru acel client, ducnd la
date redundante i toate problemele care apar cu acestea. A doua variant, se pot stoca
informaiile despre client separat i fie adugat un XLink n documentul ordinului de vnzare
ctre documentul clientului, fie unite cele dou documente atunci cnd datele sunt interogate.
Acest lucru presupune c fie legturile XLink sunt suportate (n majoritatea cazurilor nu
sunt), fie limbajul de interogare suport uniri (de asemenea nu se ntmpl ntotdeauna).
n practic nu exist soluii clare. Datele relaionale din lumea real sunt adesea
nenormalizate din motive de performan. Dac se stocheaz documente centrate pe
documente i acestea se pot normaliza pn la un anumit grad cum ar fi stocarea capitolelor
sau procedurilor ca documente separate i unirea lor pentru a crea documente end-user
atunci o baz de date nativ XML este o soluie bun, n special pentru c va oferi
caracteristici precum limbaje de interogare XML care nu se gsesc n alte baze de date. Dac
se stocheaz documente centrate pe date i o baz de date nativ XML mbuntete
performana aplicaiei sau ofer stocarea datelor semi-structurate, faciliti care nu se gsesc
n alte baze de date atunci aceast baz de date ar trebui folosit.
Integritatea referenial
Pagina 53 din 97
cum ar fi o list cu ordinele de vnzare pentru un anumit client, va fi mult mai nceat,
deoarece legturile fizice nu se mai folosesc.
Pentru a rezolva parial aceast problema, bazele de date native XML folosesc foarte
muli indeci, adesea indexnd toate elementele i atributele. Dac acest lucru ajut la
scderea timpului de recuperare a datelor, totui crete timpul de actualizare, pentru c
ntreinerea acestor indeci poate fi costisitoare. Aceasta nu este o problem n medii readonly, dar poate cauza probleme n medii n care se folosesc multe tranzacii.
n cele din urm, bazele de date native XML scaleaz mai slab dect cele relaionale
n cutarea datelor neindexate. Ambele tipuri de baze de date trebuie s caute secvenial
datele n acest caz, dar n cazul bazelor de date native XML este mai greu datorit
normalizrii mai puin complete. De exemplu, se caut toate ordinele de vnzri cu o anumit
dat i datele nu sunt indexate. ntr-o baz de date relaional, aceasta nseamn citirea tuturor
valorilor din coloana OrderDate. ntr-o baz de date nativ XML, acest lucru nseamn citirea
fiecrui ordin de vnzare n ntregime i cutarea elementului <OrderDate>. Nu numai c se
citete coninutul fiecrui element <OrderDate>, dar se citete i coninutul tuturor celorlalte
elemente. n bazele de date native bazate pe text, textul trebuie analizat i convertit la
formatul dat calendaristic nainte de a putea fi comparat cu data cutat.
Aici se ncheie descrierea bazelor de date native XML. Urmtoarele doua seciuni
trateaz dou tipuri specializate de baze de date native XML: DOM-uri persistente i sisteme
de management ale coninuturilor.
3.4.4 DOM-uri persistente (PDOM-uri)
Un DOM persistent sau PDOM este un tip specializat de baz de date nativ XML
care implementeaz DOM-ul peste un tip de stocare persistent. Spre deosebire de
majoritatea bazelor de date native XML, care pot returna documente ca arbori DOM, arborele
DOM returnat de un PDOM este activ (live). Adic, modificrile fcute arborelui DOM sunt
reflectate direct n baza de date. Dac modificrile sunt fcute imediat sau n urma apelrii
unei metode commit depinde de baza de date. n majoritatea bazelor de date native XML,
arborele DOM returnat aplicaiei este o copie, i modificrile sunt fcute n baza de date prin
intermediul unui limbaj de actualizare XML sau prin nlocuirea ntregului document.
Deoarece arborii PDOM sunt activi, baza de date este de obicei local, adic este n
acelai spaiu de procesri ca i aplicaia, sau cel puin pe aceeai main, dei acest lucru nu
este neaprat necesar. Acest lucru este fcut pentru eficien, deoarece un PDOM peste o baz
de date aflat la distan ar necesita cereri frecvente la un server aflat la deprtare.
Pagina 56 din 97
PDOM-urile au acelai rol pentru aplicaiile DOM ca i bazele de date orientate obiect
pentru aplicaiile orientate obiect: ele ofer stocare persistent pentru datele aplicaiei, i
servesc i drept memorie virtuala pentru aplicaie. Al doilea rol este foarte important pentru
aplicaiile DOM care opereaz cu documente mari, deoarece arborii DOM pot uor s
depeasc documentele XML ca mrime.
3.4.5 Sisteme de management ale coninuturilor
Sistemele de management ale coninuturilor sunt un alt tip specializat de baze de date
native XML. Acestea sunt proiectate pentru operarea cu documente scrise de oameni, cum ar
fi manualele de utilizare, i sunt construite peste baze de date native XML. Baza de date este
n general ascuns de utilizator n spatele unui front end care ofer caracteristici precum:
Control al versiunilor i al accesului
Motoare de cutare
Editoare XML/SGML
Motoare de publicare pe hrtie, CD sau pe Web
Separarea coninuturilor i a stilurilor
Extinderea n scripturi i programare
Integrarea datelor din baza de date
Termenul de sistem de management al coninuturilor spre deosebire de sistem de
management al documentelor reflect faptul c asemenea sisteme permit n general
mprirea documentelor n fragmente cu coninut discret, cum ar fi exemple, proceduri,
capitole, dar i metadate cum ar fi numele autorilor, datele reviziilor, i numerele
documentelor, dect s opereze cu fiecare document ca un ntreg. Nu numai c astfel se
simplific coordonarea lucrului mai multor scriitori la acelai document, dar permite i
asamblarea unor documente noi din componente care exist deja.
CAPITOLUL IV
CONSTRUIREA DOCUMENTELOR XML
4.1 Sintaxa XML
XML este format de fapt din dou metalimbaje, ambele descrise n acelai document.
Primul este un set de reguli pentru realizarea de documente XML construite corect, n timp ce
al doilea este un set de reguli pentru realizarea unei definiii a tipului documentului XML, sau
DTD (Document Type Definition), care permite ca structura documentului XML s se supun
unor constrngeri i s fie validat fa de acele constrngeri. Distincia dintre aceste dou
Pagina 57 din 97
limbaje este deseori neclar, deoarece un document XML complet presupune mcar existena
opional a unui DTD, indiferent dac acesta este de fapt prezent sau nu. Pentru a complica i
mai mult lucrurile, un DTD poate fi compus din dou pri, o submulime intern i o
submulime extern. Aceasta parte studiaz documentul XML fr a insista prea mult asupra
DTD-ului, deoarece un document XML poate fi creat i fr a face referiri la un DTD. Din
motive de performan, multe documente XML vor fi utilizate fr a le valida n raport cu
DTD-ul, chiar dac DTD-ul este disponibil. n cazul conexiunilor lente, citirea dintr-un DTD
situat pe un alt sistem poate fi foarte nceat, iar datorit faptului c un DTD poate conine
referine la alte documente, rezolvarea tuturor referinelor externe poate dura exagerat de
mult chiar i n cazul conexiunilor de mare vitez. Utilizatorii sunt obinuii ca documentele
HTML s fie ncrcate incremental, deci pot citi nainte ca documentul s fie ncrcat n
totalitate, dar analizatoarele XML de validare nu permit afiarea documentului dect n cazul
n care acesta este valid, deci documentul va aprea pe ecranul utilizatorului numai n
momentul n care este ncrcat n totalitate. Acest lucru poate fi suprtor. Totui, fiecare
document este creat avnd n minte un DTD, indiferent dac DTD-ul este explicit sau nu.
Chiar i la crearea documentelor fr un DTD, trebuie s avut n vedere un fel de DTD
empiric pe msur ce este creat documentul, deoarece un DTD descrie o structur de date.
4.2 Descrierea de vocabulare noi cu XML
XML are o natur dual: un metalimbaj care permite descrierea de noi structuri de
documente i vocabulare i un limbaj utilizat ca s exprime acea structur i acel vocabular n
cazul unui document. Exist o diferen clar ntre un document XML, care poate avea sau nu
asociat un DTD exprimat n metalimbajul XML, i un DTD XML. Ele utilizeaz sintaxe
complet diferite pentru a descrie un document XML, unul prin exemplu iar cellalt
prescriptiv.
Definiiile tipului documentului XML (DTD-urile) descriu instane ale limbajului
XML, numite uneori vocabulare XML. Dcumentele XML sunt create utiliznd acele limbaje.
Din pcate, aceast diferen se pierde uneori n exprimarea neoficial, iar vocabularele XML
particulare i DTD-urile asociate sunt descrise inexact ca XML. Utilizatorul unui limbaj
sau vocabular XML poate c nu va vedea niciodat sau poate c nici nu i pas de DTD-ul
utilizat pentru a descrie aplicaia sa, la fel cum miilor de persoane care lucreaz n design
Web utiliznd HTML nu le pas de W3C HTML 4.0 SGML DTD utilizat n descrierea
HTML. De fapt, un DTD poate s nu existe. Nu are o importan chiar aa mare la nivelul
aplicaiei.
4.3 Avantajele definiiei tipurilor documentului
Pagina 58 din 97
Pagina 59 din 97
Totui pe lng acest comportament necrutor, XML este cu mult mai puternic. n
timp ce HTML se mulumete cu un numr relativ mic de etichete, XML are un numr de
etichete aproape infinit, structurate n aproape orice fel se dorete. Oricum, fundamentele au
rmas aceleai, XML reprezentnd un pas evolutiv al HTML. Nu numai c un HTML bine
fcut este foarte aproape de XHTML un nlocuitor al HTML care respect XML dar un
cod HTML 4.0 curat este destul de lizibil ca XHTML 1.0. Deoarece HTML 4.0 a fost
structurat ca o aplicaie SGML, iar XML este o submulime a SGML, acest lucru este logic.
Diferenele sintactice minore dintre XHTML, un vocabular XML, i HTML, un vocabular
SGML, pot fi ajustate automat dac este nevoie. Autorul unui document XML ofer de obicei
un manual de creare sau codare (sau o foaie, pentru DTD-uri mici) descriind etichetele
utilizate n aplicaia XML, atributele lor, valorile posibile i modul lor de imbricare.
Urmrirea unui astfel de manual de codare nu este mai dificil dect reinerea faptului c o
linie de tablou <tr> trebuie s fie imbricat n interiorul unui tablou <table> i nu are, sau nu
ar trebui s aib, sens n afara acelui context. Pentru majoritatea situaiilor, acest lucru este
suficient. XML este capabil s ofere autorilor suficient ajutor n nvarea modului de
utilizare a unei anumite aplicaii, deoarece acetia sunt ncurajai s dea etichetelor nume
sugestive, care s fie uor de reinut. Autorul unei aplicaii ar trebui s furnizeze un manual de
creare care s explice n termeni simpli modul de utilizare a aplicaiei.
Cu toate c orice procesor XML poate spune despre o poriune de cod dac este sau
nu construit corect, iar un manual poate ajuta la construirea unui document valid, DTD-ul
permite verificarea fr ambiguiti a codului. Totui, n funcie de tipul de creare utilizat,
acesta poate fi un pas diferit de procesul de editare.
Codul ndeplinete acest ideal n funcie de utilizarea dat numelor etichetelor, totui
ntre anumite limite:
Numele de etichete care ncep cu irul xml, indiferent de tipul literelor, sunt
rezervate; adic, indiferent de situaie, nu este permisa crearea lor.
Numele de etichete care conin caracterul dou puncte pot fi interpretate ca
identificatori avnd asociat o zon de nume, deci utilizarea celor dou puncte n numele
etichetelor este puternic combtut i poate fi chiar interzis.
Un nume de etichet trebuie s nceap cu o liter, care n acest context este orice
liter sau ideogram Unicode/ISO/IEC 10646, sau cu o liniu de subliniere
n continuare, numele unei etichete poate conine orice liter, ideogram sau cifr
Unicode/ISO/IEC 10646, caractere de combinare, caractere de extindere, puncte, cratime,
spaii sau dou puncte. De altfel, puine limbi de pe glob au caractere cu care s nu poat
Pagina 61 din 97
ncepe un nume corect n limba respectiv. Aceste caractere sunt excluse din lista de caractere
dac se afl ntr-o poziie n care pot fi vzute ca primele dup o cratim sau un alt
separator logic de cuvinte.
Caracterul thailandez mai yamok (arat ca un f ntors i fr liniu), de exemplu,
arat ca o liter, dar nu poate fi folosit ca prim liter a unui cuvnt deoarece el semnific
repetarea literei anterioare.
Caracterele de combinare sunt caractere speciale, folosite pentru a accentua un alt
caracter, multe dintre ele fiind normalizate la un singur caracter cu accent. Acesta este un
avantaj pentru intrrile de la tastatur deoarece multe limbi care conin caractere accentuate
permit introducerea utiliznd caractere accent speciale de lime zero care se pot ataa la
orice alt caracter.
Caracterele de extindere sunt diverse semne de punctuaie, cum ar fi (n limbile
europene) middle dot, triangular colon i half-triangular colon. Caracterele extinse sunt
similare n alte scrieri din lume; nu sunt exacte din punct de vedere alfabetic dar se potrivesc
pe undeva.
4.6 Startul n XML
Acest subiect evideniaz mulimea de deprinderi necesare pentru XML i clarific
numeroasele asemnri dintre XML i HTML:
XML este sensibil la tipul literelor deoarece majusculele nu reprezint un concept
universal Dac s-ar trata literele mari i mici ca fiind echivalente, ar trebui s se fac la fel
pentru mii de alte variante de litere n alte limbi, o operaie mpovrtoare. Unele limbi nici
nu au tipuri de litere. De exemplu, n limba ebraic nu exist litere mici, iar limba arab nu
face distincie ntre forma iniial, de mijloc i final a literelor. Pentru cei care prefer s
scrie etichetele cu majuscule i atributele cu litere mici, pentru a le evidenia, aceasta este o
tire teribil. Dar editoarele de cod moderne nu mai acord o importan aa de mare acestui
lucru ca nainte. De exemplu, precizarea anumitor culori pentru a marca etichete este un lucru
obinuit, deci utilizarea majusculelor este ntructva un anacronism istoric, asemenea
numerelor de linii n COBOL.
XML este foarte precis cu privire la imbricarea corect a etichetelor Etichetele nu
se pot ncheia ntr-un context diferit de cel de nceput. Deci, dac se dorete <bold><italics>,
fraza evideniat trebuie nchis cu </italics></bold>, pentru a evita o eroare fatal. Deoarece
XML poate referi i include documente XML i fragmente de documente oriunde pe Web,
fiecare document XML trebuie s se supun acelorai reguli pentru a nu strica documentele
altora.
Pagina 62 din 97
Limbajul XML a fost proiectat astfel nct s fie transparent la utilizare pentru a putea
fi neles i utilizat cu uurin. Descrierile XML succinte sau complicate din majoritatea
documentelor sunt greu de neles n efortul de a fi explicit ntr-un mod n care programatorii
s l poat translata cu uurin n aplicaii care s funcioneze.
4.7 Definirea unui document XML ca ntreg
Un document XML este o colecie de entiti care pot fi sau nu analizate. Datele care
nu sunt nelese de un procesor XML, date binare sau date care au sens numai pentru alte
aplicaii, reprezint date neanalizate. Datele nelese de XML, fie ca i caractere fie ca
marcaje, sunt date analizate.
Un document XML trebuie s fie construit corect. n Recomandarea XML 1.0 a W3C
aceast situaie este descris concis prin urmtoarele cerine:
Luat ca ntreg, corespunde produciei etichetate ca document.
Satisface toate constrngerile de construire corect din aceast specificaie
(Recomandarea XML 1.0)
Fiecare entitate analizat, referit direct sau indirect n cadrul documentului, este
construit corect.
Prima constrngere spune c pentru a fi construit corect, un document XML trebuie s
respecte toate regulile care descriu un document n Recomandarea XML 1.0. Acele reguli
spun n primul rnd c un document XML trebuie s conin un prolog i un singur element
care formeaz elementul rdcin al documentului, mpreun cu comentarii opionale i
instruciuni de prelucrare la sfritul documentului, dar, din pcate, analizorul XML nu are
cum s spun dac aceste comentarii i instruciuni de prelucrare ataate sunt sau nu ataate
documentului. Deoarece ele pot sa fie plasate dup eticheta de ncheiere, un analizor XML nu
poate s spun nici dac instruciunile de prelucrare i comentariile ataate au fost sau nu
recepionate. Aceasta contravine regulii generale din XML care spune c un analizor trebuie
s fie capabil s indice dac un document este sau nu complet. Dac se utilizeaz instruciuni
de prelucrare sau comentarii, este preferabil trecerea lor n prolog unde sunt mult mai n
siguran i nu se pot pierde.
Cea de a doua constrngere spune c documentul respect constrngerile construirii
corecte descrise n document. Una din constrngerile construirii corecte este c entitile
analizate recursiv sunt interzise. Recursivitatea din aceast interdicie se refer la formarea
unei bucle de entiti n care o entitate se ncorporeaz pe ea nsi sau o alt entitate care se
ncorporeaz pe ea nsi indiferent de nivelul de indirectare. Aceasta mai nseamn i c un
document nu se poate referi la el nsui, nici mcar indirect printr-o entitate extern. El se
Pagina 64 din 97
poate referi la o entitate extern numai dac aceasta nu se refer la ea nsi, chiar i indirect.
Este posibil ca analizoarele care nu valideaz s nu depisteze aceast eroare, dar aceasta este
totui o eroare. Din punct de vedere logic este evident c dac documentul A conine
documentul B, definindu-l pe B ca i cnd l-ar conine pe A se genereaz o bucl infinit.
Bucla infinit este interzis.
n termeni XML, construcia corect este o alt modalitate de a spune c un document
XML formeaz un arbore, sau o ramur a unui arbore, adic este complet n sine. Acest lucru
este necesar deoarece XML permite construirea de documente mai mari din unele mai mici i
reprezint o cheie a posibilitii de utilizare a XML pe Web.
Dei construirea corect poate fi considerat suficient deoarece un document
construit corect are un DTD care l descrie, pot fi construite un numr infinit de DTD-uri
care, de asemenea, s l descrie. Deci, pentru validitate total, un DTD asociat este necesar.
Producia documentului este definit n numai dou afirmaii, preluate din nou din
Recomandarea XML 1.0:
Conine unul sau mai multe elemente.
Exist un singur element, numit rdcin sau element document, care s nu aib nici
o parte a sa n coninutul oricrui alt element. Pentru toate celelalte elemente, dac eticheta de
pornire se afl n coninutul unui alt element, atunci i eticheta de ncheiere se afl n
coninutul aceluiai element. Exprimat mai simplu, elemente delimitate de etichete de pornire
i ncheiere sunt imbricate corect unele n altele.
Prima afirmaie spune c ntr-un document trebuie s existe cel puin un element sau,
altfel spus, un document construit corect nu poate fi vid.
Cea de a doua afirmaie spune c, ntr-un sens restrns, un document trebuie s fie un
arbore. El nu poate fi o reea conectat arbitrar sau s aib orice alt topologie care nu se
reduce la un arbore simplu. El trebuie s fie complet pentru a putea vedea diferena dintre o
descrcare reuit i una parial.
Din punct de vedere tehnic, un arbore este un graf conex care nu conine circuite. Cu
alte cuvinte, un arbore se ramific de la rdcina sa fr a se mai conecta la el nsui, deci nu
conine muchii multiple sau bucle. Orice lucru care conine bucle sau muchii multiple, nu este
un arbore, ci altceva, i nu poate fi reprezentat n XML. Un efect secundar interesant este
acela c ntr-un arbore se poate alege arbitrar un punct, i se poate transforma un nod ntr-o
rdcin, reorganiznd arborele ntr-un alt arbore, cu o alt ordine de parcurgere. Aceasta
ilustreaz caracterul capricios al schemelor de clasificare.
Pagina 65 din 97
Figura 1
Pe de alt parte, un graf care nu formeaz un arbore nu poate fi transformat ntr-un
document XML dect dac graful poate fi simplificat, eliminnd toate caracteristicile care nu
sunt reprezentative pentru arbori. n Figura 2, de exemplu, graful din stnga poate fi
simplificat prin eliminarea unei ci de la frunza de sus ctre un nod. n aceeai figur,
Pagina 66 din 97
grafului din partea dreapt trebuie s i se elimine o rdcin deoarece un document XML
poate avea o singur rdcin.
Pagina 67 din 97
asemenea, se poate crea un DTD master care apeleaz prile DTD necesare, lucru care
seamn cu comenzile dintr-un meniu. Atunci cnd se obine o combinaie de funcionaliti
care permite crearea structurii documentului de care este nevoie, se poate publica DTD-ul
rezultat i nltura neplcerea refacerii pentru fiecare document nou.
4.10.1 Crearea corpului documentului
Un document XML este alctuit din text, care de obicei este format dintr-un amestec
de marcaje i date caracter. Prologul conine numai marcaje, dar nu aceasta este partea
interesant, deoarece este nevoie de date care s nsoeasc marcajele care, altfel, nu ar fi
dect nite cutii goale ce ateapt s fie umplute. Corpul documentului conine aproape tot
ceea ce conteaz din perspectiva unei aplicaii mprtiate generos n cadrul marcajelor.
4.10.2 Date caracter
Un DTD poate declara multe tipuri de date care s poat fi utilizate ntr-un document,
dar tipul de date prestabilit este ntotdeauna CDATA, pentru date obinuite de tip caracter.
Foaia sau manualul de codare indic ce tip de dat poate fi introdus n fiecare atribut sau
cmp cu coninut element. Presupunnd c tipul de date este CDATA, n cmp se poate pune
aproape orice se dorete att timp ct nu conine un marcaj n afara unei secvene escape.
Este pe deplin posibil construirea unui DTD care s nu conin text n interiorul
elementelor. n schimb, se pot pune datele semnificative n interiorul atributelor asociate
fiecrui element, care pot fi toate declarate ca fiind vide sau avnd numai coninut element.
Acest lucru se face uneori pentru a converti un document utiliznd un standard de codificare
cum ar fi MARC, care este n esen un format binar, la XML.
4.10.3 Marcajul
Marcajul este format din ansamblu de date non-caracter dintr-un fiier XML.
Diversele forme pe care le poate lua un marcaj sunt prezentate n tabelul urmtor:
Tabel
1 Sintaxa marcajului XML
Pagina 70 din 97
Pagina 71 din 97
Un document XML este o colecie de astfel de entiti. Fiecare din aceste subentiti
trebuie s fie complet n sine. Aceasta nseamn c, deoarece structura documentului ca
ntreg trebuie s fie un arbore simplu, fiecare subentitate trebuie s fie un singur nod sau
trebuie s fie, de asemenea, un arbore simplu. Structuri mai mari se pot construi prin
adugarea nodurilor sau a arborilor subentitate ca poriuni ale arborelui mai mare.
4.10.6 Etichete de pornire i etichete de ncheiere
n XML sunt utilizate dou tipuri de etichete, etichete cu coninut i etichete vide.
Etichetele cu coninut trebuie s aib o etichet de pornire i o etichet de ncheiere. Eticheta
de pornire conine numele elementului ncadrat ntre paranteze unghiulare, avnd opional
atribute ca argumente. Eticheta de ncheiere conine numele elementului precedat de
caracterul slash, totul fiind ncadrat ntre paranteze unghiulare. n eticheta de ncheiere nu
putei trece atribute. Codul urmtor reprezint o etichet cu coninut:
<titlu subtitlu=0 cltorie acas >Dus-ntors</titlu>
Seamn mult cu etichetele HTML standard i nu ar trebui s ridice alte probleme n
afara celei de construire corect, care cere ca ele s se imbrice ntr-adevr una n cealalt. Nu
pot exista etichete care s alterneze ntre ele ca n acest exemplu greit construit:
<bold><italic>TEXT ACCENTUAT</bold></italic>
Cu toate c este o eroare obinuit n HTML, XML este cu mult mai pretenios i nu
va permite aceast construcie. Etichetele trebuie imbricate corect, dup cum se vede n
exemplul urmtor:
<bold><italic>TEXT ACCENTUAT</italic></bold>
Acum etichetele sunt imbricate corect. Trebuie nchis fiecare etichet care ncepe n
contextul unei anumite etichete (sau a mai multor etichete) nainte de nchiderea contextului
etichetei respective.
Etichetele vide au disponibil un format special, cu toate c aceeai schem, etichet de
pornire/ etichet de ncheiere, poate fi utilizat atta timp ct se ine cont de faptul c nu
trebuie pus nici un fel de coninut ntre eticheta de pornire a elementului vid i eticheta de
ncheiere care urmeaz imediat dup ea. De asemenea, poate exista preocuparea c este
posibil ca documentul XML s fie vizualizat cu un browser Web obinuit, deoarece etichetele
de ncheiere pentru elementele care arat ca etichete HTML vide pot duce la blocarea
browserului sau la un comportament ciudat al acestuia. Totui, pentru utilizare general,
formatul special este mnemonic n sine, un avantaj deoarece se poate vedea c eticheta este
vid i nu blocheaz aproape nici un browser. De obicei, etichetele vide sunt pornite i
ncheiate n cadrul aceleiai perechi de paranteze unghiulare, plasnd dup numele
Pagina 72 din 97
elementului i toate atributele sale posibile un spaiu, un caracter slash i apoi paranteza
unghiular nchis:
<image source=pozamea.jpeg type=JPEG />
4.10.7 Normalizarea
Normalizarea este un cuvnt excentric pentru aducerea lucrurilor la cel mai mic
numitor comun i punerea lor ntr-un fel de form canonic. n contextul XML, el se refer la
procesul rezolvrii referinelor la entiti n locaii n care pot aprea astfel de referine, la
aranjarea rndurilor noi pentru a lua n considerare diversele metode de tratare a lor de ctre
diferite sisteme de operare i la ordonarea altor lucruri care trebuie fcute n anumite situaii.
Proiectantul rareori trebuie s se preocupe de normalizare, excepie fcnd cazurile
negative. Analizorul XML ar trebui s realizeze toate normalizrile necesare, deci singurul
lucru la care trebuie s se gndeasc creatorul documentului este dac normalizarea va afecta
sau nu datele sale atunci cnd se va face trecerea de la forma nenormalizat i invers. S-a
dovedit c exist dou locuri n care pot fi ntlnite spaii albe: n datele de tip caracter din
cadrul documentului i n datele de tip caracter atribuite atributelor elementelor. n primul
caz, n entitile analizate este dificil s se fac distincie ntre spaiile albe semnificative i
cele nesemnificative. Pentru proiectani, cea mai bun cale pare s fie transferul ctre
aplicaie al tuturor spaiilor albe mpreun cu cea mai bun presupunere a procesorului,
bazat pe DTD, referitoare la datele care sunt n mod sigur nesemnificative i la cele
nesigure. Acest transfer de rspundere are sens deoarece aplicaia este cea n msur s tie
cum s procedeze cu spaiile albe suplimentare.
Procesorul XML poate numai s presupun care spaiu alb este semnificativ i care
nu, bazndu-se pe ceea ce a fost definit n DTD sau n orice alt limbaj de scheme utilizat. O
aplicaie trebuie s fie pregtit s trateze presupunerile eronate. Cu tratarea sfriturilor de
linie, o alt form de spaii albe, exist o alt problem. Liniile noi sunt tratate diferit pe
sisteme diferite. Alternativele generale sunt un salt la linie nou (UNIX), un return (MacOS)
i att un return ct i saltul la linie nou (MS Windows). Un alt lucru obinuit pentru aplicaii
este, de asemenea, inserarea de secvene contradictorii cu oricare dintre acestea, n orice
ordine, atunci cnd ntlnesc un fiier dintr-un sistem strin. W3C a hotrt c nu poate face
totul i a ales un set rezonabil de reguli. Dac analizorul ntlnete fie 
 (return
, salt la linie nou), fie 
(return), el le nlocuiete cu �A; (salt la linie nou),
caracterul de linie nou UNIX.
Microsoft i Apple au ales mecanisme diferite pentru separarea liniilor, Microsoft
alegnd tehnica curea i bretele obinuit pentru teleimprimatoare, utiliznd un return i
Pagina 73 din 97
apoi un salt la linie nou pentru a indica o linie nou. Apple a hotrt c saltul la linie nou
era redundant i a considerat c un singur return este suficient, modelat probabil dup
comportamentul unei maini de scris obinuite. UNIX a utilizat de la nceput un singur salt la
linie nou pentru a realiza acelai lucru, iar acesta a fost standardul convenit pentru XML. n
atribute exist o secven de transformare standard i apoi o prelucrare
adugat special pentru orice n afar de CDATA:
Referinele la caractere sunt prelucrate prin adugarea caracterului referit la valoarea
de ieire a atributului.
Referinele la entiti sunt procesate prin prelucrarea recursiv a textului de nlocuit
al entitii.
Spaiile albe, #x20 (spaiu), #x0D (retur de car), #x0A (salt de linie nou) i #x09
(tab orizontal) sunt prelucrate prin adugarea lui #x20 (spaiu) la valoarea normalizat a
ieirii excepie fcnd faptul c se adaug un singur #x20(spaiu) pentru secvena
#x0D#x0A (retur de car, salt la linie nou), care este parte a unei entiti externe analizate
sau valoarea entitii literale a unei entiti analizate interne.
Celelalte caractere sunt prelucrate prin adugarea lor la valoarea normalizat a
ieirii.
Dac tipul de dat al atributului nuI este CDATA, cel prestabilit, atunci se aplic
nc o transformare. Spaiile din fa i din spate sunt eliminate, iar spaiile multiple sunt
comasate ntr-un singur spaiu. Diferena dintre cele dou tipuri de normalizare const n
faptul c se pot transfera n mod convenabil iruri lungi ntr-un atribut, restrnge linii astfel
nct s ncap n pagin, iar n final coninutul elementului s rmn relativ curat.
4.10.8 Tipuri de elemente
n mod surprinztor, la validare nu este o eroare utilizarea unui element de un tip care
nu a fost declarat, cu toate c este posibil ca analizorul s emit un advertisment. De fapt,
permind n interiorul unor elemente alte tipuri de elmente nedeclarate, indiferent de ceea ce
spune modelul lor de coninut, se poate suplimenta DTD-ul unui document cu elemente din
alte zone de nume. Deci, tot ce rmne de fcut este utilizarea elementului nedeclarat ntr-o
manier exact, construit corect, identificnd pe ct posibil zona de nume de unde provine.
n termeni XML, a fi construit corect este un alt mod de a spune c acel element formeaz un
arbore sau o ramur a unui arbore care este complet n sine. Acest lucru este necesar
deoarece XML permite construirea de documente mai mari din unele mai mici i este un
element cheie pentru utilizarea XML pe Web. Fiecare element dintr-un document XML valid
Pagina 74 din 97
a fost definit n DTD-ul asociat acelui document prin declaraia DOCTYPE. DTD-ul declar
urmtoarele:
Numele efective ale elementelor
Regulile utilizate pentru a determina care elemente se pot imbrica n alte elemente i
n ce ordine
Atributele posibile i valorile lor prestabilite sau constante
Valorile caracter ale tipurilor enumerate
Entitile neanalizate utilizate n document i modul n care sunt referite prin nume
Codificrile de limb utilizate n document
Alte informaii importante pentru prelucrarea i redarea documentului
Respectnd aceste reguli se pot crea documente n concordan cu ablonul pe care
proiectantul documentului l-a avut n minte atunci cnd a creat DTD-ul. ntr-un mediu care
nu valideaz se pot crea etichete i atribute pe msura naintrii. Foaia sau manualul de
codare afieaz toate acestea ntr-un format uor de citit i neles, dac autorul DTD-ului i-a
fcut treaba corect. Cnd se creeaz un document XML sau se corecteaz o eroare, este
posibil s nu se beneficieze de avantajul unui mediu de creare complet. Este ntotdeauna
important pstrarea la ndemn a documentaiei de codare pentru cazul n care apar
defeciuni.
4.10.9 Entiti neanalizate
O entitate neanalizat este orice lucru care nu poate fi recunoscut de un procesor
XML, fie date binare, cum ar fi un fiier imagine sau audio, fie text care trebuie s fie
transferat unei aplicaii fr a fi prelucrat n vreun fel. HTML utilizeaz comentarii pentru a
ascunde un astfel de text de browserul HTML, dar XML are cteva mecanisme care
funcioneaz mult mai sigur.
O entitate neanalizat trebuie mai nti s fie declarat ca NOTATION, o declaraie
special care numete o aplicaie de asisten care tie cum s lucreze cu entiti de un anumit
tip. Notaiei i este dat un nume, un identificator public opional i apoi numele mai puin
opional al aplicaiei de asisten, ca n una din variantele urmtoare:
<! NOTATION nume-mnemonic PUBLIC identificator-public>
<!
NOTATION
nume-mnemonic
PUBLIC
identificator-public
nume-
aplicaie.exe>
<! NOTATION nume-mnemonic SYSTEM nume-aplicaie.exe>
Prima opiune funcioneaz numai dac exist un catalog. Nu se poate pune baza pe
un catalog deoarece acesta funcioneaz indiferent dac exist sau nu catalog. Nu se poate
Pagina 75 din 97
baza pe un catalog deoarece acesta este un instrument SGML pe care multe procesoare XML
actuale l-au motenit implicit de la predecesoarele lor SGML. Studierea catalogului nu este
specificat n recomandarea W3C i nu se poate conta niciodat pe ea. Dac este posibil, se
recomand utilizarea ultimele dou versiuni. Pe de alt parte, codarea hard a informaiilor
despre locaia i identitatea aplicaiei de asisten n absolut fiecare DTD este un anacronism
predispus la erori pe Web.
Prin redefinirea comportamentului script-urilor n prezena comentariilor, proiectanii
XML-ului au introdus o problem de incompatibilitate ntre XML i HTML. Dup toate
probabilitile, procesoarele XML vor continua s transfere comentarii la aplicaii deoarece
multe pagini se vor ntrerupe dac nu vor avea acest comportament. De asemenea,
procesoarelor le este permis transferul informaiei comentate prin acelai limbaj prin care li
se permite s nu o fac. Dup ce o notaie a unei entiti neanalizate a fost definit, ea trebuie
s fie declarat ca o entitate, astfel:
<! ENTITY nume-mnemonic NDATA nume-mnemonic>
i apoi trecut ca un atribut ntr-un element pentru a o putea utiliza:
<! ELEMENT name EMPTY>
<! ATTLIST name type NOTATION mnemonic
>
Numele mnemonice nu mpart aceeai zon de nume, deci nu are importan dac ele
sunt identice. n acest moment se poate utiliza tipul de date definit astfel. Tipul de date poate
fi utilizat numai ca atribut al unui element declarat ca fiind de acel tip sau avnd acel tip
disponibil ntr-o enumerare. Celelalte atribute adun informaiile de care are nevoie aplicaia
de asisten extern pentru a fi capabil s prelucreze datele. O aplicaie tipic poate fi un
fiier imagine:
<image source =uri alt =graphic description type=gif89a>
Acest element va necesita n DTD urmtoarele declaraii:
<! NOTATION gif89a PUBLIC -//CompuServe//NOTATION Graphics Interchange
Format 89a//EN explorer.exe>
<! ENTITY gif89a NDATA gif89a >
<! ELEMENT image EMPTY>
<! ATTLIST image source CDATA #REQUIRED
alt CDATA #IMPLIED
type NDATA gif89a >
Pagina 76 din 97
NOTATION
jpeg
PUBLIC
ISO/IEC
10918:1983//NOTATION
Digital
>
<! NOTATION gif89a PUBLIC -//CompuServe //NOTATION Graphics Interchange
Format 89a//EN
>
<! NOTATION fax PUBLIC -//USA-DOD//NOTATION CCITT Group 4 Facsimile
Type 1 Untiled
Raster//EN >
Desigur, va trebui s se adauge un ID sistem pentru a le putea utiliza, fie ca pointer la
o aplicaie de asisten local, fie n fiierul catalog care centralizeaz locaiile acestor
aplicaii, dac este disponibil pentru instrumentele folosite.
4.10.10 Aplicaii din lumea real
S-au vzut deja, mai sus, unele dintre instrumentele care pot fi utilizate pentru a crea
un document XML, dar unde se pot gsi DTD-urile? Multe DTD-uri se afl n domenii
publice sau sunt disponibile ca standarde de la ISO, ANSI sau de la alte organisme de
standardizare. Cteva dintre aplicaiile mai importante ale XML care se afirm n lumea de
azi sunt:
Health Level-7 (HL7), Standardul informatic de sntate (Health Informatics
Standard) a fost introdus n anul 1987 pentru a dezvolta standarde pentru schimbul electronic
de informaii clinice, financiare i administrative ntre sistemele de calcul din domeniul
sntii. HL7 s-a concentrat asupra utilizrii SGML i XML ca mecanisme de transport ntre
diferite sisteme informatice din domeniul sntii.
Real Estate Transaction Standard (RETS standardul de tranzacii imobiliare) este o
metod bazat pe XML pentru schimbul de informaii referitoare la tranzaciile imobiliare.
Un standard concurent este Real Estate Markup Language (RELML limbajul de marcare
pentru domeniul imobiliar) care utilizeaz DTD-urile XML pentru a prezenta listinguri cu
spaii pentru locuine, spaii comerciale i terenuri virane, pentru publicarea lor pe Web.
RosettaNet, limbajul comun pentru afaceri, este o iniiativ EDI/E-Commerce
destinat intermedierilor n domeniul calculatoarelor.
MathML i CML sunt dou standarde XML tiinifice care permit matematicienilor
s editeze ecuaii, iar chimitilor s prezinte formule chimice.
SMIL, the Synchronized Multimedia Integration Language (limbajul de integrare
multimedia sincronizat), este HyTime for Everyman (HyTime pentru fiecare), un limbaj de
marcare multimedia care permite furnizorilor de coninut s realizeze prezentri audio i
video complexe.
Pagina 78 din 97
CAPITOLUL V
PREZENTAREA APLICAIEI
ElectronX este o aplicaie e-commerce, un site web ce reprezint un magazin
virtual de electronice care se adreseaz tuturor persoanelor care doresc s achiziioneze
diverse produse, n cazul de fa electronice, prin intermediul internetului accesnd un
magazin virtual din confortul propriei locuine, comerul electronic mondial avnd o
dinamic ascendent pe msur ce tot mai muli consumatori i tot mai multe afaceri se
conecteaz la web, acest tip de comer ctignd din ce n ce mai mult teren i n Romnia.
Aplicaia se dorete a fi o unealt folositoare utilizatorilor, avndu-se n vedere
dezvoltarea interfeei pentru a fi user-friendly, dorindu-se a fi o aplicaie ct mai uor de
Pagina 79 din 97
folosit, eventualele neajunsuri i opinii putnd fi aduse la cunotina administratorului siteului prin adresele de e-mail puse la dispoziia utilizatorilor n pagina de contact.
Tehnologiile folosite pentru realizarea aplicaiei sunt PHP pentru generarea dinamic
paginilor XHTML i interogarea bazelor de date , i MySql pentru gestionarea bazelor de
date, totul rulnd pe suportul oferit de serverul Apache.
Realizarea acestui site presupune utilizarea unei baze de date care s conin att date
despre utilizatori ct i date despre produsele puse n vnzare i date despre comenzile
efectuate de ctre utilizatori. Baza de date va conine apte tabele cuprinznd informaiile
necesare bunei funcionri a aplicaiei.
5.1 Cerine hardware
Aplicaia nu necesit componente hardware performante.
Cerinele hardware pentru server sunt:
Procesor Pentium IV 2600 MHz
Memorie RAM 512 Mb
Hard Disk 120 Gb
Minimul cerinelor hardware pentru utilizatori consta in:
Procesor Pentium III (AMD Athlon), 800 MHz
Memorie RAM 128 Mb
5.2 Cerine software
Cerinele software pentru aplicaie sunt:
Pentru server:
Wampserver 5, versiunea 1.6.4
Un editor PHP
Pentru client:
Internet Explorer 5.0 si versiunile urmtoare sau Mozilla Firefox 1.0.7
5.3 Funcionalitile aplicaiei
La accesarea site-ului se va deschide pagina principal unde utilizatorul se va putea
autentifica prin intermediul unui nume de utilizator i a unei parole. Dac nu are cont i va
putea crea unul nou.
Dup autentificare utilizatorul poate s modifice datele personale sau parola
deschizndu-se un formular predefinit unde se pot efectua schimbrile dorite.
Utilizatorul poate s acceseze pagina de prezentare a produselor oferite de site de
unde i poate alege unul sau mai multe produse pentru a le cumpra. Produsele alese vor fi
Pagina 80 din 97
Pagina 81 din 97
Setare de baz
Setri extra
Cmp
id
int(11)
ul
D
NULL
Auto_increment primar
utilizator
char(60)
a
D
char(60)
a
D
char(30)
a
D
prenume
char(30)
a
D
cnp
varchar(13)
a
D
char(3)
a
D
varchar(50)
a
D
telefon
varchar(25)
a
D
adresa
varchar(255
a
D
sector
)
varchar(2)
a
D
varchar(10)
a
D
al
oras
char(30)
a
D
judet
varchar(25)
a
D
parola
nume
varsta
email
cod_post
Cheie
a
Itemi
Tip
Nul
Setare de baz
Setri extra
Cmp
item_id
cat_id
nume_item
Prt
int(11)
int(11)
varchar(75)
float(8,2)
Da
Da
Da
Da
NULL
Auto_increment Primara
-
Pagina 82 din 97
Cheie
descriere
imagine
varchar(200)
varchar(50)
Caracteristici Tip
Cmp
Id_item
producator
Model
Da
Da
Nul Setare de
Setri extra
Cheie
baz
int(11)
Da
varchar(25) Da
varchar(25) Da
Categorii
Tip
Cmp
cat_id
nume_cat
desc_cat
int(11)
Da
varchar(50) Da
varchar(200) Da
Co
Tip
Setri extra
Cmp
Id
Id_sesiune
Id_item_v
Cant
producator
Model
data_ad
int(11)
char(60)
int(11)
int(11)
varchar(25)
varchar(25)
datetime
Da
Da
Da
Da
Da
Da
Da
Auto_increment primara
-
Comenzi
Tip
Nul Setare de
Cmp
id_c
data_c
Nume_c
adresa
Oras
cod_postal
Judet
sector
valoare
mod_plata
Status
Int(11)
datetime
varchar(100)
varchar(255)
varchar(50)
varchar(10)
varchar(25)
varchar(2)
float(8,2)
varchar(20)
enum('procesata',
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
Da
NULL
Setri extra
Cheie
Auto_increment primar
-
NULL
baz
NULL
Cheie
Setri extra
Cheie
Auto_increment primara
-
'asteptare')
Itemi_comanda
Tip
Setri extra
Cheie
Cmp
Id
int(11)
Da
Auto_increment
primar
NULL
Pagina 83 din 97
Id_comanda
Id_item
Cant
producator
Model
Prt
int(11)
int(11)
int(11)
varchar(25)
varchar(25)
float(8,2)
Da
Da
Da
Da
Da
Da
Pagina 84 din 97
$_SESSION['email'] = $_POST['email'];
$_SESSION['telefon'] = $_POST['telefon'];
$_SESSION['adresa'] = $_POST['adresa'];
$_SESSION['sector'] = $_POST['sector'];
$_SESSION['cod_postal'] = $_POST['cod_postal'];
$_SESSION['oras'] = $_POST['oras'];
$_SESSION['judet'] = $_POST['judet'];
va
autentifica
apasati
<a
href=
"autentificare.php">
aici
</a>.</font></center>
</body>
</html>';
$cerereSQL = "INSERT INTO `utilizatori` (`utilizator`, `parola`, `nume`, `prenume`,
`cnp`,
`email`, `telefon`, `varsta`, `adresa`, `sector`, `cod_postal`, `oras`, `judet`)
VALUES ('".addentities($_SESSION['user'])."', ' " .md5($_SESSION['parola1'])." ',
'".addentities($_SESSION['nume'])."', '".addentities($_SESSION['prenume'])."',
'".addentities($_SESSION['cnp'])."', '".addentities($_SESSION['email'])."',
'".addentities($_SESSION['telefon'])."', '".addentities($_SESSION['varsta'])."',
'".addentities($_SESSION['adresa'])."', '".addentities($_SESSION['sector'])."',
'".addentities($_SESSION['cod_postal'])."', '".addentities($_SESSION['oras'])."',
'".addentities($_SESSION['judet'])."')";
mysql_query($cerereSQL);
Autentificare.php
Odat ce contul de utilizare a fost creat utilizatorul trebuie sa se autentifice pentru a
avea acces la paginile de administrare a contului personal, pentru a putea face comenzi. n
acest script se verific existena numelui de utilizator n baza de date i corectitudinea parolei,
i n caz de eroare, aceasta se semnaleaz. Autentificarea se realizeaz prin intermediul
sesiunilor, reinndu-se pentru fiecare utilizator o instan unic de sesiune.
$_SESSION['user'] = $_POST['user'];
if(($_POST['user'] == '') || ($_POST['parola'] == ''))
{
echo '<html>
<head></head>
<body text="#1A1A8C">
<br><br><center><font size=+1>Pentru a va accesa contul trebuie sa completati
casutele. <Br>
Pagina 86 din 97
"SELECT
FROM
`utilizatori`
WHERE
utilizator='
$item_id = $items[item_id];
$item_title = stripslashes($items[nume_item]);
$item_price = $items[pret];
$item_image = $items[imagine];
$display_block .= " <li>
<table border=1 width=50%>
<tr>
<th><a href=\"showitem.php?item_id=$item_id\"> $item_title</a></th>
</tr>
<tr>
<th height=180 width=180><img src=\"$item_image\" alt=\"poza\" border=0></th>
</tr>
<tr>
<th>$item_price RON (Pretul contine TVA)</th>
</tr>
<tr>
<th><a href=\"showitem.php?item_id=$item_id\"> Cumpara acest produs</a></th>
</tr>
</table><br>";
}
$display_block .= "</ul>";
}
}
}
}
Arataprodus.php
Pagina de afiare a produselor nu face dect sa afieze toate informaiile referitoare la
cte un produs. Aceste informaii sunt introduse automat ntr-un formular. n acest formular
utilizatorul mai poate s aleag numrul produselor pe care dorete s le comande i apoi
dac dorete s-l adauge la co trebuie s apese pe butonul Adaug la co.
Aratacos.php
Pagina 89 din 97
<a
href="comanda.php">aici</a>
anterioara.</h4></center>
</body>
Pagina 90 din 97
pentru
te
intoarce
la
pagina
</html>';
}
else
{
echo '<html>
<head></head>
<body text="#1A1A8C">
<center><h4>Va multumim. <br>
Comanda a fost trimisa cu succes. <br>
Inapoi la magazin <a href="seestore.php">aici</a>.</h4></center>
</body>
</html>';
$cerereSQL = "INSERT INTO `comenzi` (`data_c`, `nume_c`, `adresa`, `oras`,
`cod_postal`,
`judet`, `sector`, `valoare`, `mod_plata`, `status`)
VALUES (now(), '".addentities($_SESSION['user'])."',
'".addentities($_SESSION['adresa'])."', '".addentities($_SESSION['oras'])."',
'".addentities($_SESSION['cod_postal'])."', '".addentities($_SESSION['judet'])."',
'".addentities($_SESSION['sector'])."',
'".addentities($_SESSION['afis_price_prod'])."',
'".$_POST['plata']."', 'asteptare' )";
mysql_query($cerereSQL);
$cid=mysql_insert_id();
$cerereSQL1 = "SELECT cos.id_sesiune, cos.id_item_v, cos.cant, cos.producator,
cos.model, itemi.item_id, itemi.pret FROM cos left join itemi on cos.id_item_v =
itemi.item_id WHERE id_sesiune ='$_SESSION[user]'";
$rezultat1 = mysql_query($cerereSQL1);
while($rand1 = mysql_fetch_array($rezultat1))
{
$cidit=$rand1['id_item_v'];
$ccant=$rand1['cant'];
$cproducator=$rand1['producator'];
$cmodel=$rand1['model'];
$cpret=$rand1['pret'];
Pagina 91 din 97
$cerereSQL =
"insert
into
itemi_comanda
id_comanda,
id_item,
cant,
4. O seciune ce conine un top ale celor mai vndute cinci produse din magazin
Pentru crearea unui cont trebuie accesat link-ul de nregistrare i se va deschide o
pagina cu un formular de nscriere. Apoi utilizatorul va completa datele cerute i va apsa
butonul nregistreaz. Astfel se va crea un cont i se va confirma nregistrarea contului,
afindu-se i un link ctre pagina de autentificare. n cazul n care nu mai dorete nscrierea
va apsa butonul Reseteaz pentru a terge toate informaiile introduse.
La pagina de autentificare utilizatorul trebuie s introduc numele de utilizator
i parola. Dup aceasta trebuie s apese butonul Login i se va deschide pagina Contul meu
unde utilizatorul va putea modifica datele personale sau parola, va putea vizualiza
produ
sele, coul de cumprturi i va vizualiza comenzile efectuate de el anterior.
Pagina 93 din 97
Pagina 94 din 97
Produsele existente n co sunt afiate ntr-un tabel, pentru fiecare fiind afiate numele,
productorul, modelul, preul, cantitatea, preul total i un link pentru scoaterea produsului
respectiv din co. Pe pagin mai sunt afiate valoarea total a produselor adugate n co i
link-urile ctre pagina de afiare a produselor i ctre pagina de comand.
Pentru a comanda produsele din cont se apas butonul de comanda i se va deschide
pagina de comand n care sunt afiate numele, prenumele, CNP-ul utilizatorului, adresa,
oraul, judeul, aceste cmpuri putnd fi modificate de ctre utilizator dac acesta dorete
livrarea la alt adres i valoarea total a comenzii i apoi va apsa pe butonul Trimite
Comanda dup care utilizatorul va primi confirmarea nregistrrii comenzii.
Pagina 95 din 97
5.7 Concluzii
Odat cu nceputurile Internetului un nou tip de afacere s-a profilat din ce n ce mai
pronunat pe plan internaional: comerul online. Au aprut nenumrate site-uri i firme care
se ocup cu vnzrile en-gros de produse prin Internet, cu furnizarea accesului contracost la
pagini cu informaii, ntr-un cuvnt abordeaz o form sau alta de comer electronic, un
domeniu aflat n plin expansiune. Avantajul comerului online este evident: piaa pe Internet
crete exponenial de la un an la altul. Un site bine lucrat, cunoscut i care ofer produse de
calitate la preuri bune va avea mai muli vizitatori, mai motivai i mai nzestrai financiar
dect multe magazine convenionale.
Avnd n vedere proiectarea, implementarea i testarea acestui tip de aplicaii
resursele de hardware, software, de timp, cele umane i cele materiale sunt reduse, i n
acelai timp aceast aplicaie are un potenial mare de succes.
Aplicaia ElectronX are ca scop prezentarea unui model de magazin virtual care s
conin funcionalitile de baz specifice unei aplicaii de acest gen: gestionarea conturilor
unui utilizator, prezentarea categoriilor i produselor, cutarea n baza de date, adugarea
produselor ntr-un co de cumprturi, trimiterea comenzilor. Aceste funcionaliti pot fi
mbuntite i de asemenea pot fi adugate i altele att la nivelul aspectului interfeei ct i
la nivelul operaiilor ce pot fi efectuate astfel nct s asigure o funcionare optim a site-ului.
Pagina 96 din 97
Pagina 97 din 97