sâmbătă, 8 noiembrie 2008

[offtopic] La multi ani!

N-are legatura cu interfetele web, dar pentru ca 3/4 * interfetewebas sarbatoreste, ne-am gandit sa uram tuturor celor care poarta numele Mihai, Mihaela, Gabriel sau Gabriela un sincer La multi ani!

vineri, 7 noiembrie 2008

Pozitia site-ului pe google aceeasi cu pozitia blogului?!

Da, ce coincidenta... :)
Cautand "interfete web" pe www.google.ro veti gasi atat site-ul cat si blogul nostru pe pagina 4.
Super, nu?


Statistici ale site-ului promovat de blogul nostru

Statistica realizata de google pentru site-ul www.interfeteweb.as.ro:










Accesarea site-ului www.interfeteweb.as.ro

Suntem bucurosi sa aflam ca am fost accesati si din afara tarii:




Speram ca in viitorul apropiat sa fim accesati din cat mai multe orase ale tarii:

joi, 6 noiembrie 2008

Despre prima prezentare a site-ului & blogului

Nu o sa va plictisesc cu vreo descriere despre cum a decurs prima intalnire a site-ului nostru cu evaluarea sa.
Cred ca e mai interesant sa va uitati chiar voi la prezentare si sa va formati o idee...

prezentare etapa 1 proiect
View SlideShare presentation or Upload your own.

miercuri, 5 noiembrie 2008

Cafea cu aroma de interfete web

Cafeaua din pauza meciului si-a facut efectul.. Nu ca n-as adormi daca m-as culca, dar in zilele cand nu am baut cafea (adica pana ieri:D) nu puteam sta nici daca imi propuneam (nu pana la 3 cat e acu, dar nici pana la 12-1). Si da, stiu, la meci merge o bere, da' mie nu-mi place berea.. macar in cafea pun zahar..

Acu nu m-am culcat din cauza a unei teme. Nu reusesc sa-i dau de cap. In astfel de situatii in zilele fara cafea as fi adormit instant. Acu n-am adormit, in schimb am inceput sa ma gandesc la interfete evoluate:D

Mi-am ales materia asta pentru ca suna bine si pentru ca am auzit colegi (despre care stiu ca se informeaza inainte sa faca o alegere) ca e interesanta. N-am ajuns de prea multe ori la curs, dar proiectul asta m-a dat gata. N-am tinut niciodata jurnal (desi mi se parea dragutz sa scriu si eu "Dear diary" ca in manualele de engleza:D), n-am avut niciodata blog, nu m-au preocupat niciodata retelele sociale. Cand am primit prima data invitatie pe hi5 mi-am facut cont, am pus cateva poze si atat. Pe urma am ignorat invitatiile catre alte site-uri de gen. Dar recunosc, imi placea sa citesc blogurile unor colegi sau sa ma uit la pozele prietenilor:)

Poate e doar euforia de inceput, foc de paie, dar de cand am creat blogul asta si site-ul am intrat de n ori pe ele sa vad ce sa mai adaug, ce sa mai schimb, si am cautat de m ori pe gugal sa vad daca apare blogul sau site-ul. Poate e tragic ca zic asta in anu 5 la Calculatoare, dar credeam ca e mult mai complicat sa gaseasca gugal un site facut de mine.

Am impresia ca materia asta are sa-mi transmita o gramada de informatii, pe care insa le uit repede daca nu le folosesc si altfel decat la lab. In 4 laboratoare cat am facut pana acum am invatat despre XML, DTD, XHMTL, CSS, XPath, XQuery, DOM si SAX. Pana acum auzisem denumirile astea, dar nu stiam foarte bine ce sunt si la ce se folosesc. Pana la sfarsitul semestrului o sa mai invatam o gramada de alte tehnologii web.

Si astea nu sunt nimic fata de ce ne asteapta. Viitorul este al Internet-ului, si cu cat interfetele web sunt mai usor de folosit si ofera mai multe functionalitati, cu atat Internet-ul va deveni si mai aglomerat:)

DTD

DTD

Ce este DTD?

