web08procesarixml dom
TRANSCRIPT
-
8/18/2019 Web08ProcesariXML DOM
1/105
D r . S a
b i n
B u r a g a
w w w . p u r l
. o r g / n e t / b u s a
c o
Tehnologii Web
procesarea datelor XML (I)
ⵄDOM (Document Object Model )
-
8/18/2019 Web08ProcesariXML DOM
2/105
D r . S a
b i n
B u r a g a
w w w . p u r l
. o r g / n e t / b u s a
c o
„Regula de aur este c ă nu exist ă reguli de aur. ”
George Bernard Show
-
8/18/2019 Web08ProcesariXML DOM
3/105
-
8/18/2019 Web08ProcesariXML DOM
4/105
D r . S a
b i n
B u r a g a
w w w . p u r l
. o r g / n e t / b u s a c o
Tipuri de proces ări XML
procesare manual ă
e.g., expresii regulate
-
8/18/2019 Web08ProcesariXML DOM
5/105
D r . S a
b i n
B u r a g a
w w w . p u r l
. o r g / n e t / b u s a c o
Tipuri de proces ări XML
procesare obiectual ă
DOM (Document Object Model )
non-DOM
-
8/18/2019 Web08ProcesariXML DOM
6/105
D r . S a
b i n
B u r a g a
w w w . p u r l
. o r g / n e t / b u s a c o
Tipuri de proces ări XML
procesare condus ă de evenimente
SAX (Simple API for XML )
XPP ( XML Pull Parsing )
vezi cursul viitor
-
8/18/2019 Web08ProcesariXML DOM
7/105
D r . S a
b i n
B u r a g a
w w w . p u r l
. o r g / n e t / b u s a c o
Tipuri de proces ări XML
procesare simplificat ă
Simple XML
vezi cursul viitor
-
8/18/2019 Web08ProcesariXML DOM
8/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
Tipuri de proces ări XML
procesare particular ă
via API-uri specializate pentru a prelucra
tipuri de documente specifice – e.g., RSS, SOAP, SVG,…
-
8/18/2019 Web08ProcesariXML DOM
9/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
Procesoare (analizoare) XMLf ă r ă validare
verific ă doar dac ă documentuleste bine-formatat ( well formed )
Expat , libxml , MSXML,...
-
8/18/2019 Web08ProcesariXML DOM
10/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
Procesoare (analizoare) XMLcu validare
verific ă dac ă documentul este valid,conform unei metode de validare – e.g., DTD
Apache Xerces , JAXP, libxml , MSXML,...
-
8/18/2019 Web08ProcesariXML DOM
11/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
Modelul DOM
introducereinterfe ț e DOM
DOM CoreDOM – nivelul 2
DOM – nivelul 3DOM – nivelul 4implement ări
DOM direct în navigator
-
8/18/2019 Web08ProcesariXML DOM
12/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : intro
Scop:procesarea obiectual ă – standardizat ă –
a documentelor XML și/sau HTML
-
8/18/2019 Web08ProcesariXML DOM
13/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : caracterizare
Interfa ță de programare a aplica ț iilor (API)abstract ă pentru XML/HTML
-
8/18/2019 Web08ProcesariXML DOM
14/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : caracterizare
Interfa ță de programare a aplica ț iilor (API)abstract ă pentru XML/HTML
independent ă de platform ă ș i limbaj
standardizat ă de Consor ț iul Web
-
8/18/2019 Web08ProcesariXML DOM
15/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : caracterizare
Define ște o structur ă logic ă arborescent ăa documentelor XML
document = ierarhie a unui set de obiecte
-
8/18/2019 Web08ProcesariXML DOM
16/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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 )
-
8/18/2019 Web08ProcesariXML DOM
17/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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.
-
8/18/2019 Web08ProcesariXML DOM
18/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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 ),…
-
8/18/2019 Web08ProcesariXML DOM
19/105
D r . S a
b i n
B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : niveluri de specificare
DOM 4 (2015)
http://www.w3.org/TR/dom/
restructurarea unor interfețe + noi funcționalități
-
8/18/2019 Web08ProcesariXML DOM
20/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : niveluri de specificare
DOM Living Standard
http://dom.spec.whatwg.org/
specific HTML5
în continuă dezvoltare(cea mai recentă actualizare: aprilie 2016)
-
8/18/2019 Web08ProcesariXML DOM
21/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : interfe țe
Modalitate abstract ă de accesare și de modificarea reprezent ării interne a unui document XML
-
8/18/2019 Web08ProcesariXML DOM
22/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : interfe țe
Modalitate abstract ă de accesare și de modificarea reprezent ării interne a unui document XML
datele sunt încapsulate în obiecte, ascunse și/sauprotejate de prelucrarea externă directă
-
8/18/2019 Web08ProcesariXML DOM
23/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : interfe țe
Nu implic ă o implementare concreta, particular ă:
DOM oferă interfe ț eindependente de implementare pentru
accesarea/procesarea datelor
-
8/18/2019 Web08ProcesariXML DOM
24/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : interfe țe
Interfe ț ele sunt specificate cuIDL (Interface Description Language )
introdus în premier ă de CORBA
(Common Object Request Broker Architecture )
-
8/18/2019 Web08ProcesariXML DOM
25/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : interfe țe – IDL
Define ște tipurile de obiecteprin specificarea interfe ț elor acestora
(date membre + metode publice)
pur declarativ
-
8/18/2019 Web08ProcesariXML DOM
26/105
Sh t
-
8/18/2019 Web08ProcesariXML DOM
27/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
tipuri de dateIDL
valori debaz ă
întregi
Short
UShort
Long
ULong
realeFloat
Double
altele
Boolean
Char
String
Enumvalori
construite
Struct
Sequence
Union
Any
referin ță
-
8/18/2019 Web08ProcesariXML DOM
28/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom: interfe țe – exemplu
Specificarea interfe ț ei NodeList
interface NodeList{Node item (in unsigned long index);readonly attribute unsigned long length;
};
-
8/18/2019 Web08ProcesariXML DOM
29/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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
-
8/18/2019 Web08ProcesariXML DOM
30/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom: interfe țe – exemplu
Specificarea interfe ț ei Attr
interface Attr : Node {readonly attribute DOMStringname;readonly attribute boolean specified;
attribute DOMStringvalue;};
-
8/18/2019 Web08ProcesariXML DOM
31/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom: interfe țe – exemplu
Specificarea interfe ț ei Attr
interface Attr : Node {readonly attribute DOMStringname;readonly attribute boolean specified;
attribute DOMStringvalue;};
Attr provine din Node
3 propriet ăț i
-
8/18/2019 Web08ProcesariXML DOM
32/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Un document ierarhie de obiecte-nodcare 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
-
8/18/2019 Web08ProcesariXML DOM
33/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
un document HTML și arborele DOM corespunzătorreprezentat via Live DOM Viewer
http://software.hixie.ch/utilities/js/live-dom-viewer/
-
8/18/2019 Web08ProcesariXML DOM
34/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Accesul la date
– liste de noduri, atribute, valori ,… –se realizeaz ă recurgându-se la metodele specificefiec ărui tip de noduri ale arborelui
-
8/18/2019 Web08ProcesariXML DOM
35/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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
-
8/18/2019 Web08ProcesariXML DOM
36/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
DOMException
gestioneaz ă setul de excep ț ii de procesare
-
8/18/2019 Web08ProcesariXML DOM
37/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
DOMImplementation
furnizeaz ă detalii despre implementarea curent ă
-
8/18/2019 Web08ProcesariXML DOM
38/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
DocumentFragment : Nodeacces la fragmente de arbore
-
8/18/2019 Web08ProcesariXML DOM
39/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
Document ofer ă acces la document
pentru consultare și/sau modificare
-
8/18/2019 Web08ProcesariXML DOM
40/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
Document propriet ăț idoctype, implementation, documentElement
-
8/18/2019 Web08ProcesariXML DOM
41/105
-
8/18/2019 Web08ProcesariXML DOM
42/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
Document metode createElement(), createTextNode(),createAttribute(), getElementsByTagName(),
getElementById(),createElementNS(), importNode(),getElementsByTagNameNS(), renameNode()etc.
DOM 2 DOM 3
-
8/18/2019 Web08ProcesariXML DOM
43/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
Nodeacces la nodurile arborelui
-
8/18/2019 Web08ProcesariXML DOM
44/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
Nodepropriet ăț i nodeName, nodeValue
-
8/18/2019 Web08ProcesariXML DOM
45/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:
Nodemetode getNodeType(), insertBefore(),appendChild(), replaceChild(), removeChild(),cloneChild(), hasChildNodes(),hasAttributes(), isSameNode()
DOM 2 DOM 3
-
8/18/2019 Web08ProcesariXML DOM
46/105
-
8/18/2019 Web08ProcesariXML DOM
47/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:Element
proprietatea tagName
-
8/18/2019 Web08ProcesariXML DOM
48/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:Element
metode getAttribute(), getAttributeNode(),setAttributeNode(), removeAttributeNode(),
hasAttribute(), hasAttributeNS(),…
DOM 2
-
8/18/2019 Web08ProcesariXML DOM
49/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:Attr : Nodeacces la atributele unui element
-
8/18/2019 Web08ProcesariXML DOM
50/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : core
Interfe ț e fundamentale:NodeList NamedNodeMap
permit accesul la colec ț ii de nodurivia indec și ori chei
-
8/18/2019 Web08ProcesariXML DOM
51/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : html
DOM HTML extinde DOM Core
specializarea interfe ț elor și oferirea de suport obiectualpentru prelucrarea documentelor HTML
standardizeaz ă procesarea paginilor Web(e.g., în cadrul navigatorului)
interface HTMLDocument: Document {
-
8/18/2019 Web08ProcesariXML DOM
52/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
attribute DOMStringtitle; // titlul documentuluireadonly attribute DOMStringreferrer ; // adresa resursei ce refer ă paginareadonly attribute DOMStringdomain; // domeniul de care apar ținereadonly attribute DOMStringURL; // URL-ul absolut al documentuluiattribute HTMLElementbody; // acces la elementul readonly attribute HTMLCollectionimages; // lista tuturor imaginilor readonly attribute HTMLCollectionlinks; // lista tuturor legăturilor readonly attribute HTMLCollectionforms; // lista tuturor formularelor
attribute DOMStringcookie; // 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 ținutuluivoid write (in DOMString text); // scrie un șir de caract. (e.g., cod HTMLvoid writeln(in DOMString text); // idem, dar inserează și new lineNodeListgetElementsByName(in DOMString numeElement); // furnizează o listă de elemente conform unui nume de tag
};
-
8/18/2019 Web08ProcesariXML DOM
53/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : html
Interfa ț a HTMLCollectionmodeleaz ă o list ă de noduri
un nod poate fi accesat folosind un index numericsau pe baza unui identificator ( e.g., stabilit via atributul id)
interface HTMLCollection{readonly attribute unsigned long length; // ofer ă lungimea listeiNode item (in unsigned long index); // ofer ă un nod via un index numericNode namedItem(in DOMString name); // furnizează un nod pe baza numelui
};
-
8/18/2019 Web08ProcesariXML DOM
54/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : html
Interfa ț a HTMLCollectionmodeleaz ă o list ă de noduri
fiec ărui element HTML îi corespunde o interfa ță specific ă
HTMLDocumentHTMLDivElement
HTMLImageElement…
-
8/18/2019 Web08ProcesariXML DOM
55/105
D r . S a
b i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
Tehnologii Web
HTMLHtmlElement
HTMLBodyElement
HTMLParagraphElement
Text
HTMLDivElement
HTMLImageElement
-
8/18/2019 Web08ProcesariXML DOM
56/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
Tehnologii Web
HTMLHtmlElement
HTMLBodyElement
HTMLParagraphElement
Text
HTMLDivElement
HTMLImageElement
// un element HTML generici t f HTMLEl tEl t{
-
8/18/2019 Web08ProcesariXML DOM
57/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
interface HTMLElement: Element{attribute DOMString id; // identificator asociat elementuluiattribute DOMString title; // titlu explicativattribute DOMString lang; // limba în care e redactat conținutulattribute DOMString className; // numele clasei CSS folosite pentru redare
}; // specifică un formular Webinterface HTMLFormElement: HTMLElement{
readonly attribute HTMLCollectionelements; // elementele HTML incluse în formular
readonly attribute long length; // numărul câmpurilor formularuluiattribute DOMString action; // URI-ul resursei ce procesează dateleattribute 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 (e.g. , conținut grafic raster: GIF, JPEG, PNG)interface HTMLImageElement: HTMLElement{
attribute DOMString alt; // text alternativ descriind conținutul graficattribute DOMString src; // URL-ul resursei reprezentând imaginea
};
-
8/18/2019 Web08ProcesariXML DOM
58/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : html
Aspecte specifice:
innerHTML
proprietate – mutabil ă – ce furnizeaz ă codul (X)HTMLdin cadrul unui nod de tip Element
utilizarenerecomandabil ă
-
8/18/2019 Web08ProcesariXML DOM
59/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : html
Aspecte specifice:
textContent
proprietate ce furnizeaz ă/stabilește conținutul textualal nodului și posibililor descendenți
-
8/18/2019 Web08ProcesariXML DOM
60/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Extinde func ț ionalit ăț ile DOM1crearea unui obiect Document
copierea unui nod dintr-un document în altul
și multe altele …
specifica ț iaDOM 2 Core
-
8/18/2019 Web08ProcesariXML DOM
61/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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)
avansat
-
8/18/2019 Web08ProcesariXML DOM
62/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Suport pentru procesarea foilor de stiluri
StyleSheet StyleSheetList
MediaList DocumentStyle
detalii la http://www.w3.org/TR/DOM-Level-2-Style
-
8/18/2019 Web08ProcesariXML DOM
63/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Tratarea evenimentelor
definirea de activit ăț i (callback -uri) executatela apari ț ia unui eveniment
eveniment = ac ț iune produs ă în cadrul mediului deexecu ț ie în urma c ăreia programul va putea reac ț iona
-
8/18/2019 Web08ProcesariXML DOM
64/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Tratarea evenimentelor
descrierea arborescent ă a fluxului de evenimente
capture versus bubble
-
8/18/2019 Web08ProcesariXML DOM
65/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Tratarea evenimentelor
descrierea arborescent ă a fluxului de evenimente
tratarea evenimentului se poate face pornindde la r ădăcin ă pân ă la obiectul- ț int ă – capture phase
-
8/18/2019 Web08ProcesariXML DOM
66/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Tratarea evenimentelor
descrierea arborescent ă a fluxului de evenimente
tratarea evenimentului poate avea loc atunci cândevenimentul e propagat de la obiectul unde a survenit
pân ă la entit ăț ile superioare lui – bubbling phase
-
8/18/2019 Web08ProcesariXML DOM
67/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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/
-
8/18/2019 Web08ProcesariXML DOM
68/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Tratarea evenimentelor
se va utiliza un set standard de evenimente
detalii la http://www.w3.org/TR/DOM-Level-2-Events
-
8/18/2019 Web08ProcesariXML DOM
69/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Tratarea evenimentelor
de interfa ță – e.g., interac ț iunea cu utilizatorul
mouse: click, mousedown, mouseup , mouseover , mousemovetastatură: keypress , keydown, keyup
uzual, folosite încontextul HTML
-
8/18/2019 Web08ProcesariXML DOM
70/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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
avansat
-
8/18/2019 Web08ProcesariXML DOM
71/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Tratarea evenimentelor
de modificare a structurii documentului ( mutation events )
subtreeModified, nodeInserted, nodeRemoved, attrModified,…
avansat
-
8/18/2019 Web08ProcesariXML DOM
72/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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
-
8/18/2019 Web08ProcesariXML DOM
73/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Tratarea evenimentelor
sunt puse la dispozi ț ie interfe ț ele:EventTarget
EventListenerEvent – UIEvent , MouseEvent , TouchEvent
-
8/18/2019 Web08ProcesariXML DOM
74/105
avansat
-
8/18/2019 Web08ProcesariXML DOM
75/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 2
Traversarea arborilor DOM
se specific ă interfe ț ele op ț ionaleTreeWalker
NodeIterator
Filter
http://www.w3.org/TR/DOM-Level-2-Traversal-Range
-
8/18/2019 Web08ProcesariXML DOM
76/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 3
Extinde DOM 2, oferindu-se interfe ț epentru manipularea XML via module DOM
un modul pune la dispoziție o facilitate particular ă
-
8/18/2019 Web08ProcesariXML DOM
77/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 3
Modulul Core include interfe ț ele fundamentalece trebuie implementate de toate implement ările
DOM conformându-se standardului
http://www.w3.org/TR/DOM-Level-3-Core
-
8/18/2019 Web08ProcesariXML DOM
78/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 3
module disponibile: XML, HTML, XPath , Traversal , Range ,Validation , Events , Views , Load & Save , Stylesheet ,…
avansat
-
8/18/2019 Web08ProcesariXML DOM
79/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 3
Interfe ț e noi importante:
DOMStringList, NameList, TypeInfo, UserDataInfo,DOMImplementationList, DOMImplementationSource,
DOMLocator , DOMConfiguration
avansat
-
8/18/2019 Web08ProcesariXML DOM
80/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 3
Interfe ț e modificate (extinse):
Document, Node, Attr , Element, Text, Entity
avansat
-
8/18/2019 Web08ProcesariXML DOM
81/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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
-
8/18/2019 Web08ProcesariXML DOM
82/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 3
Module DOM 3 standardizateDOM 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
-
8/18/2019 Web08ProcesariXML DOM
83/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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 propriivia interfața CustomEvent
avansat
-
8/18/2019 Web08ProcesariXML DOM
84/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 4
Interfața Node este extinsă cuproprietățile firstChild, lastChild, previousSibling, nextSibling
și metoda adoptNode ()
avansat
-
8/18/2019 Web08ProcesariXML DOM
85/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : nivelul 4
Interfața Element include metodelegetElementsByClassName ()și matches ()
avansat
-
8/18/2019 Web08ProcesariXML DOM
86/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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
-
8/18/2019 Web08ProcesariXML DOM
87/105
avansat
-
8/18/2019 Web08ProcesariXML DOM
88/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
exemplificare – folosim consola oferită de browser :document.querySelectorAll("section[id^=\"week\"]:nth-child(even) > h2");
selectoriCSS3
-
8/18/2019 Web08ProcesariXML DOM
89/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : implement ări
Expat – procesor XML cu suport pentru diverse metode deprelucrare (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 Haskellwww.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/
-
8/18/2019 Web08ProcesariXML DOM
90/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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/
-
8/18/2019 Web08ProcesariXML DOM
91/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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::DOMbazat pe Expat ( XML::Parser )
xml.dom – modul din Python, parte a PyXMLhttps://docs.python.org/2/library/xml.dom.html
d l ( l )
avansat
-
8/18/2019 Web08ProcesariXML DOM
92/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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
d i i i l ( l )
avansat
-
8/18/2019 Web08ProcesariXML DOM
93/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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 laserviciile de telefonie Twilio via biblioteci C++, Erlang,Perl, PHP, Python, Ruby, Scala: www.twilio.com/api
d i l i
-
8/18/2019 Web08ProcesariXML DOM
94/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : implement ări
Procesarea documentelor XML/HTML
docum.XML
HTML
try {$doc =new DomDocument; // instanțiem un obiect DOM
-
8/18/2019 Web08ProcesariXML DOM
95/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
ț$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 $titles = $proj->getElementsByTagName("title");foreach ($titles as $title) {echo "Proiect: " . $title->nodeValue;
} // verificăm dacă există specificată clasa proiectuluiif ($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
-
8/18/2019 Web08ProcesariXML DOM
96/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c otry:
doc = urllib.urlopen('projects.xml') # încărc
ăm documentul
dom = parse(doc) # îl procesăm…# parcurgem elementele și oferim informații despre fiecarefor 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
# program Perl care contorizează proiectele de clasă 'S'
ă i DOM
-
8/18/2019 Web08ProcesariXML DOM
97/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
# 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
try {doc = new XmlDocument(); // instanțiem un document XML
-
8/18/2019 Web08ProcesariXML DOM
98/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
doc.Load("projects.xml"); // pentru a fi încărcat // afișăm informații privitoare la proiecte: titlu și clasă
XmlNodeListprojs = doc.GetElementsByTagName("project");foreach (XmlElementproj in projs) { // selectăm nodurile via o expresie XPathXmlNodeListtitles = proj.SelectNodes("./title");foreach (XmlElementtitle 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)
d b
-
8/18/2019 Web08ProcesariXML DOM
99/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
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
d b
-
8/18/2019 Web08ProcesariXML DOM
100/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u s a c o
dom : browser
inspectarea arborelui DOMasociat unui document HTML
via extensia Firebug : getfirebug.com
d b
-
8/18/2019 Web08ProcesariXML DOM
101/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u
s a c o
dom : browser
Vizualizarea/procesarea documentelor HTML și XML– f ără validare – se realizeaz ă via DOM în JavaScript
(ECMAScript ) interpretat de navigatorul Web
avansat
-
8/18/2019 Web08ProcesariXML DOM
102/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u
s a c o
generare dinamică via JavaScript
a unui formular Webhttp://jsfiddle.net/busaco/0wvn3fha/
recurgerea lacreateElement()appendChild()
getElementById()
d b
-
8/18/2019 Web08ProcesariXML DOM
103/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u
s a c o
dom : browser
Se ofer ă suport și pentru transfer asincron de date între client ( browser ) și server Web
AJAX– Asynchronous JavaScript And XMLvia obiectul XMLHttpRequest
vezi cursurileviitoare
-
8/18/2019 Web08ProcesariXML DOM
104/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u
s a c o
rezumat
ⵄmodelul DOM:caracterizare niveluri de specificare exemple
Aplica ție Procesor
-
8/18/2019 Web08ProcesariXML DOM
105/105
D r . S a b
i n B u r a g a
w w w
. p u r l
. o r g / n e t / b u
s a c o
Aplica ț ieclient ProcesorSAXInstan ț iereahandler -elor
notificare
apari ț ie eveniment început de tag Procesare
trimiteevenimente
SAX
apelare handler
ini ț iere procesare: parse ( )
…
apari ț ie eveniment
final de tag
apelare handler etc.