Se afișează postările cu eticheta web. Afișați toate postările
Se afișează postările cu eticheta web. Afișați toate postările

luni, 10 noiembrie 2008

Ce alegem SAX sau DOM?

In cele ce urmeaza voi incerca sa raspund la cateva intrebari care, sper eu, sa ne ajute sa intelegem mai multe lucruri despre DOM si SAX. So let’s begin:


De ce au fost construite ambele?

SAX(Simple API for XML) si DOM(Document Object Model) au fost ambele concepute cu scopul de a permite programatorilor sa-si “manevreze” informatiile fara a fi nevoie de scrierea unui parser in cadrul limbajelor de programare (ales de catre acestia). Avand informatiile in format XML si cu ajutorul api-urilor de la SAX sau DOM, programul este liber sa foloseasca ce parser vrea. Acest lucru este posibil doar daca asa numitii “scriitori de parser” implementeaza api-urile SAX/DOM in unul din mutiplele limbaje de programare care permite acest lucru: Java, C++, Perl, Python etc.

So, dupa cele spuse mai sus, ne putem da seama ca scopul celor doua este comun. Acum urmarind acelasi tel, fiecare in parte: SAX/DOM are caracteristicile sale.


Ce este DOM?

DOM-ul (Document Object Model) ofera accesul la informatiile stocate in documentul XML sub forma unui graf; astfel el creaza un arbore de noduri (bazat pe structura si continutul din XML) si accesarea la informatii se face prin “interactiunea” cu acest arbore. Textul din documentul XML este “transformat” in mai multe noduri. Desi DOM ne obliga intr-un fel sa folosim un modelul arborelui,XML se comporta foarte bine avand in vedere ca si el are o structura arborescenta. Astfel ca DOM poate stoca informatiile intr-un arbore indiferent de tipul acestora(tabele sau o simpla lista). In DOM, de fapt fiecare nod retine o alta lista de nodurii. Aceste noduri-copii pot contine valori sau pot fi alte referinte catre alte noduri. La prima vedere pare inutil accesul la o valoare a unui nod cautand in lista de copii ai nodului. Daca elementul nodului ar reprezenta doar o valoare atunci putem spune ca nu are rost aceasta cautare, dar de obicei elementele contin date text si alte elemente. Acum am ajuns la un aspect nu prea placut in ceea ce priveste DOM-ul si anume faptul ca necesita “extra work” doar pentru a accesa valoarea unui element dintr-un nod.


Ce este SAX?

Fata de DOM, SAX (Simple API for XML) ofera acces la informatiile din documentul XML prin intermediul unei secvente de evenimente. Cum poate fi acest lucru util? SAX nu a ales sa creeze un obiect Java (default) pe XML (cum a facut DOM) dar are nevoie de urmatoarele:crearea unui astfel de obiect propriu, cat si a unei clase care “asculta” evenimente SAX si care practic creeaza un model al obiectului. Acestea duc la un SAX cat mai rapid cu cat modelul obiectului este mai simplu bineinteles.

Acum sa vedem cam ce fel de evenimente sunt declansate de catre parser-ul SAX. Pentru fiecare tag deschis si inchis SAX produce un eveniment; de asemea dispune de “events” pentru sectiunile #PCDATA si CDATA. Ideea este ca handler-ul nostru trebuie sa interpreteze aceste evenimente cat mai bine posibil. In plus, SAX poate ajuta la convertirea datelor din formatul arborescent DOM in alt format mai comod, iar pentru parsare nu este necesar a se memora intreaga informatie XML ci numai partile dorite.


Care e legatura dintre DOM si SAX?

In momentul de fata, DOM si SAX sunt cele mai populare API-uri pentru manipularea documentelor XML. Dupa cum am vazut mai sus, cele doua difera in provenienta, scop, stil de programare si amandoua au atat puncte bune cat si puncte slabe. Cele mai importante diferente dintre cele doua sunt ca SAX prezinta documentul ca un “event stream” serial (o serie de apeluri la o functie handler, pe masura ce parti din sintaxa XML sunt recunoscute), si nu ca un arbore, cum o face DOM. Acesta este un dezavantaj din punct de vedere al abordarii deoarece SAX nu suporta random-access.

Totusi, in functie de ce vrei sa faci, SAX nu consuma intotdeauna mai putina memorie, plus ca implementarile DOM variaza in cerinta de memorie, cum variaza si in marime si performanta. Si am ajuns la urmatoarea curiozitate (sper):


Cum alegem intre evenimente SAX si DOM trees?

Daca intentionam sa folosim alt cod, script-uri, etc., sa modificam continutul documentului the wise choice ar fi DOM, fiind standardizat si complet. Pe de alta parte, daca avem nevoie sa procesam documentul in mod linear, fara a folosi scripturi si fara sa ai nevoie de informatie contextuala la fiecare etapa, SAX poate oferi o interfata mai ‘directa’. Destul de important e sa ne gandim de cat efort e nevoie sa implementam propriul model document (in loc sa folosim DOM) si cat si cum se va dezvolta aplicatia in viitor.

Si daca nu stii si nu stii cum sa te hotarasti pentru ca esti mai nedecis din fire… mai exista o alternativa si anume combinarea celor doua in acelasi sistem intrucat multe parsere pot produce output DOM si SAX; si exista multe aplicatii care le combina in diferite moduri.

duminică, 9 noiembrie 2008

Interfete evoluate