DTD = Document Type Definition
DTD specifica structura unui document XML si este primul limbaj aparut de acest gen.Un astfel de limbaj este necesar pentru a putea valida automat structura XML-urilor.

Daca fisierele XML au o strucutura anume se poate sa se:
• defineasca un standard pentru documentele XML – exemplu SVG (Scalable Vector Graphics) – limbaj prin care se pot defini grafice bidimensionale, se bazeaza pe XML şi este caracterizat de un fişier DTD. Toate aplicaţiile care crează fişiere SVG se bazează pe acelaşi fişier DTD şi implicit vor crea fişiere XML ce au aceeaşi structură

valideze fişierele XML primite –cand se primiteste un fisier se poate verifica usor cu ajutorul DTD-ului daca acesta respecta structura data; dar daca nu o respecta stim de la inceput ca nu vom avea sanse mari de a-l prelucra si extrage informatii folosind programe in acest gen

• incorporeze de catre fisierele XML, DTD-urile care ii definesc structura sau sa contina referinte catre acesteaCu ajutorul DTD-ului putem defini elemente, atribute, restrictii simple cu privire la numarul de aparitii ale elementelor si tipul lor. Asemanator cu DTD-ul a aparut mai nou si XML Schema care permite sa fie definite niste constrangeri mai avansate si care foloseste acelasi limbaj ca si un XML, nu are propria lui sintaxa ca DTD-ul.

Sintaxa
In cazul in care fişierul DTD este conţinut în fişierul XML :

sau într-un fişier extern:

Unde:
• “element_rădăcină” = elementul rădăcină al fişierului XML.
• SYSTEM (cuvât cheie)= se foloseste daca fişierul XML contine referinte catre .dtd si amandoua fisierele se gasesc pe acelasi calculator (system)
• PUBLIC se foloseşte când .dtd se află la o adresă externă şi este urmat de FPI (Formal Public Identifier) – un string care identifică în mod unic un DTD (Exemplu de FPI: "-//W3C//DTD HTML 4.01 Transitional//EN" – DTD pentru HTML).
• URL=URL-ul local sau extern unde poate fi găsit fişierul .dtd. Sintaxa pentru a defini structura unui element este următoarea:

Tipul poate fi :
• EMPTY daca avem elemente vide
• ANY în cazul elementelor ce pot avea orice structură.

Cand elementul nu se afla in nici unul din tipurile prezentate anterior atunci el poate contine text:(#PCDATA – parsed character data) şi poate avea alte elemente copii. Elementele de tip copii sunt separate prin virgulă şi pot fi urmate de următorii descriptori( e = element:):
• - :e apare de 0 sau n-ori
• + :e apare de 1 sau n-ori
• ? :e apare de 0 sau 1 ori
• e1|e2 :apare e1 sau e2
Ex.
Pentru elementul ’Om’ putem scrie structura:
&ls !ELEMENT Om (nume, prenume, cnp, copil*, casatorit_cu?, (M|F), parinte+) &gt

Pentru definirea atributelor putem scrie structura:

&ls !ATTLIST element atribut tip valoare_implicită &gt
 Unde:

- ’element’ = elementul al cărui atribut îl definim

- ’atribut’ = atributul pe care îl definim
- ’tip’ poate fi:
1)      ID – valoarea atributului reprezintă un ID unic
2)      IDREF – valoarea atributului referă un ID unic
3)      IDREFS – atributul are ca valoare o lista de ID-uri
4)      CDATA – character data – text ce nu va fi parsat de parserul XML
5)       (val1|val2|..|valn) – atributul are valorile cuprinse în lista de valori val1...valn

6) Valoarea implicită pentru atribut poate fi:

- Valoare – valoarea efectiva

- #FIXED V – are mereu valoarea ‘V’

- #IMPLIED – poate lipsi

- #REQUIRED –trebuie să se găsească întotdeauna în documentul XML

În fişiere DTD se pot defini entităţi.
Entităţile
=prescurtări ale unor structuri de text ce apar mai des în fişierul XML.

Ex.
&ls !ENTITY CS “Computer Science” &gt

- se defineşte entitatea cu numele “CS” ce prescurtează denumirea “Computer Science”.

