Document pro Dr. Sabin XML/HTML cesarea Corneliu DOM Object Tehnologii datelor Buraga Model (I) – profs.info.uaic.ro/~ Web busaco /

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ „ Regula deaur estec George George Bernard Shaw ă nu exist ă reguli de aur. ”

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Cum Cum putem prelucra documentele XML?

Dr. Sabin Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ Tipuri e.g. procesare , expresii de proces regulate regulate manual ă ri  ă XML

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Tipuri DOM ( procesare Object Document de non proces - DOM obiectual ă ri XML ă )

Dr. Sabin Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ Tipuri procesare de Simple XML Simple proces simplificat vezi ă ri cursul XML ă viitor

Dr. Sabin Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ Procesoare este verific Expat bine ă - doar f formatat ă , libxml r ă ( analizoare validare dac , ă MSXML ( documentul well formed ) XML ) ,... )

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ procesarea a documentelor obiectual dom Scop : intro XML XML ă : – ș standardizat i / sau HTML ă –

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Interfa ță abstract de dom programare ă : pentru caracterizare XML/HTML a aplica ț iilor (API)

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ Modalitate a reprezent abstract ă rii dom internea ă de : interfe accesare unui ț document XML e ș i de modificare

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ Un document care pot implementa  ierarhie dom interfe : core : de obiecte ț e ( e specializate de tip nod )

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ gestioneaz Interfe ă setul DOMException dom ț e de fundamentale : core : excep ț ii de procesare :

Dr. Sabin Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ pentru furnizează Interfe consultare dom Document ț acces e fundamentale : core : ș ul i / la document sau modificare :

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ facilitează acces Interfe ul la dom ț elementele DOMElement e Element DOMNode fundamentale : core : unui document unui : XML

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ modelează Interfe dom Attr atributele ț e DOMNode DOMAttr fundamentale : : core : Node unui element :

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 , Web Web (1999) )

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ dom : //body/article Descendent xpath /game/platform – operatori /

Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ dom : Nodul xpath ./player curent – operatori .

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dom platform/ : xpath Atribut table/ @min – @* operatori - @ version

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ dom Spa : xpath ț iu svg de – :* nume operatori :

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ < evaluarea expresiei

html 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 Buragaprofs.info.uaic.ro/~busaco/ dom forma general : //li Filtru /game/platform xpath [ @class = "lab" /index – ă : operatori [ expresie [ [ ] 2 ] ] ]

Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ 13 noduri a atributului

  • : xpath (de tipElement) class ș irul – operatori de caractere av //li[@class= "lab"] ând ca "lab" valoare

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ Ce rezultat // section // section ofer / descendant / descendant ă expresi ::a ile ::* side XPath?

    Dr. Sabin Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ dom namespace attribute parent self //child::*[@min ../first : xpath - name – sintaxa - version > 9]     prescurtat : @ .. . ă

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ exist ă elemente toate count(//li[@class]) = count(//li) count(//a[@ elementele dom

  • : care au nu xpath href ]) ]) = count(//a) includ – specificat func atributul   ț true false ii atributul href class

    Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ furnizarea //*[contains(text(), //*[contains(text(), "Demo")] care con ț tuturor in ș irul nodurilor "Demo"

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ (în loc (în loc de) pauză

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 > ; ) the Design - dc:date news of OpenJDK > > > March GMT – > programare mar22 ; / 2021 p > = www.rssboard.org > - "2.0" roundup - roundup > - mar22 - - 2021/ - 2021/ >

    Dr. Sabin Buragaprofs.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 ); ) // ' ' // ) ) - - expresia adresa > > ) item item { XML ( ( 0 0 fluxului ) ) - - XPath > > getNodePath nodeValue title metodă din DOMNode > utilizată de știri . '

    ' RSS () . ;

    Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ xsl un posibil rezultatun posibil al procesării datelorRSS : xpath – programare

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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..* ă ri ă Processing jsxml.net ri jsdom DOM jaxp / / ) î jsdom n Haskell )

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ program Procesarea dom documentelor API XML API : implement procesor arbore DOM XML/HTML ă ri HTML date XML 

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 - = > "

    " "

    Proiect: = 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 "
    " – ( " ); ( 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 PHP

    Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ version > > http://web.info/ > > > Web4all MegaProj /> 3 2 > > ... class > > > > > ?> > > proiectele propuse -- : >

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ a documentelor la nivel de clientla nivel Web Prelucrareaprin DOM imgur.com/ gallery XML / EuVmR /HTML ?

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ tehnologii oferite de oferite tehnologii browser – platform..org avansat

    Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ detalii privind fiecare API implementat de navigatorul Web de navigatorul implementat fiecare API detalii privind devdocs.io/dom/

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ stipulate de Deoarece putem recurge extinde interfața specifica la Document func ț HTMLDocument ia DOM general ț ionalit , ăț ile ă

    Dr. Sabin Buragaprofs.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 Buragaprofs.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 Buragaprofs.info.uaic.ro/~busaco/ html html