Interfete evoluate se refera (la tehnologiile folosite pentru realizarea paginilor web. Tehnologii precum: XML, DTD, XML Patterns, XML Schema, XHTML, CSS, XPATH, XQUERY, XML Programing (cum ar fi DOM si SAX), JavaScript, AJAX, XSL, WebML, Flex, XFORMS, RDF, OWL.

XML(eXtensible Markup Language) este un limbaj de structurare a datelor recomandat de W3C pentru a facilita transferul de date intre diverse aplicatii pe internet. Familia XML contine : XHTML, RDF, RSS, MathML, SVG, OWL.

DTD(Document Type Definition) este un limbaj folosit pentru a defini structura unui document XML. Odata definita structura fisierelor XML, vor putea fi validate utilizand DTD. Intr-un fisier DTD putem defini elemente XML, atribute sau restrictii simple referitoare la tipul sau cardinalitatea lor. Un DTD poate fi declarat ininteriorul documentului XML sau ca referinta externa.

XML Patterns
– un pattern, asa cum a fost descris de Christopher Alexander, este o regula cu trei parti care exprima o relatie intre un anumit context, o problema si o solutie. XML a trecut de la a fi o tehnologie obscura la una folosita zilnic de catre SW designeri, asa ca pattern-urile au devenit o metoda excelenta de a pasa cunostinte de la experti la novici. Sa proiectezi o structura XML buna folosind DTD, W3C XML Schema sau RelaxNG nu este chiar usor, asa ca refolosirea de solutii este esentiala.

XML Schema
sau XML Schema Definition (XSD) descrie structura unui document XML si este o alternativa la DTD.

XHTML
(eXtensible HyperText Markup Language) este un limbaj de programare care preia atat capabilitatile XML cat si HTML.

CSS
(Cascading Style Sheets) este un standard pentru formatarea unui document scris intr-un limbaj de marcare. Utilitatea cea mai des intalnita este folosiea unui CSS este pentru a aranja pagini scrise in HTML sau XHTML, dar poate fi aplicata oricarui tip de document XML, inclusiv SVG sau XUL.

XPATH
(XML Path Language) este un limbaj de expresii folosit pentru a accesa port,iuni dintr-un document XML.

XQUERY
este recomandat de W3C pentru a permite interogarea documentelor XML si extragerea unor componente din acestea.

DOM
(Document Object Model) este un standard W3C (World Wide Web Consortium), independent de platforma si de limbaj pentru reprezentarea unor formate HTML sau XML.

SAX
(Simple API for XML) este un API, similat cu DOM, facut sa citeasca si sa interpreteza fisiere XML. SAX nu este insa un standard W3C, ci mai degraba unul ad-hoc si este open-source.

JavaScript este un limbaj de programare pe obiecte bazat pe conceptul de prototipuri. Este folosit pentru a adauga noi funct,ionalitati in paginile web, codul Javascript din aceste pagini va fi rulat de catre IE/Firefox. Intre Java si JavaScript nu exista dincolo de nume nici o legatura. Browserele memoreaza o reprezentare a unei pagini web sub forma unui arbore de obiecte, pe care il pun la dispozit,ie script-urilor JavaScript, care le pot citi si interpreta. Arborele de obiecte este numit Document Object Model (vezi mai sus).

AJAX
(Asynchronous JavaScript and XML) este un set de tehnici de dezvoltare a aplicatii web, raspandit de Google. Cu AJAX o aplicatie poate accesa date in mod asincron in background fara a afecta datele afisate de pagina. In pofida numelui, nu este obligatorie utilizarea JavaScript si XML.

XSL
(Extensible Stylesheet Language) este o familie de limbaje de transformare, care iti permite sa formatezi si sa transformi o pagina codata in XML in alte formate cum ar fi HTML, XML, plain-text, sau PDF.

WebML
(Web Modeling Language) este o unealta grafica, UML pentru web, utila in cazul aplicatiilor foarte incarcate in date.

Adobe Flex
este o colectie de tehnologii lansate de Adobe Systems pentru dezvoltarea de aplicatii cross-platform bazat pe platforma Flash.

XFORMS
este un format XML pentru specificarea unor modele de procesare a datelor XML si a interfetei grafice pentru aceste date, cum ar fi web forms.

RDF
(Resource Description Framework) este un cadru pentru procesarea metadatelor, care trebuie sa fie utilizat ca o metoda generala de modelare a informatiei prin formate te sintaxa.

OWL
a fost creat pentru a oferi o metoda de procesare a continutul unei pagini web (nu doar afisare). OWL are trei sublimbaje:
  • OWL Lite
  • OWL DL (include OWL Lite)
  • OWL Full (include OWL DL)

Pe acest blog vom prezenta descrieri detaliate asupra acestor tehnologii, dar si al altora, care arata periplul echipei noastra prin universul interfetelor web.

miercuri, 5 noiembrie 2008

Hello World!

3...2...1... Pornim! Acesta este blog-ul ifaceWebber, o echipa de patru studenti care va produce diverse utilitare interesante din lumea interfetelor web. Blog-ul va prezenta diferitele stadii ale dezvoltarii utilitarelor. Acestea vor putea fi descarcate, gratuit si sub licenta LGPL de pe site-ul nostru principal http://ifacewebber.co.cc.

Echipa este formata din Andreea Serban, Mihnea Gheorghiu, Alexandru Petrencu si Teodor Stoenescu.

Deci nu uitati sa verificati periodic atat site-ul ifaceWebber pentru detaliile tehnice legate de proiecte, precum si blog-ul pentru a afla in ce stagii se afla proiectele, dificultatile pe care le-am intampinat sau orice altfel de noutati.