Fisierul XML poate contine:

&ls profil &gt &CS &ls /profil &gt

Înaintea entităţii se foloseşte „&” şi după aceasta se foloseşte „;”.




marți, 4 noiembrie 2008

Ce este XML? Scurta descriere.

XML este un format de fisier asemanator cu Microsoft Word sau un fisier Adobe Acrobat, o foaie de calcul tabelar sau o pagina online HTML. Oricum are proprietati diferite de acestea si anume:
• standardul XML nu este controlat de o singura organizatie; este un ‘open’ standard la care oricine poate contribui sau folosi;
• din punct de vedere ethnic, fisierle XML nu sunt salvate ca date ‘binare’ ci mai degraba ca plain text. Asta inseamna ca sunt indepente de platforma si pot fi citite de oameni

• fisierele XML nu au o structura specifica, insa folosesc un set de reguli de baza ( dar stricte) . Astfel se pot reprezenta prin fisiere XML multe tipuri de date si informatii de la documente pana la fisiere cu imagini si tranzactii financiare.
• Regulile XML pot fi folosite sa restrictioneze structura tipurilor de date – deci pot fi create noi standarde. Structura este de tipul self- descriptive si fiecarei date ii este asociat un ‘tag’ pentru a o descrie intr-un fel. Acest lucru permite ca fisierele sa poate fi validate de un calculator , dar chiar si de oameni pana la un anumit nivel.
Ce e important e ca, definind reguli stricte dar neimpunand restrictii asupra structurii, se pot dezvolta formate ‘standard XML’ (numite Schemas) care sa reprezinte un tip particular de date. Exista “Standard XML schemas” pentru multe tipuri de informatii de la tranzactii de vanzari in business pana la formatarea stirilor.
Desi XML este un standard (adica exista reguli pentru a creea aceste fisiere) totusi pot aparea probleme, intrucat se pot crea structuri atat de diferite si totusi similare folosind descrieri cu XML schema. Acest lucru a reprezentat la inceput o mare problema, dar acum organizatiile incep sa colaboreze (multe prin intermediul W3C) pentru a dezvolta si promova un singur standard XML pentru fiecare domeniu cu probleme.
Pentru procesarea fisierelor XML :
Sunt trei tehnici tradionale de a procesa fisierele XML si anume:
• folosind un limbaj de programare si API-ul SAX
• folosind un limbaj de programare si API-ul DOM
• folosind un motor de tranformare si un filtru

Rezolvarea Laborator interfete evaluate; exemplu de folosire XML + DTD:

Enunt:

1. sa se creeze un fisier XML care sa descrie profilul unei persoane (date de identificare, educatie, joburi, relatii sociale). Relatiile sociale sunt descrise prin referinte catre alte profiluri similare. Se va discuta structura documentului si utilizarea sabloanelor prezentate.
2. folosind un document XML model si un DTD generat automat se cere sa se corecteze DTD-ul





Publicat de Mihaela

Cateva cuvinte si despre XHTML & CSS

Aceasta postare are ca scop o scurta descriere a conceptelor enumerate in titlu.
Pentru inceput voi prezenta cateva informatii legate de XHTML, urmand sa continui cu introducerea in lumea fascinanta a CSS-ului.

Conceptul XHTML
constituie prescurtarea notiunii Extensible Hypertext Markup Language si reprezinta un limbaj de structurare a datelor, cu alte cuvinte se poate spune ca este o reformulare a limbajului HTML, adaugand constrangeri la sintaxa HTML.

In comparatie cu limbajul HTML care este o aplicatie SGML, XHTML constituie o aplicatie XML, mult mai riguroasa, cu o structura bine definita si cu mai multe constrangeri.Documentele XHTML sunt bine formate si de aceea permit procesarea automata de catre ustensilele XML.

