Date post: | 30-Nov-2014 |
Category: |
Technology |
Upload: | sabin-buraga |
View: | 1,426 times |
Download: | 3 times |
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tehnologii Web
Dr. SabinCorneliu BuragaFacultatea de Informatica
Universitatea “A.I.Cuza” – Iasi, Romania
http://www.infoiasi.ro/~busaco/
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Detalii in [TX, 193‐239]
Procesari XML: DOM
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
“Regula de aur este ca nu exista reguli de aur.”
George Bernard Show
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML (Extensible Markup Language)Procesarea documentelor XML
PreliminariiModelul DOM (Document Object Model)
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
intrebare
Cum putem prelucra documentele XML?
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tipuri de procesari XMLProcesare manuala – e.g., expresii regulateProcesare obiectuala – DOM & non‐DOM
Procesare condusa de evenimente – SAX & non‐SAXProcesare simplificata (Simple XML)
Procesare particulara – via API‐uri specializate: e.g., RDF, RSS, SOAP, SVG,…
preliminarii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Procesoare (analizoare) XMLfara validare
verifica doar daca documentul este bine‐formatat(Expat – James Clark, libxml, MSXML,...)
cu validareverifica daca documentul este valid, folosind un DTD sau
o schema (Apache Xerces, JAXP, libxml, MSXML,...)
preliminarii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modelul DOM IntroducereInterfete DOMDOM Core
DOM – nivelul 2DOM – nivelul 3Implementari
DOM direct in navigator
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Scop:procesarea obiectuala a documentelor XML/HTML
dom: intro
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfata de programare a aplicatiilor (API)abstracta pentru XML/HTML
independenta de platforma & limbaj
standardizata de Consortiul Web
dom: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Defineste o structura logica arborescentaa documentelor XML
document = set de obiecte
dom: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Niveluri de specificareDOM 1 (1998)
http://www.w3.org/TR/REC-DOM-Level-1/DOM Core pentru XML + DOM HTML
DOM 2 (2001) – recomandari multiplehttp://www.w3.org/TR/REC-DOM-Level-2/
DOM 3 (2004) – partial standardizathttp://www.w3.org/TR/DOM-Level-3-Core/
dom: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Se ofera o modalitate abstracta de accesaresi de modificare a reprezentarii interne
a unui document XML
Datele sunt incapsulate in obiecte, ascunse si/sauprotejate de prelucrarea externa directa
dom: interfete
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Nu implica o implementare concreta, particulara:se ofera interfete de procesare independente
de implementare
Interfetele sunt specificate inIDL (Interface Description Language) – CORBA
dom: interfete
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Defineste tipurile de obiecteprin specificarea interfetelor acestora(date membre + metode publice)
Pur declarativOfera suport pentru mostenire multiplaprin intermediul interfetelor
Poate specifica module, interfete, metode, tipuri, atribute, exceptii, constante
Detalii in “OMG IDL Syntax & Semantics”: www.omg.org/technology/documents/formal/corba_2.htm
dom: interfete – IDL
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tipuri de date IDL
dom: interfete – IDL
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Specificarea interfetei NodeList
interface NodeList { Node item (in unsigned long index); readonly attribute unsigned long length;
};
dom: interfete – exemplu
Metoda cu un parametru, intorcind o valoare de tip NodeNode
Proprietate readonlyde tip intreg lung fara semn
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Specificarea interfetei Attr
interface Attr :: Node { readonly attribute DOMString name; readonly attribute boolean specified;attribute DOMString value;
};
dom: interfete – exemplu
AttrAttr provine din NodeNode
3 proprietati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Structura:Un document ≡ ierarhie de obiectenod care pot implementa interfete (specializate)
Nodurile poseda descendenti sau sint noduri frunzaAccesul la date – liste de noduri, atribute, valori,… –se realizeaza via metodele oferite de obiectele‐nod
dom: core
A se (re)vedea si XML Infoset
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
DocumentDocument Element, ProcessingInstruction,Comment, DocumentType
DocumentDocumentFragmentFragment
Element, ProcessingInstruction, Comment, Text, CDATASection,…
ElementElement Element, Text, Comment, CDATASection,EntityReference,…
AttrAttr Text, EntityReference
TextText –
dom: core – tipuri de noduri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:DOMExceptionexceptii de procesare
DOMImplementationimplementarea curenta
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:DocumentFragment : Nodeacces la fragmente de arbore
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Documentofera acces la document (pentru consultare si/sau modificare)
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Documentproprietatidoctype, implementation, documentElement
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Documentmetode createElement(), createTextNode(), createAttribute(), getElementsByTagName(), createElementNS(), importNode(), getElementsByTagNameNS(), renameNode() etc.
dom: core
DOM 2 DOM 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Nodeacces la nodurile arborelui
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Nodeproprietati nodeName, nodeValue
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Nodemetode getNodeType(), insertBefore(), appendChild(), replaceChild(), removeChild(), cloneChild(), hasChildNodes(), hasAttributes(), isSameNode()
dom: core
DOM 2 DOM 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Elementofera acces la elementele XML
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Elementproprietatea tagName
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Elementmetode getAttribute(), getAttributeNode(), setAttributeNode(), removeAttributeNode(), hasAttribute(), hasAttributeNS(),…
dom: core
DOM 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:Attr : Nodeacces la atributele unui element
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete fundamentale:NodeList & NamedNodeMappermit accesul la colectiile de noduri
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tipuri DOM pentru atribute:
TipuriTipuri DTDDTD TipuriTipuri DOMDOM
CDATA DOMString
Lista valori (left|right|center) DOMString
Valoare unica (disabled) boolean
Numar long int
dom: core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
DOM HTML extinde DOM Core
Specializarea interfetelor si oferirea de suport obiectualpentru prelucrarea documentelor HTML
Standardizeaza procesarea paginilor Web(e.g., in cadrul navigatorului)
dom: html
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfata generica HTMLCollection
Fiecarui element HTML ii va corespundeo interfata: HTMLDocument, HTMLDivElement,
HTMLPreElement,…
dom: html
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Se ofera si interfata HTMLElement provenind din Element
dom: html
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Extinde functionalitatile DOM1Crearea unui obiect DocumentCopierea unui nod dintr‐un document in altulSi multe altele…
dom: nivelul 2
SpecificatiaDOM 2 CoreDOM 2 Core
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Extinde functionalitatile DOM1Controlul foilor de stiluri – CSS 1 & CSS 2Tratarea evenimentelorSpecificarea filtrelor si iteratorilor(parcurgeri sofisticate de arbori DOM)
dom: nivelul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete noiDOMImplementation2 : DOMImplementationDocument2 : Document
dom: nivelul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Suport pentru procesarea foilor de stiluriStyleSheetStyleSheetListMediaListDocumentStyle
Detalii la http://www.w3.org/TR/DOM-Level-2-Style
dom: nivelul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tratarea evenimentelorDefinirea de activitati executatela aparitia unui eveniment
Descrierea arborescenta a fluxului de evenimenteConceperea unui set standard de evenimentee.g., de control al interactiunii cu utilizatorul sinotificare a modificarilor de structura
Detalii: http://www.w3.org/TR/DOM-Level-2-Events
dom: nivelul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tratarea evenimentelorDe interfata: click, mousedown,mouseup,mouseover,
mousemove, keypress, keydown, keyup, resize, scrollDe modificare a structurii: subtreeModified,
nodeInserted, nodeRemoved, attrModified,…HTML (la nivel de document Web ori de formular):
load, unload, abort, error, select, submit, focus, blur,…
dom: nivelul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tratarea evenimentelorsunt puse la dispozitie interfetele:
EventTargetEventListenerEvent
UIEventMouseEventMutationEvent
dom: nivelul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Traversarea arborilor DOMse specifica interfetele optionaleTreeWalker, NodeIterator si Filter
Detalii: http://www.w3.org/TR/DOM-Level-2-Traversal-Range
dom: nivelul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Traversarea arborilor DOMExemplu de creare & utilizare a unui iterator:
NodeIterator iter = ((DocumentTraversal) document).createNodeIterator (root,
NodeFilter.SHOW_ELEMENT, null); while (Node n = iter.nextNode ())
afiseaza (n); // metoda definita de utilizator
dom: nivelul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Extinde DOM 2, oferindu‐se interfetepentru manipularea XML via module DOM
Un modul se refera la o facilitate particulara
dom: nivelul 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modulul Core include interfetele fundamentalece trebuie implementate de toate implementarile
DOM conformindu‐se standardului
Alte module: DOM XML, DOM HTML, DOM XPath, DOM Traversal, DOM Range, DOM Validation, DOM Events, DOM Views,
DOM Load & Save, DOM Stylesheet
dom: nivelul 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
dom: nivelul 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Sunt specificate noi tipuri de date: DOMTimeStamp – numar de milisecundeDOMUserData – date ale aplicatiei‐utilizatorDOMObject – referinta la un obiect
Sunt introduse noi coduri de exceptieVALIDATION_ERR si TYPE_MISMATCH_ERR
dom: nivelul 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Ca si la DOM 2, se ofera suport pentru spatiilede nume – atributele folosite pentru declarareaspatiilor de nume prin definitie apartin URI‐ului
http://www.w3.org/2000/xmlns/
dom: nivelul 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interfete noi: DOMStringList, NameList, TypeInfo,UserDataInfo, DOMImplementationList,DOMImplementationSource, DOMError, DOMErrorHandler, DOMLocator, DOMConfiguration
Interfete modificate (extinse): Document, Node, Attr, Element, Text, Entity
Detalii: http://www.w3.org/TR/DOM-Level-3-Core
dom: nivelul 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Module DOM 3 standardizateDOM Load & Save
Interfete puse la dispozitie:LSParser, LSInput, LSSerializer, LSOutput
http://www.w3.org/TR/DOM-Level-3-LS
dom: nivelul 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Module DOM 3 standardizateDOM Validation
Ofera functionalitati de creare/editare(automata) de documente conformindu‐seunor scheme de validare
http://www.w3.org/TR/DOM-Level-3-Val
dom: nivelul 3
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
domxml – extensie pentru PHP4JAXP – parte integranta din J2SE (javax.xml.*)JDOM – interfata de programare special construitapentru Java: http://www.jdom.org/
JSXML – biblioteca pentru JavaScriptlibxml – API oferit de GNOME: http://xmlsoft.org/
Baza unor API‐uri pentru limbajele C++, Perl, PHP, Python, Ruby etc.
Folosit si de libxslt
dom: implementari
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
QDOM – parte din Qt (C++), folosit de KDEOracle XDK – implementare CMSDOM – procesari XML pe partea client/server in C/C++, JScript si VBScript (IE, IIS+ASP,…)Face parte a MSXML SDK
Xerces DOM API – platforma XML (C++/Java): http://xml.apache.org/
dom: implementari
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XmlDocument – clasa oferita de .NET Framework (C#, J#, VB.NET,...)
XML() – clasa din ActionScript (Flash)XML::DOM – modul Perl pentru DOM, bazat pe Expat (XML::Parser)
xml.dom – modul din Python, parte a PyXML
dom: implementari
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
dom: implementari
Procesarea documentelor XML:
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
dom: demo
!!
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Manipularea documentelor XML in browser
dom: browser
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Vizualizarea/procesarea documentelor XHTML si XMLse realizeaza via DOM in limbajul de scripting suportatde navigatorul Web
ECMAScript – standard: www.ecma-international.orgJavaScript (Gecko + Expat in Mozilla/Firefox et al.)JScript / VBScript (MSDOM in Internet Explorer)
dom: browser
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Uzual, se folosesc analizoare XML fara validare (e.g., Expat)
Se ofera suport si pentru procesarea asincronaa informatiilor XML
AJAX (Asynchronous JavaScript And XML) via obiectul XMLHttpRequest
dom: browser
Vezi cursurileviitoare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Arborele DOM direct in Firefox via DOM Inspector DOM Inspector
si FirebugFirebug
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
rezumat
Procesarea documentelor XMLModelul DOM: caracterizare, interfete,
niveluri de specificare, exemple
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
??