SlideShare a Scribd company logo
1 of 106
Download to read offline
Dr.SabinBuragawww.purl.org/net/busaco
Tehnologii Web
procesarea datelor XML (I)
ⵄDOM (Document Object Model)
Dr.SabinBuragawww.purl.org/net/busaco
„Regula de aur este că nu există reguli de aur.”
George Bernard Show
Dr.SabinBuragawww.purl.org/net/busaco
Cum putem prelucra documentele XML?
Dr.SabinBuragawww.purl.org/net/busaco
Tipuri de procesări XML
procesare manuală
e.g., expresii regulate 
Dr.SabinBuragawww.purl.org/net/busaco
Tipuri de procesări XML
procesare obiectuală
DOM (Document Object Model)
non-DOM
Dr.SabinBuragawww.purl.org/net/busaco
Tipuri de procesări XML
procesare condusă de evenimente
SAX (Simple API for XML)
XPP (XML Pull Parsing)
vezi cursul viitor
Dr.SabinBuragawww.purl.org/net/busaco
Tipuri de procesări XML
procesare simplificată
Simple XML
vezi cursul viitor
Dr.SabinBuragawww.purl.org/net/busaco
Tipuri de procesări XML
procesare particulară
via API-uri specializate pentru a prelucra
tipuri de documente specifice – e.g., RSS, SOAP, SVG,…
Dr.SabinBuragawww.purl.org/net/busaco
Procesoare (analizoare) XML
fără validare
verifică doar dacă documentul
este bine-formatat (well formed)
Expat, libxml, MSXML,...
Dr.SabinBuragawww.purl.org/net/busaco
Procesoare (analizoare) XML
cu validare
verifică dacă documentul este valid,
conform unei metode de validare – e.g., DTD
Apache Xerces, JAXP, libxml, MSXML,...
Dr.SabinBuragawww.purl.org/net/busaco
Modelul DOM
introducere
interfețe DOM
DOM Core
DOM – nivelul 2
DOM – nivelul 3
DOM – nivelul 4
implementări
DOM direct în navigator
Dr.SabinBuragawww.purl.org/net/busaco
dom: intro
Scop:
procesarea obiectuală – standardizată –
a documentelor XML și/sau HTML
Dr.SabinBuragawww.purl.org/net/busaco
dom: caracterizare
Interfață de programare a aplicațiilor (API)
abstractă pentru XML/HTML
Dr.SabinBuragawww.purl.org/net/busaco
dom: caracterizare
Interfață de programare a aplicațiilor (API)
abstractă pentru XML/HTML
independentă de platformă și limbaj
standardizată de Consorțiul Web
Dr.SabinBuragawww.purl.org/net/busaco
dom: caracterizare
Definește o structură logică arborescentă
a documentelor XML
document = ierarhie a unui set de obiecte
Dr.SabinBuragawww.purl.org/net/busaco
dom: niveluri de specificare
DOM 1 (1998)
http://www.w3.org/TR/REC-DOM-Level-1/
DOM Core pentru XML
DOM HTML pentru procesarea standardizată
a paginilor Web – uzual, la nivel de client (browser)
Dr.SabinBuragawww.purl.org/net/busaco
dom: niveluri de specificare
DOM 2 (2001)
http://www.w3.org/TR/REC-DOM-Level-2/
recomandări multiple privind diverse funcționalități:
spații de nume, aplicare de stiluri,
răspuns la evenimente etc.
Dr.SabinBuragawww.purl.org/net/busaco
dom: niveluri de specificare
DOM 3 (2004)
http://www.w3.org/TR/DOM-Level-3-Core/
funcționalități specifice oferite de module
(unele deja standardizate)
XPath, traversare, validare,
încărcare și salvare (asincrone),…
Dr.SabinBuragawww.purl.org/net/busaco
dom: niveluri de specificare
DOM 4 (2015)
http://www.w3.org/TR/dom/
restructurarea unor interfețe + noi funcționalități
Dr.SabinBuragawww.purl.org/net/busaco
dom: niveluri de specificare
DOM Living Standard
http://dom.spec.whatwg.org/
specific HTML5
în continuă dezvoltare
(cea mai recentă actualizare: aprilie 2016)
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe
Modalitate abstractă de accesare și de modificare
a reprezentării interne a unui document XML
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe
Modalitate abstractă de accesare și de modificare
a reprezentării interne a unui document XML
datele sunt încapsulate în obiecte, ascunse și/sau
protejate de prelucrarea externă directă
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe
Nu implică o implementare concreta, particulară:
DOM oferă interfețe
independente de implementare pentru
accesarea/procesarea datelor
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe
Interfețele sunt specificate cu
IDL (Interface Description Language)
introdus în premieră de CORBA
(Common Object Request Broker Architecture)
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe – IDL
Definește tipurile de obiecte
prin specificarea interfețelor acestora
(date membre + metode publice)
pur declarativ
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe – IDL
Oferă suport pentru moștenire multiplă
prin intermediul interfețelor
specifică module, interfețe, metode, tipuri,
atribute, excepții, constante
www.w3.org/TR/WebIDL/ (2012)
http://heycam.github.io/webidl/ (2016)
Dr.SabinBuragawww.purl.org/net/busaco
tipuri de date
IDL
valori de
bază
întregi
Short
UShort
Long
ULong
reale
Float
Double
altele
Boolean
Char
String
Enum
valori
construite
Struct
Sequence
Union
Any
referință
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe – exemplu
Specificarea interfeței NodeList
interface NodeList {
Node item (in unsigned long index);
readonly attribute unsigned long length;
};
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe – exemplu
Specificarea interfeței NodeList
interface NodeList {
Node item (in unsigned long index);
readonly attribute unsigned long length;
};
metodă cu un parametru;
rezultat: o valoare de tip Node
proprietate read-only
de tip întreg lung fără semn
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe – exemplu
Specificarea interfeței Attr
interface Attr : Node {
readonly attribute DOMString name;
readonly attribute boolean specified;
attribute DOMString value;
};
Dr.SabinBuragawww.purl.org/net/busaco
dom: interfețe – exemplu
Specificarea interfeței Attr
interface Attr : Node {
readonly attribute DOMString name;
readonly attribute boolean specified;
attribute DOMString value;
};
Attr provine din Node
3 proprietăți
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Un document  ierarhie de obiecte-nod
care pot implementa interfețe (specializate)
nodurile posedă descendenți ori sunt noduri frunză
parcurgerea arborelui se realizează
în preordine, în adâncime (depth-first)
a se (re)vedea
XML Infoset
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
un document HTML și arborele DOM corespunzător
reprezentat via Live DOM Viewer
http://software.hixie.ch/utilities/js/live-dom-viewer/
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Accesul la date
– liste de noduri, atribute, valori,… –
se realizează recurgându-se la metodele specifice
fiecărui tip de noduri ale arborelui
Dr.SabinBuragawww.purl.org/net/busaco
Document
Element, ProcessingInstruction,
Comment, DocumentType
Document
Fragment
Element, ProcessingInstruction,
Comment, Text, CDATASection,…
Element
Element, Text, Comment,
CDATASection, EntityReference,…
Attr Text, EntityReference
Text
–
(nod frunză al arborelui DOM)
dom: core – tipuri de noduri
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
DOMException
gestionează setul de excepții de procesare
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
DOMImplementation
furnizează detalii despre implementarea curentă
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
DocumentFragment : Node
acces la fragmente de arbore
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Document
oferă acces la document
pentru consultare și/sau modificare
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Document
proprietăți
doctype, implementation, documentElement
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Document
proprietăți
doctype, implementation, documentElement
acces la
elementul-rădăcină
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Document
metode createElement(), createTextNode(),
createAttribute(), getElementsByTagName(),
getElementById(),
createElementNS(), importNode(),
getElementsByTagNameNS(), renameNode() etc.
DOM 2 DOM 3
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Node
acces la nodurile arborelui
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Node
proprietăți nodeName, nodeValue
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Node
metode getNodeType(), insertBefore(),
appendChild(), replaceChild(), removeChild(),
cloneChild(), hasChildNodes(),
hasAttributes(), isSameNode()
DOM 2 DOM 3
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Element
oferă acces la elementele XML
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Element
proprietatea tagName
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Element
metode getAttribute(), getAttributeNode(),
setAttributeNode(), removeAttributeNode(),
hasAttribute(), hasAttributeNS(),…
DOM 2
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
Attr : Node
acces la atributele unui element
Dr.SabinBuragawww.purl.org/net/busaco
dom: core
Interfețe fundamentale:
NodeList
NamedNodeMap
permit accesul la colecții de noduri
via indecși ori chei
Dr.SabinBuragawww.purl.org/net/busaco
dom: html
DOM HTML extinde DOM Core
specializarea interfețelor și oferirea de suport obiectual
pentru prelucrarea documentelor HTML
standardizează procesarea paginilor Web
(e.g., în cadrul navigatorului)
Dr.SabinBuragawww.purl.org/net/busaco
interface HTMLDocument : Document {
attribute DOMString title; // titlul documentului
readonly attribute DOMString referrer; // adresa resursei ce referă pagina
readonly attribute DOMString domain; // domeniul de care aparține
readonly attribute DOMString URL; // URL-ul absolut al documentului
attribute HTMLElement body; // acces la elementul <body>
readonly attribute HTMLCollection images; // lista tuturor imaginilor
readonly attribute HTMLCollection links; // lista tuturor legăturilor
readonly attribute HTMLCollection forms; // lista tuturor formularelor
attribute DOMString cookie; // acces la cookie-uri
// emite o excepție dacă e asignată o valoare
void open (); // deschide un flux de scriere (alterează DOM-ul curent)
void close (); // închide fluxul de scriere și forțează redarea conținutului
void write (in DOMString text); // scrie un șir de caract. (e.g., cod HTML)
void writeln (in DOMString text); // idem, dar inserează și new line
NodeList getElementsByName (in DOMString numeElement);
// furnizează o listă de elemente conform unui nume de tag
};
Dr.SabinBuragawww.purl.org/net/busaco
dom: html
Interfața HTMLCollection modelează o listă de noduri
un nod poate fi accesat folosind un index numeric
sau pe baza unui identificator (e.g., stabilit via atributul id)
interface HTMLCollection {
readonly attribute unsigned long length; // oferă lungimea listei
Node item (in unsigned long index); // oferă un nod via un index numeric
Node namedItem (in DOMString name); // furnizează un nod pe baza numelui
};
Dr.SabinBuragawww.purl.org/net/busaco
dom: html
Interfața HTMLCollection modelează o listă de noduri
fiecărui element HTML îi corespunde o interfață specifică
HTMLDocument
HTMLDivElement
HTMLImageElement
…
Dr.SabinBuragawww.purl.org/net/busaco
<!DOCTYPE html>
<html>
<body>
<p>Tehnologii Web</p>
<div>
<img src="web.png"/>
</div>
</body>
</html>
HTML
HtmlElement
HTML
BodyElement
HTML
ParagraphElement
Text
HTML
DivElement
HTML
ImageElement
Dr.SabinBuragawww.purl.org/net/busaco
<!DOCTYPE html>
<html>
<body>
<p>Tehnologii Web</p>
<div>
<img src="web.png"/>
</div>
</body>
</html>
HTML
HtmlElement
HTML
BodyElement
HTML
ParagraphElement
Text
HTML
DivElement
HTML
ImageElement
Dr.SabinBuragawww.purl.org/net/busaco
// un element HTML generic
interface HTMLElement : Element {
attribute DOMString id; // identificator asociat elementului
attribute DOMString title; // titlu explicativ
attribute DOMString lang; // limba în care e redactat conținutul
attribute DOMString className; // numele clasei CSS folosite pentru redare
};
// specifică un formular Web
interface HTMLFormElement : HTMLElement {
readonly attribute HTMLCollection elements; // elementele HTML incluse în formular
readonly attribute long length; // numărul câmpurilor formularului
attribute DOMString action; // URI-ul resursei ce procesează datele
attribute DOMString enctype; // tipul MIME de codificare a datelor
// (application/x-www-form-urlencoded)
attribute DOMString method; // metoda HTTP folosită (GET sau POST)
void submit(); // trimite date URI-ului definit de ‘action’
};
// interfața DOM pentru elementul <img/> (e.g., conținut grafic raster: GIF, JPEG, PNG)
interface HTMLImageElement : HTMLElement {
attribute DOMString alt; // text alternativ descriind conținutul grafic
attribute DOMString src; // URL-ul resursei reprezentând imaginea
};
Dr.SabinBuragawww.purl.org/net/busaco
dom: html
Aspecte specifice:
innerHTML
proprietate – mutabilă – ce furnizează codul (X)HTML
din cadrul unui nod de tip Element
utilizare
nerecomandabilă
Dr.SabinBuragawww.purl.org/net/busaco
dom: html
Aspecte specifice:
textContent
proprietate ce furnizează/stabilește conținutul textual
al nodului și posibililor descendenți
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Extinde funcționalitățile DOM1
crearea unui obiect Document
copierea unui nod dintr-un document în altul
și multe altele…
specificația
DOM 2 Core
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Extinde funcționalitățile DOM1
alte facilități:
controlul aplicării foilor de stiluri CSS
tratarea evenimentelor
specificarea filtrelor și iteratorilor
(parcurgeri sofisticate de arbori DOM)
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Suport pentru procesarea foilor de stiluri
StyleSheet
StyleSheetList
MediaList
DocumentStyle
detalii la http://www.w3.org/TR/DOM-Level-2-Style
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
definirea de activități (callback-uri) executate
la apariția unui eveniment
eveniment = acțiune produsă în cadrul mediului de
execuție în urma căreia programul va putea reacționa
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
descrierea arborescentă a fluxului de evenimente
capture versus bubble
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
descrierea arborescentă a fluxului de evenimente
tratarea evenimentului se poate face pornind
de la rădăcină până la obiectul-țintă – capture phase
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
descrierea arborescentă a fluxului de evenimente
tratarea evenimentului poate avea loc atunci când
evenimentul e propagat de la obiectul unde a survenit
până la entitățile superioare lui – bubbling phase
Dr.SabinBuragawww.purl.org/net/busaco
fluxul de evenimente (T. Leithead et al., 2012)
a se studia și W. Page, An Introduction to DOM Events (2013)
http://coding.smashingmagazine.com/2013/11/12/an-introduction-to-dom-events/
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
se va utiliza un set standard de evenimente
detalii la http://www.w3.org/TR/DOM-Level-2-Events
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
de interfață – e.g., interacțiunea cu utilizatorul
mouse: click, mousedown, mouseup, mouseover, mousemove
tastatură: keypress, keydown, keyup
uzual, folosite în
contextul HTML
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
referitoare la interacțiunea cu browser-ul, specifice HTML
(la nivel de document Web ori de formular)
load, unload, abort, error,
select, submit, focus, blur, resize, scroll
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
de modificare a structurii documentului (mutation events)
subtreeModified, nodeInserted, nodeRemoved, attrModified,…
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
de modificare a structurii documentului (mutation events)
subtreeModified, nodeInserted, nodeRemoved, attrModified,…
în prezent, acestea sunt considerate învechite
alternativă: recurgerea la MutationObserver (DOM 4)
http://www.w3.org/TR/dom/#mutation-observers
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Tratarea evenimentelor
sunt puse la dispoziție interfețele:
EventTarget
EventListener
Event – UIEvent, MouseEvent, TouchEvent
Dr.SabinBuragawww.purl.org/net/busaco
(în loc de) pauză
http://abstrusegoose.com/432
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 2
Traversarea arborilor DOM
se specifică interfețele opționale
TreeWalker
NodeIterator
Filter
http://www.w3.org/TR/DOM-Level-2-Traversal-Range
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 3
Extinde DOM 2, oferindu-se interfețe
pentru manipularea XML via module DOM
un modul pune la dispoziție o facilitate particulară
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 3
Modulul Core include interfețele fundamentale
ce trebuie implementate de toate implementările
DOM conformându-se standardului
http://www.w3.org/TR/DOM-Level-3-Core
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 3
module disponibile: XML, HTML, XPath, Traversal, Range,
Validation, Events, Views, Load & Save, Stylesheet,…
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 3
Interfețe noi importante:
DOMStringList, NameList, TypeInfo, UserDataInfo,
DOMImplementationList, DOMImplementationSource,
DOMLocator, DOMConfiguration
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 3
Interfețe modificate (extinse):
Document, Node, Attr, Element, Text, Entity
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 3
Module DOM 3 standardizate
DOM Load & Save
interfețe puse la dispoziție:
LSParser, LSInput, LSSerializer, LSOutput
http://www.w3.org/TR/DOM-Level-3-LS
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 3
Module DOM 3 standardizate
DOM Validation
oferă funcționalități de creare/editare (automată)
de documente conformându-se
unor scheme de validare
http://www.w3.org/TR/DOM-Level-3-Val
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 4
Unifică DOM3 Core, Element Traversal,
Selectors API – level 2, DOM3 Events
apar interfețele ParentNode, ChildNode, Elements,…
suport și pentru specificarea de evenimente proprii
via interfața CustomEvent
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 4
Interfața Node este extinsă cu
proprietățile firstChild, lastChild, previousSibling, nextSibling
și metoda adoptNode ()
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 4
Interfața Element include metodele
getElementsByClassName () și matches ()
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 4
Noi evenimente HTML5 ce pot fi tratate
interacțiune tactilă (din 2013): www.w3.org/TR/touch-events/
touchstart, touchend, touchmove, touchcancel
+
conectivitatea la rețea: online, offline
diverse operațiuni: redo, undo, drag, drop,…
starea dispozitivului – deviceorientation, devicemotion
…și altele
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: nivelul 4
Selectors API
acces la diverse date via selectorii CSS cu metodele
query() queryAll() querySelector() querySelectorAll()
// toate elementele <li> selectate via CSS (date de tip NodeList)
var elemente = document.querySelectorAll ("ul.resurse>li");
for (var i = 0; i < elemente.length; i++) {
prelucreaza (elemente.item (i)); // procesăm fiecare nod
}
avansat
Dr.SabinBuragawww.purl.org/net/busaco
exemplificare – folosim consola oferită de browser:
document.querySelectorAll ("section[id^="week"]:nth-child(even) > h2");
selectori
CSS3
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: implementări
Expat – procesor XML cu suport pentru diverse metode de
prelucrare (DOM, SAX etc.): http://expat.sourceforge.net/
(C, C++, Lua, .NET, Objective-C, Perl, Python, Ruby, Tcl)
HXT (Haskell XML Toolbox): procesări DOM în Haskell
www.haskell.org/haskellwiki/HXT
JAXP – parte integrantă din J2SE (javax.xml.*)
https://docs.oracle.com/javase/tutorial/jaxp/
JDOM – API special pentru Java: http://www.jdom.org/
Dr.SabinBuragawww.purl.org/net/busaco
dom: implementări
JSXML – bibliotecă JavaScript: http://jsxml.net/
QDOM – la Qt (C++): doc.qt.io/qt-5/qdomdocument.html
libxml – API oferit inițial de GNOME: http://xmlsoft.org/
baza unor biblioteci pentru C++, Perl, PHP, Python, Ruby,…
folosit și de libxslt
MSDOM – procesări XML pe client/server în C++
sau JScript (IE, IIS+ASP,…); parte din MSXML SDK
Xerces DOM API – platformă XML (C++/Java):
http://xml.apache.org/
Dr.SabinBuragawww.purl.org/net/busaco
dom: implementări
XmlDocument – clasă .NET Framework (C# et al.)
jsdom – modul Node.js: https://nodejsmodules.org/tags/dom
XML::DOM – modul Perl: search.cpan.org/perldoc?XML::DOM
bazat pe Expat (XML::Parser)
xml.dom – modul din Python, parte a PyXML
https://docs.python.org/2/library/xml.dom.html
Dr.SabinBuragawww.purl.org/net/busaco
dom: api-uri particulare (exemple)
BBC API – acces la programele transmise
(disponibile în formatele XML, JSON, RDF, iCal):
http://www.bbc.co.uk/programmes/developers
Google APIs – suită de API-uri (Java, JS, PHP, Python,
Objective-C, .NET) privind serviciile Google publice:
https://developers.google.com/apis-explorer/
node-xmpp – biblioteca Node.js (JavaScript) pentru XMPP
https://npmjs.org/package/node-xmpp
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: api-uri particulare (exemple)
Open Data Protocol – inițiativă Microsoft (implementări
în Java, JS, PHP, Ruby, .NET): http://www.odata.org/
SVG DOM API – procesarea documentelor SVG în Java
(Apache Batik): http://xmlgraphics.apache.org/batik/
TwiMLT (Twilio Markup Language) API – acces la
serviciile de telefonie Twilio via biblioteci C++, Erlang,
Perl, PHP, Python, Ruby, Scala: www.twilio.com/api
avansat
Dr.SabinBuragawww.purl.org/net/busaco
dom: implementări
Procesarea documentelor XML/HTML
docum.
XML
HTML
Dr.SabinBuragawww.purl.org/net/busaco
try {
$doc = new DomDocument; // instanțiem un obiect DOM
$doc->load ("projects.xml"); // încărcăm documentul XML
// afișăm informații privitoare la proiecte: titlul & clasa (dacă există)
$projs = $doc->getElementsByTagName("project");
foreach ($projs as $proj) { // preluăm nodurile-element <title>
$titles = $proj->getElementsByTagName("title");
foreach ($titles as $title) {
echo "Proiect: " . $title->nodeValue;
}
// verificăm dacă există specificată clasa proiectului
if ($proj->hasAttribute("class")) {
echo " de clasa " . $proj->getAttribute("class");
}
}
} catch (Exception $e) {
die ("Din păcate, a survenit o excepție.");
}
procesări DOM
în limbajul PHP
Dr.SabinBuragawww.purl.org/net/busaco
try:
doc = urllib.urlopen('projects.xml') # încărcăm documentul
dom = parse(doc) # îl procesăm…
# parcurgem elementele <project> și oferim informații despre fiecare
for proiect in dom.getElementsByTagName('project'):
print 'Proiectul ' + proiect.childNodes[1].firstChild.nodeValue + 
' este de clasă: ' + proiect.getAttribute('class')
except Exception:
print 'Din păcate, a survenit o excepție.'
procesări DOM în limbajul Python
Dr.SabinBuragawww.purl.org/net/busaco
# program Perl care contorizează proiectele de clasă 'S'
# instanțiem procesorul XML
$parser = new XML::DOM::Parser;
# procesăm documentul
$doc = $parser->parsefile ('projects.xml');
$proiecte = $doc->getElementsByTagName ('project');
$nr_proiecte = $proiecte->getLength;
$proiecte_clasaS = 0; # inițial, 0 proiecte de clasă 'S'
for (my $i = 0; $i < $nr_proiecte; $i++) { # baleiăm toate proiectele
$proiect = $proiecte->item ($i); # preluăm clasa proiectului
$clasa = $proiect->getAttributeNode ('class')->getValue;
if ($clasa eq 'S') {
$proiecte_clasaS++;
}
}
print "nSunt $proiecte_clasaS proiecte de clasă S.n";
$doc->dispose (); # eliberăm memoria
procesări DOM
în limbajul Perl
Dr.SabinBuragawww.purl.org/net/busaco
try {
doc = new XmlDocument(); // instanțiem un document XML
doc.Load("projects.xml"); // pentru a fi încărcat
// afișăm informații privitoare la proiecte: titlu și clasă
XmlNodeList projs = doc.GetElementsByTagName("project");
foreach (XmlElement proj in projs) {
// selectăm nodurile <title> via o expresie XPath
XmlNodeList titles = proj.SelectNodes("./title");
foreach (XmlElement title in titles) {
Console.Write("Proiect: {0} ", title.InnerXml);
}
if (proj.HasAttribute("class") == true) { // există clasa specificată?
Console.WriteLine("de clasa '{0}'.", proj.GetAttribute("class"));
}
} catch ( Exception e ) {
// din păcate, a survenit o excepție
} procesări DOM
în C# (.NET)
Dr.SabinBuragawww.purl.org/net/busaco
dom: demo
Dr.SabinBuragawww.purl.org/net/busaco
dom: browser
Prelucrarea documentelor XML în browser
a se studia și prezentările disponibile la URL-ul
http://profs.info.uaic.ro/~busaco/teach/courses/cliw/web-film.html
Dr.SabinBuragawww.purl.org/net/busaco
dom: browser
inspectarea arborelui DOM
asociat unui document HTML
via extensia Firebug: getfirebug.com
Dr.SabinBuragawww.purl.org/net/busaco
dom: browser
Vizualizarea/procesarea documentelor HTML și XML
– fără validare – se realizează via DOM în JavaScript
(ECMAScript) interpretat de navigatorul Web
Dr.SabinBuragawww.purl.org/net/busaco
avansat
generare dinamică via JavaScript
a unui formular Web
http://jsfiddle.net/busaco/0wvn3fha/
recurgerea la
createElement()
appendChild()
getElementById()
Dr.SabinBuragawww.purl.org/net/busaco
dom: browser
Se oferă suport și pentru transfer asincron de date
între client (browser) și server Web
AJAX – Asynchronous JavaScript And XML
via obiectul XMLHttpRequest
vezi cursurile
viitoare
Dr.SabinBuragawww.purl.org/net/busaco
rezumat
ⵄmodelul DOM:
caracterizare, niveluri de specificare, exemple
Dr.SabinBuragawww.purl.org/net/busaco
episodul viitor:
procesări XML via SAX + prelucrări simplificate

Aplicație
client
Procesor
SAX
Instanțierea
handler-elor
notificare
apariție eveniment
început de tag
Procesare
trimite
evenimente
SAX
apelare handler

inițiere procesare: parse ( )
<projects>
<project class="S">
…
</project>
</projects>
apariție eveniment
final de tag
apelare handler
etc.

More Related Content

Viewers also liked

Viewers also liked (7)

Spring
SpringSpring
Spring
 
Jaxp Xmltutorial 11 200108
Jaxp Xmltutorial 11 200108Jaxp Xmltutorial 11 200108
Jaxp Xmltutorial 11 200108
 
Spring
SpringSpring
Spring
 
Spring
SpringSpring
Spring
 
XML SAX PARSING
XML SAX PARSING XML SAX PARSING
XML SAX PARSING
 
Java XML Parsing
Java XML ParsingJava XML Parsing
Java XML Parsing
 
DOM and SAX
DOM and SAXDOM and SAX
DOM and SAX
 

Similar to Web 2016 (08/13) Procesarea datelor XML & HTML. Document Object Model

Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de numeWeb 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de numeSabin Buraga
 
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...Sabin Buraga
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Sabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navi...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navi...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navi...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navi...Sabin Buraga
 
WADe 2014—2015 (07/12): Semantic Web—Arhitectura aplicaţiilor RDF. Iniţiativa...
WADe 2014—2015 (07/12): Semantic Web—Arhitectura aplicaţiilor RDF. Iniţiativa...WADe 2014—2015 (07/12): Semantic Web—Arhitectura aplicaţiilor RDF. Iniţiativa...
WADe 2014—2015 (07/12): Semantic Web—Arhitectura aplicaţiilor RDF. Iniţiativa...Sabin Buraga
 
Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Sabin Buraga
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...Sabin Buraga
 
CLIW 2014—2015 (2/12): Arhitectura navigatorului Web
CLIW 2014—2015 (2/12): Arhitectura navigatorului WebCLIW 2014—2015 (2/12): Arhitectura navigatorului Web
CLIW 2014—2015 (2/12): Arhitectura navigatorului WebSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Sabin Buraga
 
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...Sabin Buraga
 
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziuneWADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziuneSabin Buraga
 
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...Sabin Buraga
 
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...Sabin Buraga
 
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Sabin Buraga
 
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebWeb 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Sabin Buraga
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebSabin Buraga
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...Sabin Buraga
 
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebCLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebSabin Buraga
 
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFa
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFaWADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFa
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFaSabin Buraga
 

Similar to Web 2016 (08/13) Procesarea datelor XML & HTML. Document Object Model (20)

Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de numeWeb 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
 
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2015-2016 (8/13) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navi...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navi...Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navi...
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #2): Arhitectura navi...
 
WADe 2014—2015 (07/12): Semantic Web—Arhitectura aplicaţiilor RDF. Iniţiativa...
WADe 2014—2015 (07/12): Semantic Web—Arhitectura aplicaţiilor RDF. Iniţiativa...WADe 2014—2015 (07/12): Semantic Web—Arhitectura aplicaţiilor RDF. Iniţiativa...
WADe 2014—2015 (07/12): Semantic Web—Arhitectura aplicaţiilor RDF. Iniţiativa...
 
Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...Modelarea datelor via XML. Design patterns in contextul specificarii document...
Modelarea datelor via XML. Design patterns in contextul specificarii document...
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
 
CLIW 2014—2015 (2/12): Arhitectura navigatorului Web
CLIW 2014—2015 (2/12): Arhitectura navigatorului WebCLIW 2014—2015 (2/12): Arhitectura navigatorului Web
CLIW 2014—2015 (2/12): Arhitectura navigatorului Web
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
 
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
 
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziuneWADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
WADe 2014—2015 (01/12): Dezvoltarea de aplicaţii Web: Concepte & viziune
 
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
Dezvoltarea aplicațiilor Web (7/12): Arhitectura aplicaţilor RDF. Linked Open...
 
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
 
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
Dezvoltarea aplicațiilor Web (1/12): Dezvoltarea de aplicaţii Web: Concepte &...
 
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebWeb 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
 
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
Dezvoltarea aplicatiilor orientate spre servicii Web. De la REST la mash-up-u...
 
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului WebCLIW 2015-2016 (2/13) Arhitectura navigatorului Web
CLIW 2015-2016 (2/13) Arhitectura navigatorului Web
 
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
STAW 12/12: (Re)găsirea resurselor Web. De la motoare de căutare şi SEO la da...
 
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului WebCLIW 2017-2018 (2/12) Arhitectura navigatorului Web
CLIW 2017-2018 (2/12) Arhitectura navigatorului Web
 
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFa
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFaWADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFa
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFa
 

More from Sabin Buraga

Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)Sabin Buraga
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)Sabin Buraga
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSabin Buraga
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...Sabin Buraga
 

More from Sabin Buraga (20)

Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
 
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de clientSTAW 11/12: Performanţa aplicaţiilor Web la nivel de client
STAW 11/12: Performanţa aplicaţiilor Web la nivel de client
 
Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)Sabin Buraga: Dezvoltator Web?! (2019)
Sabin Buraga: Dezvoltator Web?! (2019)
 
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
HCI 2018 (2/10) Human Factor. From interaction idioms to human capacities & c...
 

Web 2016 (08/13) Procesarea datelor XML & HTML. Document Object Model