Caracteristicile limbajului XHTML sunt descrise de urmatoarele afirmatii:
- limbajul este case sensitive, astfel daca veti incerca sa scrieti numele elementelor cu majuscule nu veti avea ca rezultat un XHTML valid;
- daca tag-urile nu se vor inchide corect atunci va exista o problema, de aceea trebuie sa fim atenti la imbricarea acestora (trebuie inchise chiar si tag-urile goale)
- exista posibilitatea de a crea elemente cu un continut vid, fara nici un fel de eroare;
- o greseala frecventa reprezinta scrierea valorilor atributelor fara ghilimele;
- obligatoriu trebuie sa introducem elementele head,body si title;

Fiecare document XHTML va contine declaratia tipului sau, o declaratie DOCTYPE.
Astfel se poate realiza o clasificare a documentelor in functie de tipul lor, cu propriul DTD:
XHTML 1.0 Strict - echivalent cu strict HTML 4.01 si include elemente si atribute care au fost dezaprobate in HTML 4.01.
XHTML 1.0 Transitional - echivalent cu HTML 4.01 Transitional si include prezentarea elementelor precum “center”, “font” si “strike”
XHTML 1.0 Frameset - echivalent cu HTML 4.01 Frameset si permite definirea “frameset documents”

Observatie
Documentele XHTML pot fi text/html, text/xml, aplication/xml sau application/xhtml+xml.

Concluzie
Scopul folosirii XHTML-ului este acela de a inlocui limbajul clasic HTML, de a schimba tehnologia folosita cu una mai performanta, realizand un pas important in dezvoltarea web-ului, in plus fiind sustinut de catre organizatia W3C.

De retinut

XHTML = HTML scris cu reguli XML

Utile

Exista diferite site-uri unde se poate testa valabilitate XHTML-urilor, dintre care mentionez doua:
http://validator.w3.org/
http://www.validome.org/

Pentru o mai buna intelegere a regulilor XHTML si a diferentelor fata de HTML, vizualizati clipul urmator si accesati linkurile de mai jos:




http://en.wikipedia.org/wiki/XHTML
http://www.youtube.com/watch?v=gVmcvU1tWVY


Conceptul CSS sau Cascading Style Sheets se refera la modul in care elementele din HTML sunt afisate, in alta ordine de idei este un limbaj de formatare care ne poate usura munca (sau nu). :)

Deoarece exista mai multe nivele de prioritate a stilurilor, este necesar sa tinem cont de ele, deci prin urmare sa le cunoastem. Astfel primul nivel ii apartine browser-ului (stilul implicit), pe urmatorul nivel se intalneste stilul descris in fisierul cu extensia css, apoi nivelul 3 contine stilul din interiorul paginii, adaugat in zona de head ,pentru ca ultimul nivel sa descrie stilul din cadrul elementului.

In ceea ce priveste sintaxa CSS-ului se poate spune doua cuvinte: “foarte simpla” si acest lucru datorita faptului ca este formata din 3 elemente: selector, proprietate si valoare , sub forma unui tuplu => selector{proprietate:valoare}

Exemplu: h1{color:yellow}

Se pot definii mai multe stiluri pentru un element sau un stil pentru mai multe elemente.
Exemplu1:
h1.yellow{color:yellow}
h1.blue{color:blue}
"< class="”yellow”"> soare < /h1>
< class="”blue”"> cer < /h1> "
Exemplu2:
.center{text:align:center}
“< class="”center”"> titlu”

Informatia continuta de CSS poate fi accesata prin diferite surse, de exemplu aceasta fi atasata printr-un fisier extern sau introdusa direct in documentul HTML
CSS are diferite nivele si profile: CSS1 (publicat in decembrie 1996), CSS2 (publicat in mai 1998) si CCS3 (urmeaza a fi publicat)

Observatie

In cazul acestui limbaj, browser-ul este tolerant,astfel in momentul in care unele elemente sunt incorecte, se ignora si se continua cu urmatoarele elemente.
Din aceasta cauza probabil ca nu exista nici o unealta care sa valideze CSS-urile.

Browser-ele cu o versiune mai veche vor interpreta diferit CSS-urile, acest lucru devenind un dezavantaj al acestor limbaje de formatare.

Concluzie

Limbajul CSS este usor de folosit ,totodata avand un impact mare asupra formatarii documentului, prin stilurile definite.

De retinut

