Document pro Dr. Sabin XML/HTML cesarea Corneliu DOM Object Tehnologii datelor Buraga Model (I) – profs.info.uaic.ro/~ Web busaco /
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ „ Regula deaur estec George George Bernard Shaw ă nu exist ă reguli de aur. ”
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Cum Cum putem prelucra documentele XML?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ preambul instrucțiune de procesare tag nod de tip text ( characters de început ) nod de tip atribut tag de final element XML nod de tip comentariu cu și tag tag de de final început marcat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Tipuri e.g. procesare , expresii de proces regulate regulate manual ă ri ă XML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Tipuri DOM ( procesare Document Object Model Object Document de non proces - DOM obiectual ă ri XML ă )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ procesare Tipuri SAX ( SAX XPP( condus Simple API for XML API for Simple de XML Pull Parsing XML Pull proces ă de vezi ă evenimente ri cursul XML ) ) viitor
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Tipuri procesare de Simple XML Simple proces simplificat vezi ă ri cursul XML ă viitor
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ tipuri de via API documente Tipuri - uri procesare specializate de specifice proces particular pentru – e.g. ă ri , RSS, SOAP,SVG,… RSS, , XML a ă prelucra
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Procesoare este verific Expat bine ă - doar f formatat ă , libxml r ă ( analizoare validare dac , ă MSXML ( documentul well formed ) XML ) ,... )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ conform conform Apache Apache verific Procesoare unei ă Xerces dac metode ă cu documentul , JAXP ( validare analizoare de , libxml validare este , MSXML ) XML ) – valid, e.g. , ,... DTD
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ DOM direct DOM direct niveluri Modelul interfe implement introducere DOM Core exemple î n de navigatorul ț specificare e DOM DOM ă ri Web
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ procesarea a documentelor obiectual dom Scop : intro XML XML ă : – ș standardizat i / sau HTML ă –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Interfa ță abstract de dom programare ă : pentru caracterizare XML/HTML a aplica ț iilor (API)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ independent Interfa ță abstract standardizat de dom ă www.w3.org/DOM/DOMTR de platform programare ă : pentru caracterizare ă de ă Consor ș i XML/HTML a limbaj aplica ț iul de programare Web ț iilor (API)
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pe baza Define document document c ărora ș te se pot accesa/modifica și date accesa/modifica noduri XML se pot dom o a structur documentelor ierarhie a unui a unui ierarhie : caracterizare ă logic ă XML set de arborescent obiecte ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ a paginilor DOM Core DOM HTML dom www.w3.org/TR/REC Web : pentru niveluri pentru – DOM 1 uzual, la nivel declient( la uzual, XML procesarea – de (1998) funcționalități de bază funcționalități - DOM specificare - standardizat Level - 1/ browser ă )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ recomand spații de nume XML, aplicare de stiluri CSS, de aplicare CSS, spații stiluri de numeXML, dom www.w3.org/TR/REC răspuns la evenimente etc. la evenimente răspuns : ă ri niveluri multiple multiple DOM 2 privind de (2001) - DOM specificare diverse - Level - 2/ aspecte: aspecte:
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ func dom XPath încărcare șisalvareîncărcare (asincrone),… ț www.w3.org/TR/DOM ionalit , traversare : ( unele niveluri ăț DOM 3 i deja specifice standardizate a de (2004) arborelui oferite - Level specificare - 3 , validare,, de module - Core/ )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ restructurarea unor interfețe unor interfețe + noifuncționalități restructurarea dom : niveluri www.w3.org/TR/dom/ DOM 4 de ( 2015 specificare )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (cea mai recentă actualizare: dom : DOM niveluri în continuă dezvoltare în continuă dom.spec.whatwg.org specific specific HTML Living Standard de specificare 23 martie 20 21 )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ un document HTMLun document șiarborele DOM corespunzător software.hixie.ch/ reprezentat via dom sunt disponibile sunt disponibile cu litere mari ( în în elementelor cazul HTML,numele utilities LiveDOM : core : / js /live - dom Viewer - viewer / capitals )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ un document HTMLun document șiarborele DOM corespunzător software.hixie.ch/ reprezentat via și acest nod? și acest De ceapare dom utilities LiveDOM : core : / js /live - dom Viewer - viewer /
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Modalitate a reprezent abstract ă rii dom internea ă de : interfe accesare unui ț document XML e ș i de modificare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Modalitate a datele sunt încapsulate în obiecte, înobiecte, datele suntîncapsulate ascunse și/sau reprezent protejate de prelucrarea externă directă externă de prelucrarea protejate abstract ă rii dom internea ă de : interfe accesare unui ț document XML e ș i de modificare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Nu implic independente accesare ă o implementare DOM oferă dom a / de procesare : implementare interfe interfe concret a ț e datelor ț e ă , particular pentru ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ specificația specificația curentă IDL ( Interfe Interface Interface Description Language dom ț ele (2018) : sunt definite via interfe : www.omg.org/spec/IDL/ ț e )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ prin ( propriet specificarea Define dom ș pur : te ăți interfe tipurile declarativ + interfe metode ț de e ț elor – obiecte publice IDL acestora )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ declar Ofer ă prin ă atribute,excep suport dom module, intermediul : pentru interfe interfe mo ț ii, constante ț interfe ț e, metode, tipuri,e, ș e tenire – IDL ț elor multipl ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ www.w3.org/TR/WebIDL heycam.github.io/ Ofer ă prin suport dom intermediul specificații specificații oficiale: webidl : pentru interfe - 1/ ( / W3C Recommendation W3C (în lucru, 1 (în lucru, mo interfe ț ș e tenire – 1 IDL ț martie elor multipl 20 , 21 ă 201 ) 6 )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ tipuri IDL de date construite referin valori valori baz ă de ță Sequence î Union Struct altele ntregi reale Any Double Float Boolean UShort ULong String Enum Short Char Long
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ }; interface readonly getter (elemente, atribute, caractere, comentarii,…) comentarii,…) caractere, (elemente, atribute, Declararea dom Node NodeList attribute ale arborelui XML: ale arborelui ? : item inter interfe { unsigned unsigned long (unsigned long ț f ei e ț vizând lista de noduri denoduri lista vizând e – NodeList exemplu length index ; );
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ }; interface readonly getter dom Node NodeList attribute ? : item inter { unsigned unsigned long (unsigned (unsigned long f e ț e – privind unnod dintr metod exemplu length rezultat la intrare index de tipde ă proprietate întreg lung fărăsemn de preluarede a informațiilor î : o : o ntreg ; ); : un un valoare parametru lung f lung read - o listă noduri deo listă de tip tip de ă r - only ă semn de tip de Node
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ }; interface Specificarea attribute readonly readonly dom Attr DOMString attribute attribute : interfe : Node { interfe boolean DOMString ț value ei Attr privind un atributXML: ț e ; specified – exemplu name ; ;
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ interface interface }; specified attribute readonly readonly value name dom reprezintă Attr indică DOMString attribute attribute desemnează : : Node { dacă interfe valoarea curentă a atributului boolean DOMString atributul value numele ț e ; specified – a atributului fost exemplu name Attr specificat ; ; 3 extinde propriet XML efectiv Node ăț i
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Un document care pot implementa ierarhie dom interfe : core : de obiecte ț e ( e specializate de tip nod )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Un document nodurile care pot posed implementa ă descenden ierarhie dom interfe : core : de ț i ori obiecte ț sunt e ( e specializate noduri de tip nod frunz ) ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Un document nodurile în care pot preordine parcurgerea arborelui se efectuează se efectuează arborelui parcurgerea posed implementa , în adâncime în adâncime ( , ă descenden ierarhie dom interfe : core : de depth ț i ori obiecte ț sunt - e ( e first specializate ) noduri – de tip nod tree frunz order ) ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ se realizeaz – fiec liste ă ă rui de recurg tip de noduri Accesul dom â ndu noduri , atribute : core : - la date se la ale metodele , arborelui valori ,… specifice –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Document Document Fragment Element Text Attr dom : core : CDATASection Element Element Comment (nod Comment – Element Text tipuri frunz , , ProcessingInstruction ProcessingInstruction , , EntityReference Text ă , , Text al , DocumentType de EntityReference , – arborelui CDATASection , noduri Comment DOM) , ,… ,… , ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ gestioneaz Interfe ă setul DOMException dom ț e de fundamentale : core : excep ț ii de procesare :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (obiect minimal (obiect fără nod rădăcină) DocumentFragment acces Interfe DOMDocumentFragment la dom fragmente ț e DOMNode fundamentale : core : de arbore : Node :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ pentru furnizează Interfe consultare dom Document ț acces e fundamentale : core : ș ul i / la document sau modificare :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ documentElement doctype Interfe – propriet indică tipul dedocument (DTD) indică tipul – desemnează dom Document ț e ăț fundamentale i : core : folositoare: elementul : - r ă d ă cin ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ createTextNode createAttribute getElementsByTagName importNode createElement M etode getElementById identificat identificat prin valoareaatributului () prin clonarea datele acestui nod acestui datele clonarea prin având un anumit ( nume anumit un având esențialealeinterfeței – () () creează nodde tiptext efectiv) (conținut – – () importă un nod din alt document un noddinaltdocument importă creează un nod de tip atribut ( creează de tipatribut un nod – creează unnoddeelement creează tip () – () furnizează elementul elementul furnizează etc. – oferă listaoferă elementelor tag Document ) id Attr )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ DocumentFragment CharacterData permite Interfe – prelucrate în mod unitar prelucrate acces e.g. ( , , Text tipuri de tipuri noduri DocumentType dom Document ț ul e , Node fundamentale Comment la : core : nodurile , Element , , CDATASection EntityReference arborelui , : ), ,… – Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ parentNode nodeType parentElement Proprietăți importante aleinterfeței nodeName nodeValue – – furnizează tipul nodului: element, element, atribut,… nodului: tipul furnizează desemnează nodul părinte al nodului curent desemnează alnodului părinte nodul – – – specifică elementul părinte al nodului al părinte specifică elementul furnizează numele nodului curent nodului numele furnizează oferă valoareaoferă a nodului curentă Node
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ NOTATION_NODE DOCUMENT_FRAGMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_NODE COMMENT_NODE PROCESSING_INSTRUCTION_NODE ENTITY_NODE ENTITY_REFERENCE_NODE CDATA_SECTION_NODE TEXT_NODE ATTRIBUTE_NODE ELEMENT_NODE Tipuri de noduri(proprietatea dom : core : nodeType ) Val 12 11 10 oare 9 8 7 6 5 4 3 2 1
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ childNodes firstChild previousSibling lastChild Proprietăți importante aleinterfeței aflat pe aflat același al noduluicurent nivel cucel curent alnodului pe cel aflat același nivel cu nextSibling – – – desemnează alenoduluicurent copil primul oferă lista nodurilor copil ale nodului curent alenodului copil lista oferă nodurilor specifică ultimul copil ale nodului curent alenodului copil ultimul specifică – – reprezintă precedentul nod( reprezintă precedentul indică următorul nod ( indică următorul etc. sibling Node sibling ) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ compareDocumentPosition is Equal contains de nume, are aceeași valoare, ambele noduri au același același au noduri ambele aceeași are valoare, de nume, insertBefore cu alt nod (același tip de nod, aparține aceluiași spațiu spațiu aceluiași de aparține tip nod, nod (același alt cu număr de fiecare același copii, nod copilare index pentru ambele noduri etc.) etc.) ambele noduri pentru Node() clone Metode utile oferite deinterfața () – Node cu alt nod încadruldocumentului cu alt () – verifică dacă nodul include un nod anume un include dacănodul verifică testează testează este dacă nodulcurent echivalent – () inserează un nod înaintea curent nod înaintea inserează celui un – clonează datele noduluicurent () – compară poziția curent poziția nodului compară – vezi și vezi is Same Node Node()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ hasChildNodes Metode utile oferite deinterfața replaceChild removeChild appendChild () – verifică dacă nodul curent are noduri copil are noduri dacă curent verifică nodul () () () – – – substituie unnodcopil substituie elimină elimină un nodcopil adaugă unnodcopil adaugă Node
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ facilitează acces Interfe ul la dom ț elementele DOMElement e Element DOMNode fundamentale : core : unui document unui : XML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ nextElementSibling tagName childNodes previousElementSibling attributes Proprietăți folositoarealeinterfeței firstChild pe același nivel din arbore cu elementul curent elementul același pe nivel dinarbore cu – id furnizează numele elementului furnizează numeleelementului ( – – lastChild – oferă lista atributelor asociate asociate lista oferă elementului atributelor specifică valoarea identificatorului identificatorului specifică valoarea (adică valoarea atributului atributului valoarea (adică oferă lista nodurilor copil aleelementului copil lista nodurilor oferă – indică următorul element element ( indică următorul – indică primul/ultimul nod copil indică primul/ultimul – idem, dar pentru cel precedent idem, dar pentru id tag ) Element sibling de început) ) aflat aflat )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ removeAttribute hasAttribute Metode utile specificate de interfața getAttribute setAttribute getAttributeNode () () – asociat elementului curent elementului asociat () () – verifică existența verifică existența specific unui atribut – – elimină un atribut asociat asociat elementului elimină un atribut furnizează valoarea unui atribut furnizează valoareaunuiatribut stabilește atribut stabilește valoarea unui () – oferă nodul de tip atribut noduldetip oferă Element
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ removeAttribute hasAttribute Metode utile specificate de interfața getAttribute setAttribute getAttributeNode pentru a prelucra atribute aparținând aparținând atribute a prelucra pentru e.g. se vor folosi metode metode se vorde folosi sufixate () , unui spațiu denume unui spațiu XML dat, () getAttribute – asociat elementului curent elementului asociat () () – verifică existența verifică existența specific unui atribut – – elimină un atribut asociat asociat elementului elimină un atribut furnizează valoarea unui atribut furnizează valoareaunuiatribut stabilește atribut stabilește valoarea unui () – NS oferă nodul de tip atribut noduldetip oferă () setAttribute NS () etc. NS Element
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ modelează Interfe dom Attr atributele ț e DOMNode DOMAttr fundamentale : : core : Node unui element :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ NamedNodeMap NodeList în cazul HTML, pentru liste de pentru atribute în cazulHTML, – acces acces dela colecții noduri viaindecși(vector) Interfe – acces pe baza cheilor (tablou asociativ) (tablou cheilor pebaza acces dom ț e fundamentale : core : :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ metode: metode: setNamedItem proprietate: proprietate: item() item() NodeList Interfe getNamedItem length () dom removeNamedItem ț e + – fundamentale NamedNodeMap lungimea listei de listei noduri lungimea : core : () getNamedItemNS : () și altele ()
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ParentNode ChildNode Elements Alte – – – colecție de noduri de tip nodul copil aparținând unui nod interfețe nodul părinte specific unui nod dom : core : de interes : Element
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ XPath 1.0 XPath Accesarea datelordintr dom XPath 2 XPath – recomandare : acces www.w3.org/TR/xpath/all/ (2010), versiuni la XPath 3 ulterioare noduri a Consor - (2014 un document ț iului : – , 2017 , xpath Web Web (1999) )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ o evaluarea func Expresia ț dom ie (predefinită sau specificată sau specificată (predefinită o declara un nod al un nod : se acces realizeaz XPath ț ie a documentului la pozi unui – noduri construc ă ț î ie spa n func ț iu de ț ț – XML de ie ie nume xpath de context: de programator) baz ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ î n urma Expresia dom evalu o : o mul acces valoare XPath ă ț un ime rii un num ș expresiei ir de logic la de – noduri ă noduri construc caractere r ( ă – float true , e ( node ) oferit / false ț – ie - set xpath de ) un baz obiect ă :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dom : /html/body/article Descendent xpath /game/platform – operatori /
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ nodurile dom algoritmul - Traversare copil sunt traversate î sunt traversate copil : xpath DFS ( //platform //div/a recursiv d – epth operatori - first search first n ordinea ă // dat ) ă de
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ selectează toate elementele copil ale nodului copil selectează toate elementele aflat în contextul curent ( în curent aflat contextul dom : xpath /game/*/identity Wildcard player/* – operatori * context node )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ în consola în consola evaluarea expresiilor /html/body/*/ via obiectul via obiectul browser div - $x ului Web ului XPath
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dom : Nodul xpath ./player curent – operatori .
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dom platform/ : xpath Atribut table/ @min – @* operatori - @ version
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dom Spa : xpath ț iu svg de – :* nume operatori :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
< evaluarea expresieihtml svg:circle svg:text svg:rect svg:svg html head < < < svg:svg svg:svg -- svg:circle svg:text svg:rect recunoscute De Elemente HTML > xmlns >< utilizat title width > … xmlns:svg … = xmlns:svg + xmlns:svg html > "http://www.w3.org/1999/xhtml" cx HTML SVG > /> xmlns:svg și un SVG = = > pe atribute "400" "500" navigator = incluse "200" > nume în // style > svg documentul suport SVG = xmlns:svg " :* fill nativ -- : > conduce laobținerea a 4noduri: yellow HTML, pentru = "http://www.w3.org/2000/svg" ;" /> SVG. … … …
… >< > /> SVG /> svg:rect … > >Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dom forma general : //li Filtru /game/platform xpath [ @class = "lab" /index – ă : operatori [ expresie [ [ ] 2 ] ] ]
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ 13 noduri a atributului xsl
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Pentru compara valori logice ș dom or and = != <= < >= > ț iile : operatorii + xpath de - ș iruri * div mod i numer – uzuali sunt operatori ice case sensitive : pot fi folosi ț i
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Nodul Nodurile Nodurile Nodurile Nodurile Nodul p curent ă rinte spa de tip descendente copil ț dom iilor ( context node atribut de : xpath nume ) – axe namespace attribute descend child parent self a nt
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Nodurile ori Nodurile ori Nodurile nodul nodul descendente ascendente ascendente curent curent dom : xpath descend ancestor ancestor – axe a - nt or - - or self - self
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Ce rezultat // section // section ofer / descendant / descendant ă expresi ::a ile ::* side XPath?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ un folosind axa instrument Web instrument de testare preceding xsl : xpath accesăm accesăm nodurile precedente /game/player/ rezultatul : www.xpathtester.com/xpath – axe identity expresi / preceding ei XPath ::*
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dom namespace attribute parent self //child::*[@min ../first : xpath - name – sintaxa - version > 9] prescurtat : @ .. . ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Numere Booleeni Ș Tipuri Noduri iruri string processing namespace : - de concat length() : : id() : sum() noduri not() - , dom - instruction() position() uri () , , , , () translate() starts true() round() , : last() : node() xpath - , , with() false() , count() , … floor() , , … text() , contains() – , , name() func number() , comment() ț , , ii substring() , … , ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ num ă rarea count xsl (/game/platform[@min nodurilor : extensia xpath ce XMLTools satisfac – functions - pentru o version >= 9]) anumit Visual Studio Code ă condi ț ie
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ exist ă elemente toate count(//li[@class]) = count(//li) count(//a[@ elementele dom
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ furnizarea //*[contains(text(), //*[contains(text(), "Demo")] care con ț tuturor in ș irul nodurilor "Demo"
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ media numărului de studenți alocați per proiectde per alocați media numărului studenți > > http://minunat.info/ > > > > Minunat Minunat (/projects/project/stud/text()) (/projects/project/stud/text()) 3 2 > Un Un > class class > > > > care minunat! > > nu e div :
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ > > http://minunat.info/ > > > > Minunat Minunat 3 2 > Un Un > class class > > - > " > care minunat! > xmllint > nu xmllint e evaluarea expresiilor direct înlinia de comandă desc /text(), /text(), 4, + m acOS LibXML 7 ) " XPath )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ (în loc (în loc de) pauză
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ ce recurge la clasele ce recurge folosirea folosirea XPath dom ( news pentru procesarea unui flux deștiri RSS flux unui procesarea pentru : xpath feed DOMDocument Exemplificare: ) într ) – - un program PHPprogram un programare arhiva de consultat de consultat , DOMXpath exemplelor , DOMNode
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ < < < channel channel < < < < < < < < < < < < < description title -- dc:identifier dc:date dc:creator guid pubDate category category category category category category description title xmlns:dc > alte > https://www.infoq.com > InfoQ > https://www.infoq.com/news/2021/03/java Java > https://www.infoq.com/news/2021/03/java noutăți... > > > 2021 > > > > > > News > "http://purl.org/dc/elements/1.1/" title > InfoQ Ben > & / - news , 03 lt; xsl > (i.e., 29 > - Week 05:45:00 in > ;
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ try define define } catch } echo } foreach // $ $dom $dom echo echo // xpath baleiăm { '
' $ $ preluăm news news ( $e - ( ( RuntimeException = > 'XPATH' 'FEED' 'Calea '
Noutate: = load - new ( > - - $ new > > getMessage xpath însemnările getElementsByTagname getElementsByTagname titlul (FEED); DomDocument , DOMXpath 'https://feed.infoq.com/' , xsl '/ ; - > rss fiecărei nodului: query : / < channel // em xpath (); încărcăm (aici, (XPATH) >' $e știri: valoarea elementului < elementuluiștiri: valoarea ( $dom ' . ) elementele (); { /item' ); documentul as – ); . ( ( ' ' $ title title programare news );
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ xsl un posibil rezultatun posibil al procesării datelorRSS : xpath – programare
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Metoda poate fi detip întreg determinate în urmaevaluării expresiei – (se întoarce oinstanță detip query de evaluareapildă, unei expresii Pentru a obține rezultate de tip alt () a clasei – , se metodautilizează DOMXpath oferă listanodurilor NodeList XPath XPath evaluate() )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ echo echo echo $ items $ $ xpath items '
Folosind '
Folosind '
Total = - - > > $ length evaluate xpath apariții - > . query '
' ( funcția proprietatea " count de ; (XPATH); elemente (" XPath . XPATH length count count& . (/ ")" ( (): rss DOMNodeList ) ’ . / . channel '' lt;item> ; /item) ): ;
:' ’ . ;Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ HXT js ( JAXP dom Haskell XML HaskellToolbox JSXML parte integrant parte docs.oracle.com/ – ( php.net/manual/en/ Java Java modul DOMDocument dom – bibliotec Architecture wiki.haskell.org/HXT Node.js: : implement ă ă din J2SE( javase ) JavaScript: JavaScript: – github.com/ proces book.dom.php for XML for – clasă PHP /tutorial/ javax.xml.* ă ri ă Processing jsxml.net ri jsdom DOM jaxp / / ) î jsdom n Haskell )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ baza TinyXML2 TinyXML2 QDOM org.w3c.dom.Document script:: developer.android.com/ unor libxml – biblioteci dom la github.com/ – Qt – dom bibliotec procesor – (C++) modul pentru : implement : reference doc.qt.io/qt ă de procesare DOM pentru C++ ă de procesare DOMpentru leethomason Rust XML scris în XML scris C C++, Perl, PHP, Python, Ruby,… PHP,Python, C++, Perl, – : / interfață DOM(Android) interfață doc.servo.org/script/dom/ org /w3c/dom/Document.html - 5/qdomdocument.html /tinyxml2 ă : xmlsoft.org ri
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ XML::DOM xml.dom XmlDocument docs.microsoft.com/ Xerces DOM API DOM Xerces developer.apple.com/ bazat XMLDocument – – modul modul pe (C++ dom procesorul procesorul Python și – Perl en Java): clas documentation : implement – - us/ p : – roiect ă search.cpan.org/ dotnet : clasă .NET Framework .NET docs.python.org/3/ xerces.apache.org Expat / api Objective axat axat p / / : system.xml.xmldocument foundation libexpat.github.io e ă proces perldoc?XML ri - C /Swift library / xmldocument (C# ă /xml.dom.html r i etal. XML ::DOM )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ node OpenDocument oferite de serviciul cartografic liber liber cartografic de serviciul oferite dom - xmpp documentelor ODFînC#,Java, PHP, documentelor Open : wiki.openstreetmap.org/wiki/OSM_XML opendocumentformat.org/ api – Street Street wiki.openstreetmap.org/ biblioteca github.com/ - uri Map Format particulare Node.js (JavaScript) Node.js API xmppjs ( – ODF acces acces la dateleXML /xmpp.js ) developers SDKs wiki ( OpenStreetMap exemple /API – Python procesarea procesarea avansat pentru / ,… XMPP )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Node.js, developer.mozilla.org/Web/API/ Xamarin.Forms SVG DOM API DOM SVG TwiML specificate în XAML pentru Android, pentru în XAML specificate servicii dom dotnet.microsoft.com/apps/ (Apache Batik): (Apache PHP, Python, Ruby: PHP,Python, lor ( : Twilio api de telefonie – - uri – procesarea Markup Language Markup crearea via C#deinterfețe particulare xmlgraphics.apache.org/batik Document_Object_Model#SVG_interfaces Twilio www.twilio.com/docs/voice/twiml documentelor xamarin via biblioteci ) / ( xamarin API iOS exemple și Windows – avansat SVG SVG acces - C# - forms utilizator utilizator , î n Java Java, / area )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ program Procesarea dom documentelor API XML API : implement procesor arbore DOM XML/HTML ă ri HTML date XML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ – recurgând la diverse limbaje deprogramare deși programele diferă, maniera deși de procesare programele este similară, datorită standardului DOM este similară, datorităstandardului la listade proiecte propuse a informațiilor referitoarea informațiilor Studiu Studiu de caz: prelucrarea acestei prelegeri de cod asociate vezi exemplele –
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ } if } foreach $ $dom $dom $ projs modified echo $ } } if echo $ // ( titles xmldoc $ $ // echo echo $ else preluăm ( modified attr $ modified nu proj - = > "
" "" – ( " ); ( arborele ( proiectul " documentul class " project un title specificată a fiecare fost obiect " " pe îi ); ; ) . afișăm " ca . modificat primul "" ); va "" î proces modificat n clasa ; arborele > limbajul proiectului? în parte D ă ri DOM text DOM PHPProiect: = există { = load " " = new ( $dom - $ $ de de > $ projs = proj = proj hasAttribute nodurile ( $dom 0 clasa clasa ) "projects.xml" DomDocument = ; { atributul - - 1 - . > > > as // ; htmlentities getElementsByTagName setAttribute getElementsByTagName dacă - necunoscuta
" " > $ saveXML < . proj element $ em proj " DOM ( class ) " >" class { - > . ); ; - ( $ getAttribute ( ul $ (); " ", < titles xmldoc class // // // " title // a )) îl indică încărcăm instanțiem // marcăm // fost creăm { serializare > [ procesăm 0 " și ] , ; - // ) modificat, "D" > - l dacă . nodeValue este alegem "
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ version > > http://web.info/ > > > Web4all MegaProj /> 3 2 > > ... class > > > > > ?> > > proiectele propuse -- : >
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ rezultatul obținut în urma procesării DOM înurmaprocesării obținut rezultatul version > > http://web.info/ > > > /> Web4all MegaProj Web4all MegaProj 3 2 > ... class class > > > > > de clasa M > ?> > > proiectele propuse -- >
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ try from import import except for # dom doc print : print parcurgem proj xml.dom.minidom = = 'Din ' xml.dom urllib Exception urllib.urlopen este parse 'Proiectul in păcate, dom. de (doc) elementele clasă: getElementsByTagName : proces ' a + survenit ( proj. 'projects.xml’ ' + import proj. childNodes < ă project ri o getAttribute parse DOM excepție.' > ) și [ 1 oferim î ]. n firstChild ( ( # # ' ' limbajul project class îl încărcăm procesăm… informații ' ) ' . ): nodeValue documentul Python despre + avansat fiecare \
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ try … using } } foreach XmlNodeList // doc doc catch // } if } foreach XmlNodeList // afișăm { a Console Console selectăm ( . proj survenit Load = System new ( Exception . ( HasAttribute XmlElement informații ( ( XmlElement "projects.xml" . XmlDocument . Write WriteLine . nodurile o Xml projs titles excepție… ( ; "Proiect: e = privitoare ) = ( doc { < ( proj " proj "de class title title ); . (); GetElementsByTagName . in clasa > SelectNodes {0} in // // " via projs ) la pentru instanțiem titles " == , o proiecte: '{0}'." title true expresie ) ) { { . a InnerXml ) , fi { proj ( "./ // încărcat un titlu există title . XPath GetAttribute document ); și " ); clasă clasa ( " project specificată? XML ( " proces class î " n C# (.NET) ); avansat " )); ă ri DOM
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ static … traversează Document DocumentBuilder DocumentBuilderFactory … import import } if copil if Node } if // traversează traversează System afișăm (copil (copil ( nod nod private = copil javax.xml.parsers org.w3c.dom.*; . . getAttributes getNodeType nod != != . numele out doc null null ( . = doc getNextSibling void . println nod (copil); (copil); = ) ) . docb getDocumentElement nodurilor docb . traversează getFirstChild (). ( () . "Elementul parse getLength == = .*; dbf dbf Node (); de ( . "projects.xml" newDocumentBuilder = ( tip Node DocumentBuilderFactory (); . ELEMENT_NODE () '" element, + + " nod) nod atribute." ()); . getNodeName // // existăminim un nod // parcurgem în lățime... // existăminim un copil (sub // parcurgem în adâncime... // { plus ); traversăm ); numărul ) { (); recursiv () . de newInstance + î "' atribute proces n are arborele limbajul limbajul sibling " + ă (); - nod)? ri ? DOM DOM Java
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ a documentelor la nivel de clientla nivel Web Prelucrareaprin DOM imgur.com/ gallery XML / EuVmR /HTML ?
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ work net - rendering browser Arhitecturaunui preter inter user JS - interface engine engine data par ser - browser procesări XML generice + particulare: SVG, RSS,… display backdisplay Web
-
end
persistence data
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ – Accesarea f ă r ă validare interpretat / procesarea JavaScript – se dom realizeaz e de e : browser documentelor ( ECMAScript navigatorul ă via DOM de ) Web HTML programe ș i XML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ – pentru detalii, a se studia unele dintre prelegerile materiei detalii, a se prelegerile dintre pentru studia unele Accesarea profs.info.uaic.ro/~ f ă r ă validare interpretat / procesarea Full JavaScript – se busaco - dom Stack realizeaz e de e Web : browser / teach documentelor ( ECMAScript navigatorul Development / courses ă via DOM de / staw ) Web HTML /web programe - film.html ș i XML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Un program JavaScript are se recurge în principal la în principal se recurge corespunz specific HTML5, în continuă dezvoltare în continuă HTML5, specific ( Document Object Model ă tor documentului DOM acces Living Standard Living la arborele ) HTML DOM DOM
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ interfețeleDOM pentru Programul JSrecurgeobiecte la implementând reprezent ă rii ( interne a i.e. arboreleDOM) accesare unui document a ș i modificare HTML a
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ inspectarea (Discord aici , o instan creat cu arborelui ță de de framework browser dom DOM : browser Web în unei aplicații cadrul native - ul asociat Electron unui : Chromium document HTML document + Node.js )
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ arbore root le ) al altui arbore corespunzător unui document unui corespunzător arbore al altui ) atașat întotdeauna de noduriunui arbore DOM căruielementrădăcină al e unnod( ci doar încapsulat de un document) deun ci doarîncapsulat (nu poate depoate exista sine (nu Shadow DOM ( shadow - stătător, stătător, tree ) avansat shadow
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ shadow root developer.mozilla.org/Web/ descris în dom.spec.whatwg.org/# DOM Living Standard DOM Living shadow Web_Components girliemac.com/presentation DOM shadow (23 martie 2021)(23 martie / - Using_shadow_DOM slides/ - trees webcomponents avansat shadow shadow /shadowdom.html tree host
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ la diverse istoricul De ( caracteristici asemenea e.g. navig , pus la informa obiecte transfer (a) transfer ă rii , programele ale , dispozi fereastra ț ii oferite navigatorului privind sincron ț ie de de contextul de JavaScript au redare mediul de date,… browser , laten a con rul ț de a re avansat ă ț rii execu inutului ț elei acces ), ț ie ,
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ tehnologii oferite de oferite tehnologii browser – platform.html5.org avansat
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ detalii privind fiecare API implementat de navigatorul Web de navigatorul implementat fiecare API detalii privind devdocs.io/dom/
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ instan poate Arborele ță a fi clasei accesat DOM implement / asociat alterat â nd documentului via interfa obiectul ț a HTMLDocument document HTML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ interface }; NodeList void void void void attribute attribute readonly readonly readonly attribute // furnizează writeln write close open HTMLDocument DOMString HTMLElement DOMString attribute attribute attribute getElementsByName ( (); (); in ( in DOMString // // o DOMString închide deschide listă interfa DOMString DOMString DOMString cookie title // de emite body fluxul elemente : ; text ță Document un text ; specificat o ; ); flux URL domain referrer de excepție ); ( in scriere // // de conform ; DOMString scrie idem, scriere { ; ; // // ă // // // // dacă acces acces în URL titlul domeniul adresa un și dar unui limbajul forțează șir (alterează - e inserează ul documentului numeElement la la asignată de absolut resursei nume cookie elementul caract de redarea declarativ care de DOM - și o al uri . ce tag ( valoare New e.g. documentului aparține -
referă ); ul conținutului , curent) Line cod WebIDL pagina HTML)Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ stipulate de Deoarece putem recurge extinde interfața specifica la Document func ț HTMLDocument ia DOM general ț ionalit , ăț ile ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ desemneaz stipulate de de exemplu, p de exemplu, Deoarece putem ă nodul recurge extinde interfața specifica - roprietatea r ă d ă cin la Document ă al unui document HTML document al unui ă func ț HTMLDocument ia documentElement DOM general ț ionalit , ăț ile ă
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Node fiecare o interfață specifică element HTML fiecărui Interfa pe element HTML specific specific HTML element cea Element ț general a HTMLElement ă oferit Element HTML ă o de DOM extinde deriv ă din ea DivElement HTML
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/
html html