Acest limbaj de formatare este foarte util si frecvent folosit in crearea si modificarea site-urilor cu o complexitate mare.

Utile

Pentru mai multe informatii accesati:
http://en.wikipedia.org/wiki/Cascading_Style_Sheets
http://www.youtube.com/watch?v=PHt5wsva32A

luni, 3 noiembrie 2008

XPATH & XQUERY

Atat XPath, cat si XQuery, sunt standarde/limbaje care permit accesarea datelor dorite din interiorul fisierelor xml, fiecare folosind o sintaxa proprie, dupa cum urmeaza:

XPath este un „limbaj” ce permite regasirea unor parti dintr-un fisier XML precum si „navigarea” prin fisiere XML. Documentele XML au o structura arborescenta, datorita relatiei „tata-fiu” a nodurilor din acel document, ceea ce permite limbajului XPath sa poata sa acceseze diferite elemente din cadrul documentelor XML. Acesta este si scopul principal al acestui limbaj. Pentru a permite accesarea diferitelor elemente ale documentului XML, XPath foloseste o sintaxa foarte asemanatoare cu cea utilizata pentru accesarea fisierelor intr-un sistem de fisiere UNIX (ex: „/grupa/studenti/student/nume” pentru fisierul XML de mai jos). XPath nu respecta structura documentelor XML (nu este un fisier XML).
Numele limbajului se trage de la faptul ca utilizeaza „cai” (PATHS) pentru identificarea elementelor XML.

XQuery este o recomandare W3C si a fost creat pentru a permite interogarea documentelor XML si extragerea unor componente ale acestora (elemente sau atribute). Cea mai buna definire a XQuery este obtinuta prin analogia cu SQL. Astfel, XQuery este pentru XML ceea ce este SQL pentru bazele de date. Acest limbaj se bazeaza pe XPath, cele doua limbaje folosind acelasi model al datelor si suportand aceiasi operatori si aceleasi functii. XQuery este suportat de catre toate motoarele mari ce actioneaza pe baze de date (IBM, Oracle, Microsoft, etc.)



1. Sintaxa

In cadrul XPath exista sapte tipuri de noduri: element (nodurile documentului), atribut (asociat unui nod), text, namespace, instructiuni de procesare, comentariu si radacina documentului (root). Datorita structurii arborescente a documentelor XML, intre nodurile acestuia se stabilesc relatii de rudenie (ex: parinte, copil, urmas, etc.).
Selectarea unui nod se face prin urmarea unei cai XPath. Aceste cai pot fi absolute si atunci incep cu „/” sau pot fi relative si atunci NU incep cu „/”. In primul caz, calea catre destinatie porneste din radacina documentului, iar in cel de-al doilea, calea porneste din nodul curent.
Pentru selectarea nodurilor dorite se folosesc urmatoarele elemente de sintaxa:
- [cond] - conditia de selectie
- * - toate nodurile
- @att - specifica ca att este un atribut al nodului
- text() - copiii de tip text ai nodului curent
- node() - copiii de tip nod ai nodului curent
- . - nodul curent
- .. - nodul parinte
- / - nodul radacina
- // - nodul radacina si toti descendentii sai

XQuery
Cateva notiuni de baza ale sintaxei:
• XQuery este un limbaj case-sensitive
• Elementele, atributele si variabilele XQuery trebuiesc sa fie nume XML valide
• Valorile XQuery trebuiesc puse fie intre ghilimele, fie intre apostrofuri
• O variabila XQuery se defineste folosind $NUME, unde NUME este numele variabilei respective (ex: $doc)
• Comentariile XQuery sunt delimitate de (: si de :)

Expresiile XQuery au o structura de FLWOR, care este un acronim pentru „For, Let, Where, Order by, Return”. Aceasta structura extrage niste noduri din fisierul XML, aplica un predicat pentru a elimina din nodurile selectate, iar apoi construieste un rezultat.
Instructiunile FOR si LET genereaza o lista de noduri extrase din document, mentinand ordinea acestora. Aceasta instructiune este similara cu FROM dintr-un query SQL. Diferenta dintre cele doua instructiuni este faptul ca in cazul instructiunii FOR, variabila var se leaga pe rand la fiecare element din expresia expr, facand posibila iterarea, in timp ce in cazul instructiunii LET, variabila var se leaga la intreaga lista definita de expresia expr, returnand o singura valoare.
Instructiunea ORDER BY defineste ordinea in care sunt considerate elementele extrase de FOR sau LET in cazul in care nu se doreste ordinea in care au fost acestea in documentul XML.
Instructiunea WHERE aplica un predicat (una sau mai multe restrictii) eliminand unele din nodurile extrase de catre FOR sau LET. Aceasta instructiune este echivalentul expresiei WHERE dintr-un query SQL.
Instructiunea RETURN este aplicata asupra fiecarui nod care respecta conditiile impuse prin instructiunea WHERE si seteaza modul de prezentare a rezultatelor obtinute, generand o lista ordonata de noduri la iesire. Aceasta instructiune este echivalentul expresiei RETURN dintr-un query SQL.


2. Exemple

XPath
Comenzi pentru selectarea:
- tuturor nodurilor din xml: /*
- tuturore atributelor din documentul xml: //@*
- tuturor elementelor care au atributul "id" si sunt descendenti ai elementului elem: /elem//*[@id]
- toate elementele care au id-ul > 1000: //*[@id>1000]
- numele tuturor studentilor: //student/nume
- numele celui de-al doilea student: //student[position()=2]/nume
- elementul nume al studentului cu atributul id 1212: //student[@id=1212]/nume
- studentul al carui nume este Popescu: //student[nume="Popescu"]
- sa se returneze primul element student si advisorul lui: //student[1] | //advisor
- din ce grupa face parte studentul cu numele Popescu: /grupa[studenti/student/nume="Popescu"]

XQuery

Scrieti un Xquery care sa returneze titlul si anul aparitiei cartilor care nu sunt publicate de catre Addison-Wesley.
for $a in doc("../XMP/bib.xml")//book
where $a/publisher != "Addison-Wesley"
order by $a/@year
return
{rezultat}
{$a/@year} {$a/title}
{/rezultat}

Scrieti un Xquery care sa returneze titlul si autorii cartilor cu mai mult de 2 autori
for $a in doc("../XMP/bib.xml")//book
where $a/author[1] != $a/author[position()=last()]
order by $a/title
return
{rezultat}
{$a/title} {$a/author}
{/rezultat}

Scrieti un Xquery care sa returneze titlul, autorii, pretul si reviewurile cartilor ce sunt prezente in librarie si pentru care exista reviewuri.
for $a in doc("../XMP/bib.xml")//book,
$b in doc("../XMP/reviews.xml")//entry
where $a/title = $b/title
order by $a/title
return
{rezultat}
{$a/title} {$a/author} {$a/price} {$b/review}
{/rezultat}


3. Cazuri de utilizare:

XPath este utilizat in orice aplicatie care doreste sa lucreze cu elementele unui fisier XML. In limbaje ca XSLT este folosit pentru a naviga prin document si pentru a identifica diferitele elemente din cadrul acestuia pentru a putea fi prelucrate, iar in limbaje ca XQuery este folosit pentru a identifica si a returna diferite componente ale documentului XML. De asemenea este folosit si de catre XLink si XPointer precum si de catre parsere ca XML DOM sau SAX.

XQuery
• Rezultatele care se obtin in urma aplicarii unei expresii XQuery pot fi sortate in functie de unul din elemente
• In cazul in care nu se doreste ca expresia XQuery sa intoarca un nod, ci se doreste sa se intoarca un text, aceasta se poate realiza folosind instructiunea text()
• Daca se doreste ca rezultatul obtinut sa fie un document valid XML sau HTML, aceasta se poate realiza incadrand continutul expresiei XQuery in elementul care se doreste, punand continutul acesteia intre acolade ({})


4. Concluzii

Xpath este un limbaj folosit pentru navigarea prin documentele XML si pentru identificarea si accesarea diferitelor elemente si atribute ale acestuia. Cu ajutorul acestui limbaj se pot regasi foarte usor informatii intr-un document XML. Acest limbaj este extreme de important, el stand la baza altor limbaje, cum ar fi XSLT, XQuery, XLink si XPointer. De asemenea, parserele de XML sunt construite tot pe baza acestui limbaj.

XQuery este un limbaj ce poate fi utilizat pentru extragerea de informatii din documentele XML, generarea de rapoarte, transformarea documentelor XML in XHTML si cautarea in documentele Web a unor informatii relevante. XQuery este compatibil cu diverse standarde W3C, cum ar fi XML, Namespaces, XSLT, XPath, si XML Schema.

duminică, 2 noiembrie 2008

DOM vs SAX

Pentru a retine informatii in mod organizat si interpretabil de catre o masina a fost creat limbajul XML: datele sunt impartite in elemente de informatii, fiecare element fiind incadrat de un tag pentru a fi delimitat de celelalte elemente. Insa nu este de ajuns sa facem arhive cu tot soiul de informatii: memoram respectivele date pentru ca mai avem nevoie de ele si alta data. Pentru a le refolosi trebuie sa le extragem din fisierele XML; acest lucru se realizeaza parsand aceste fisiere, adica extragand informatia utila dintre tag-uri. Cum parsarea presupune rescrierea aceluiasi cod, in ajutorul nostru vin parserele: ele ne ofera o serie de functii cu care extragem elementele si atributele care ne intereseaza.


Doua dintre cele mai folosite parsere de XML sunt DOM si SAX. Desi in final ele realizeaza acelasi lucru (extragerea informatiei dorite), exista deosebiri fundamentale intre cele 2 parsere:


    • DOM (Document Object Model) este bazat pe organizarea documentului sub forma de arbore (de aici si denumirea: din fisierul XML este creat un document modelat dupa forma unui arbore)

      - avantaj: avem modelul deja creat
      - dezavantaj: modelul de arbore poate fi prea complex pentru ce avem nevoie

    • SAX (Simple API for Xml) este bazat pe evenimente: la aparitia tag-ului specificat se declanseaza un eveniment (se executa o metoda desemnata anterior)

      - avantaj: ne putem crea propriul model de document, care poate fi mai simplu decat un arbore
      - dezavantaj: nu putem sti intotdeauna ce vrem sa facem de la prima aparitie a elementului




    • DOM incarca tot fisierul XML in memorie si apoi se plimba prin el

      - avantaj: se poate trece de mai multe ori prin fisier
      - dezavantaj: - se consuma multa memorie, existand posibilitatea sa nu ajunga toata memoria in cazul fisierelor XML mari
      - parsarea dureaza mai mult

    • SAX parseaza fisierul XML pe masura ce vine

      - avantaj: - consum mic de memorie
      - mai rapid
      - dezavantaj: nu ma pot intoarce la informatia deja citita




    • DOM ofera o interfata catre fisierele XML de nivel ridicat

    • SAX ofera acces la fisierele XML la un nivel mai coborat




    • DOM este un standard W3C

    • SAX nu este un standard


In concluzie, DOM este un parser mai complex, care face toata treaba in locul nostru: citeste fisierul XML, creeaza un obiect din acest fisier si ne da o referinta catre acest obiect (un document), pe care putem apoi sa il manipulam dupa cum dorim. SAX in schimb nu face altceva decat sa detecteze prezenta unui anumit tag, in acest caz declansand un eveniment; noi suntem responsabili de interpretarea acestor evenimente, prin crearea unei clasa care sa trateze evenimentele.


Cand utilizam DOM si cand utilizam SAX?



Pe baza celor descrise mai sus voi exemplifica utilizarea unuia sau altuia dintre parsere. Sa presupunem ca avem reprezentate intr-un fisier XML datele despre studentii unei facultati: data personale si situatia scolara. Mai presupunem ca facultatea acorda burse tuturor studentilor cu medii mai mari de 8,50. In acest caz, pentru a afla studentii care primesc bursa este de ajuns sa folosim SAX. Daca insa bursele se acorda pentru un numar fix de studenti, in ordine descrescatoare a mediilor, avem nevoie de DOM, intrucat nu putem sti dintr-o singura parcurgere care student poate primi bursa.