|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
Document Object Model (DOM) pentru documente XML/HTML | ||||||
|
||||||
Introducere si caracterizare l9v19vp Interfete si implementari DOM Core - nivelul 1 DOM nivelul 1 pentru HTML DOM nivelul 2 XML prin SAX Concluzii -------------------------------------------------------------------------------- 1. Introducere si caracterizare Aceasta structura logica este una arborescenta, orientata-obiect: documentele sint modelate utilizind obiecte, iar modelul nu ofera doar o vizualizare structurata a documentului, ci si o maniera de specificare a comportamentului lui si a obiectelor componente. Fiecare element al unui document poate fi privit, deci, ca un obiect, fiecare obiect avind identitate si propriile sale functii. Exact ca si in modelul obiect din cadrul metodologiei orientate-obiect, DOM identifica: interfetele si obiectele utilizate sa reprezinte si sa manipuleze un document; semantica acestor interfete si obiecte (inclusiv comportamentul si atributele lor); relatiile si dependentele intre aceste interfete si obiecte. Structura documentelor SGML (Standard Generalized Markup Language) era in mod traditional reprezentata de un model de date abstracte, nu printr-unul orientat-obiect. Astfel, modelul vechi era centrat asupra datelor, pe cind in modelul obiect datele sint incapsulate in obiecte, ascunse si/sau protejate de prelucrarea externa directa. Functiile (metodele) asociate acestor obiecte determina modul in care obiectele pot fi manipulate. Modelul avut in discutie in continuare consta din doua parti: nucleul DOM utilizat sa reprezinte functionalitatea documentelor XML generale (denumit si DOM Core); DOM HTML, bazat pe DOM Core, defineste o extindere a modelului obiect pentru documentele HTML. O implementare a modelului trebuie sa aiba in vedere implementarea obligatorie a tuturor interfetelor fundamentale definite de DOM Core, conform semanticii DOM. Mai mult, trebuie sa implementeze cel putin una dintre interfetele HTML si XML, impreuna cu semanticile aferente. Cercetarile intreprinse de Consortiul Web in ultimii ani vizeaza mai multe nivele (stadii) de specificare a modelului. Nivelul 0 (pentru HTML) a fost nivelul de functionalitate a versiunilor 3 ale navigatoarelor Netscape si Internet Explorer. Nivelul 1 de care ne vom ocupa in detaliu deja este recomandare standardizata incepind cu octombrie 1998, in prezent lucrindu-se la standardizarea nivelului 2. Nivelul 1 nu defineste in nici un fel raspunsul la evenimente, cu toate ca a fost influientat major de HTML Dinamic, lasind in responsabilitatea nivelului 2 specificarea acestora. DOM nu este o specificare binara si nu defineste nici o forma de interoperabilitate la nivel binar, in contrast cu alte tehnologii. DOM reprezinta un model obiectual ce specifica interfete si nu este un set de structuri de date (abstracte). De asemeni, nu defineste semantica detaliata pentru HTML sau XML. Tehnologia COM, ca si CORBA, reprezinta o modalitate, independenta de limbaj, de a specifica interfete si obiecte, iar DOM are vedere numai documentele HTML si XML, putind fi implementat, fie folosind COM sau CORBA, fie limbaje ca Java sau ECMAScript. 2. Interfete si implementari In cadrul nivelului 1 al modelului intentionat s-au limitat anumite functionalitati. Nivelele ulterioare, bazate pe DOM Core, vor oferi: un model structural pentru submultimile elementelor interne si externe ale documentelor; validare prin intermediul schemelor (eventual prin XML Schema); controlul reprezentarii documentelor prin foi de stiluri (CSS sau XSL); controlul accesului; siguranta in executie; evenimente. 3. DOM Core - nivelul 1 3.1 Structura Tipurile fundamentale ale nodurilor DOM sint cele din urmatorul tabel: Tip Descendenti Tipurile de noduri si descendentii lor In cadrul modelului, NodeList si NamedNodeMap sint dinamice, in sensul ca orice modificare a structurii unui document implica automat si reactualizarea tuturor instantelor NodeList si NamedNodeMap, respectiv. Orice schimbari ale unui nod al arborelui de noduri sint reflectate in toate referintele la acel nod in NodeList-ele si MapNodeMap-ele asociate. 3.2 Tipuri de interfete 3.3 Tipul fundamental DOMString typedef sequence<unsigned short> DOMString; DOMException defineste mecanismul de raspuns la aparitia exceptiilor. Exceptiile apar in circumstante speciale, de exemplu cind o operatiune este imposibil de executat (pierdere de date, implementare devenita instabila etc.). Anumite limbaje de programare nu au implementat conceptul de exceptie. Pentru implementarile DOM in astfel de limbaje, raportarea exceptiilor se va realiza folosind mecanismele native de semnalare a erorilor. Definitia conform standardului IDL (Interface Definition Language, folosit in specificatiile CORBA 2.2 si adoptat de DOM) este: exception DOMException A unsigned short code; Codurile de exceptie sint numere intregi indicind ce tip de eroare a aparut. Pot fi folosite o serie de constante predefinite: Constante predefinite Semnificatie Coduri de eroare folosite de DOMException interface DOMImplementation A boolean hasFeature(in DOMString feature, in DOMString version); Metoda hasFeature testeaza daca implementarea poate furniza o anumita operatiune. Pentru DOM nivelul 1, parametrii de intrare pot avea valorile "HTML" sau "XML" pentru feature si "1.0" pentru version, respectiv. DocumentFragment este un obiect document minimal. In multe situatii nu trebuie lucrat cu intregul document, ci doar cu diverse fragmente ale sale. Arborele de noduri ale unui fragment de document este un sub-arbore al structurii de noduri a documentului luat in intregul lui. In functie de implementare DocumentFragment poate reprezenta o entitate XML, un element HTML sau chiar un grup de elemente: interface DocumentFragment : Node A Dupa cum se remarca, DocumentFragment are ca interfata de baza interfata Node pe care o vom prezenta mai jos. Document reprezinta un document XML/HTML, conceptual fiind radacina arborelui de noduri-obiecte ale documentului si oferind accesul la informatiile continute de acesta. Din moment ce elementele (marcatorii), nodurile de tip text, comentariile, instructiunile de procesare (ce pot apare mai ales in cadrul documentelor XML) nu pot exista in afara contextului unui document, interfata Document contine de asemeni metodele de baza necesare pentru a crea aceste obiecte. Obiectele de tip Node instantiate vor avea un atribut numit ownerDocument care le va asocia documentului in al carui context au fost create. Interfata Document are ca membri trei atribute: doctype de tip DocumentType reprezinta declaratia tipului de document (DTD) asociata unui document particular. Pentru HTML, DTD este definita de Consortiul Web in specificatiile limbajului si nu se asociaza niciodata documentelor deoarece nu poate fi modificata. Documentele XML pot avea sau nu definite DTD-urile aferente, fiecare DTD in parte specificind un tip de document XML. In DOM nivelul 1, doctype este declarat read-only, deci nu poate fi alterat. implementation de tip DOMImplementation specifica implementarea sau implementarile disponibile pentru procesarea documentului. documentElement de tip Element specifica nodul radacina de accesare a structurii arborescente a documentului (pentru HTML este "HTML", evident). Ca metode se pot mentiona: createElement() creeaza un element de un anumit tip (astfel se pot insera noi tag-uri intr-un document HTML, asa cum se permite in JavaScript de exemplu); createTextNode(), createComment(), createCDATASection(), createProcessingInstruction() vor genera noduri-obiect de tip text, comentariu, sectiune Character DATA, instructiune de procesare, respectiv; createAttribute() creeaza un obiect atribut care va fi asociat unui element specificat; getElementsByTagName() va returna o lista ordonata de noduri NodeList pentru toate elementele corespunzatoare unui tag, ordonarea nodurilor realizindu-se prin parcurgerea in preordine a arborelui. Un exemplu: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> Arborele de noduri-obiect asociat documentului este ilustrat de figura urmatoare: getElementByTagName("*") va furniza toate nodurile arborelui, in preordine. Node este o interfata importanta care defineste un tip primar pentru intregul model DOM, reprezentind un singur nod in cadrul arborelui asociat unui document. Atributele nodeName, nodeValue si attributes sint introduse ca mecanism pentru furnizarea informatiilor despre noduri fara conversie de tipuri (vizualizare "simplificata", nu una "orientata-obiect"). Fiecare nod va avea asociata o lista ordonata continind descendentii sai, plus atribute specificind nodul parinte, primul si ultimul nod copil, daca exista. Ca metode importante se pot mentiona cele manipulind nodurile copil: insertBefore(), replaceChild(), removeChild(), appendChild(), cloneChild(), hasChildNodes() etc. NodeList reprezinta o interfata care ofera un tip abstract de data pentru colectiile ordonate de noduri, fara a defini sau restrictiona cum aceasta colectie va fi implementata. Fiecare implementator va decide ce tipuri de date concrete vor fi utilizate. Membrii colectiei vor fi accesati prin intermediul unui index intreg, numerotarea incepind cu valoarea 0. interface NodeList A S; NamedNodeMap este folosita pentru reprezentarea abstracta a colectiilor neordonate de noduri, accesate prin intermediul numelui. NamedNodeMap nu deriva din NodeList. interface NamedNodeMap A CharacterData este o interfata ce extinde Node cu un set de atribute si metode pentru accesarea datelor de tip caracter in cadrul DOM. Attr reprezinta un atribut din cadrul unui obiect de tip Element. In mod tipic, valorile permise ale atributelor sint definite in DTD-ul corespunzator documentului. In DOM, Attr nu se considera ca apartine arborelui de noduri-obiect al documentului. Atributele de tip Attr sint vazute ca proprietati ale elementelor (marcatorilor), putind fi asociate nodurilor Element continute de obiecte de tip DocumentFragment. interface Attr : Node A readonly attribute DOMString name; readonly attribute boolean specified; attribute DOMString value; Pentru documentele HTML/XML valorile atributelor nu sint doar siruri de caractere. Majoritatea valorilor atributelor in DOM vor fi considerate, insa, de tip caracter, conform tabelului: Tipuri DTD Tipuri DOM Corespondenta dintre tipurile DTD si tipurile DOM De exemplu, pentru fragmentul de document XML: ... vom avea un obiect Element pentru care tagName="section". Atunci, getAttribute("id") va returna sirul "demo", iar getAttribute("version") va da "draft". Text este o interfata ce reprezinta continutul textual (date siuri de caractere) al unui nod de tip Element sau Attr. Daca intre tag-urile de inceput si de sfirsit nu exista alte tag-uri, textul va fi continut intr-un obiect implementind interfata Text. Comment reprezinta continutul unui comentariu delimitat de <!-- si -->: interface Comment : CharacterData A 3.5 Interfete extinse 4. DOM nivelul 1 pentru HTML specializarea interfetelor si adaugarea de noi facilitati pentru specificarea orientata-obiect a documentelor HTML; oferirea unor mecanisme convenabile pentru operatii comune si frecvente asupra documentelor HTML. DOM pentru HTML defineste o interfata generica denumita HTMLCollection care reprezinta o lista abstracta de noduri. Un nod poate fi accesat fie printr-un index ordinal, fie prin nume, fie prin atributele de identificare: interface HTMLCollection A readonly attribute unsigned long lenght; Pentru fiecare marcator definit de specificatiile HTML 4, se ofera o interfata, ca de exemplu: Element HTML Interfata DOM Citeva elemente HTML si interfetele DOM corespunzatoare interface HTMLElement : Element A attribute DOMString id; attribute DOMString title; attribute DOMString lang; attribute DOMString dir; attribute DOMString className; Atributele id, title, lang, dir, className au semantica prezentata in specificatiile HTML 4. Astfel, pentru elementul PRE avem urmatoarea ierarhie de interfete: O serie din interfetele noi: DOMImplementation2 este extinsa cu metodele necesare pentru crearea unei instante a unui document XML: interface DOMImplementation2 : DOMImplementation A Metoda createDocumentType va crea un nod vid de tip DocumentType avind Node.ownerDocument setat null, iar createDocument va crea un obiect Document XML. Document2 extinde interfata Document cu o metoda ce permite importarea nodurilor dintr-un alt document: interface Document2 : Document A Nodul returnat nu are parinte (parentNode este vid). Se creeaza un obiect nod apartinind documentului care il importa cu valorile atributelor identice cu cele ale nodurilor sursa nodeName si nodeType. Nodul sursa nu va fi alterat. Nodurile de tip Entity, Document, DocumentType si Notation nu pot fi importate. Parametrul importedNode desemneaza nodul de importat, iar deep daca este true se importa in mod recursiv subarborele avind ca nod radacina nodul importat. 5.2 Foi de stiluri descrise de DOM nivelul 2 StyleSheet este o interfata abstracta de baza pentru oricare tip de foi de stiluri, reprezentind o unica foaie de stiluri asociata unui document structurat. In HTML aceasta reprezinta fie o foaie de stiluri externa, inclusa prin marcatorul LINK, sau interna, prin STYLE. In XML, aceasta interfata reprezinta o foaie de stiluri externa, inclusa printr-o instructiune de procesare a foilor de stiluri. interface StyleSheet A readonly attribute DOMString type; attribute boolean disabled; readonly attribute Node ownerNode; readonly attribute StyleSheet parentStyleSheet; readonly attribute DOMString href; readonly attribute DOMString title; readonly attribute MediaList media; StyleSheetList ofera o colectie ordonata, abstracta, de foi de stiluri: interface StyleSheetList A readonly attribute unsigned long length; MediaList ofera o abstractizare a unei colectii ordonate de tipuri de medii (cum ar fi text, audio sau video), fara a constringe implementarea acesteia. interface MediaList A attribute DOMString cssText; readonly attribute unsigned long length; DocumentStyle specifica un mecanism de accesare a foilor de stiluri asociate unui document: interface DocumentStyle A readonly attribute StyleSheetList styleSheets; 5.3 Evenimente proiectarea unui sistem generic de evenimente care sa permita: definirea activitatilor ce vor fi executate la aparitia unui eveniment, descrierea fluxului de evenimente printr-o structura arborescenta si oferirea unor informatii contextuale pentru fiecare eveniment in parte. In plus se doresc: conceperea unui set standard de evenimente pentru controlul interfetei cu utilizatorul si notificarea modificarilor (de structura) ale documentelor. oferirea unui subset comun al evenimentelor utilizate de navigatoarele actuale. Cerintele de proiectare: fluxul de evenimente Modelul trebuie sa suporte mai multe proceduri de detectare a evenimentelor asociate unui nod si sa poata receptiona evenimente inainte si dupa ce o implementare DOM a procesat un eveniment. mecanismul de detectare a aparitiei evenimentelor Modelul trebuie sa defineasca un mecanism programabil de specificare a modului de detectare a evenimentelor (sistem si definite de utilizator). Modelul trebuie, de asemeni, sa defineasca interactiunea intre acest mecanism si cel de specificare a evenimentelor din HTML 4. Modelul trebuie sa defineasca reguli de interactiune a evenimentelor definite fie la nivelul marcatorilor, fie prin stiluri sau prin intermediul script-urilor. informarea contextuala Este necesar sa se specifice un mecanism de accesare a informatiilor contextuale referitoare la orice eveniment survenit. tipuri de evenimente Modelul trebuie sa permita crearea unor multimi de evenimente, diferite de cele specificate in cadrul DOM. Modelul trebuie in plus sa suporte evenimente ale interfetei cu utilizatorul si sa defineasca un set de evenimente privind modificarea de structura sau de stil a unui document. Modelul DOM nivelul 2 defineste urmatoarele tipuri de evenimente: Evenimente trimise de interfata cu utilizatorul (navigator Web) sint: click, mousedown, mouseup, mouseover, mousemove, mouseout, keypress, keydown, keyup, resize, scroll. Evenimente de modificare a structurii documentului: subtreeModified, nodeInserted, nodeRemoved, attrModified etc. Evenimente HTML (definite de specificatiile HTML): load, unload, abort, error, select, submit, focus, blur si altele. Interfetele din cadrul modelului sin urmatoarele: EventTarget este implementata de toate nodurile: interface EventTarget A void addEventListener(in DOMString type, in EventListener listener, in boolean useCapture); void removeEventListener(in DOMString type, in EventListener listener, in boolean useCapture); EventListener este mecanismul primar de manipulare a evenimentelor: interface EventListener A void handleEvent(in Event event); Event este o interfata utilizata sa ofere informatii contextuale pentru un eveniment, informatii folosite de o procedura de tratare a acelui eveniment. interface Event A attribute DOMString type; attribute Node target; attribute Node currentNode; attribute unsigned short eventPhase; void preventBubble(); void preventCapture(); void preventDefault(); 5.4 Filtre si iteratori Iteratori Iteratorii se creeaza prin metoda createNodeIterator. Nodurile de tip iterator vor fi accesate prin intermediul interfetei NodeIterator prezentata in continuare: interface NodeIterator A readonly attribute long whatToShow; readonly attribute NodeFilter filter; Atributul whatToShow stabileste tipul de noduri ce vor fi returnate de iterator: toate nodurile (SHOW_ALL), elementele (SHOW_ELEMENT), texte (SHOW_TEXT), noduri-document (SHOW_DOCUMENT) etc. Filtre interface NodeFilter A short acceptNode(in Node n); Un exemplu class NamedAnchorFilter implements NodeFilter Pentru folosirea filtrului, utilizatorul va trebui sa-l instantieze si sa creeze un iterator: NamedAnchorFilter myFilter; Interfata TreeWalker interface TreeWalker A readonly attribute long whatToShow; readonly attribute NodeFilter filter; DOM nivelul 2 defineste si interfata DocumentIF continind metode pentru crearea iteratorilor meniti sa traverseze (prin metoda depth first search (DFS), pre-ordine) nodurile unui document XML/HTML. interface DocumentIF A short createNodeIterator(in Node root, in short whatToShow, in NodeFilter filter); 6. XML prin SAX 6.1 Interfata SAX In mod uzual, SAX are implementari in C sau Java. SAX in Java Vom ilustra succint pachetul de distributie SAX org.xml.sax care se compune din 11 clase si interfete de baza, la care se alatura 3 clase suplimentare si 4 clase demonstrative, totul divizindu-se in 5 grupuri: interfete implementate de analizorul (parserul) documentelor XML: Parser si AttributeList (obligatorii), plus Locator (optionala); analizorul XML se mai denumeste si SAX Driver. interfete implementate de aplicatia care doreste sa manipuleze documentele XML via driverul SAX: DocumentHandler, ErrorHandler, DTDHandler, EntityResolver pentru procesarea documentului, raportarea erorilor, analiza definitiei tipului de document (Document Type Definition) si rezolvarea entitatilor XML, respectiv. Toate aceste clase pot fi utilizate optional. clase SAX standard (care pot fi folosite atit de parsere cit si de aplicatii): InputSource, SAXException, SAXParseException si HandlerBase, toate acestea fiind implementate in intregime de SAX. clase aditionale specifice Java, complet implementate: ParserFactory, AttributeListImpl si LocatorImpl. clase demonstrative a capabilitatilor SAX, in fapt aplicatii Java: SystemIdDemo, ByteStreamDemo, CharacterStreamDemo si DemoHandler. Aceaste clase nu fac parte din specificatiile de baza ale SAX si pot sa nu apara in implementari SAX in alte limbaje. Interfata de baza a interfetei SAX este org.xml.sax.Parser care trebuie implementata de toate analizoarele XML, permitind aplicatiilor sa inregistreze metode de raspuns la diverse tipuri de evenimente si sa initializeze procesul de analiza a documentelor XML incarcate via URI sau printr-un flux de caractere. Interfata org.xml.sax.DocumentHandler reprezinta interfata principala pe care trebuie s-o implementeze o aplicatie utilizind SAX. Daca aplicatia doreste sa fie informata asupra evenimentelor ce pot interveni in procesul de analiza, va implementa aceasta interfata si va folosi o instanta a ei prin intermediul metodei setDocumentHandler in cadrul parserului SAX. Parserul va utiliza instanta pentru a raporta diverse evenimente precum inceputul/sfirsitului unui element XML (startElement, endElement), a unei instructiuni de procesare etc. Ordinea evenimentelor va fi in fapt data de ordinea de aparitie fizica a diverselor elemente ale documentului XML care se doreste a fi analizat. Pentru procesarea atributelor asociate elementelor XML se va folosi interfata org.xml.sax.AttributeList. Iata un exemplu de iterare a intregii liste de atribute asociate elementelor unui document XML: public void startElement (String ename, AttributeList atts) A for (int i = 0; i < atts.getLength(); i++) A Daca elementul nu va avea atribute, atunci getLenght() va returna 0. Functiile getName(), getType() si getValue() furnizeaza numele, tipul (CDATA, ID, IDREF, NMTOKEN, ENTITY etc.) si valoarea atributului, respectiv. Clasa org.xml.sax.Locator este folosita pentru localizarea documentelor XML prin intermediul unui URI (Uniform Resource Identifier). Daca o aplicatie are nevoie de redirectarea URI-urilor, atunci poate implementa EntityResolver. Ca middleware intre un driver (parser) SAX si un client (aplicatie) SAX poate fi folosit procesorul arhitectural XAF conceput de Megginson. SAX in C Interfata cu programatorul se concretizeaza in existenta a doua functii C utilizate la analiza unui document XML (aflat in memorie sau incarcat de pe disc): #include <parser.h> xmlDocPtr xmlParseMemory(char *buffer, int size); xmlDocPtr xmlParseFile(const char *filename); Pentru crearea arborelui de obiecte-nod DOM, vom utiliza functii de manipulare arborescente al caror prototip se afla in tree.h. Un simplu exemplu, in care se adauga noduri-obiect prin xmlNewChild(), iar elementelor avind atribute li se asociaza acest valorile atributelor cu xmlSetProp(): xmlDocPtr doc; /* documentul XML */ xmlNodePtr tree, /* arborele asociat */ subtree; /* subarbore */ doc = xmlNewDoc("1.0"); /* creeaza o instanta de document */ doc->root = xmlNewDocNode(doc, NULL, "articol", NULL); xmlSetProp(doc->root, "vers", "draft"); xmlSetProp(doc->root, "author", "Sabin-Corneliu Buraga"); tree = xmlNewChild(doc->root, NULL, "head", NULL); subtree = xmlNewChild(tree, NULL, "title", "XML prin xml-lib"); tree = xmlNewChild(doc->root, NULL, "sect", NULL); subtree = xmlNewChild(tree, NULL, "title", "Prezentare XML"); subtree = xmlNewChild(tree, NULL, "p", "Un exemplu"); Se va creea astfel arborele asociat documentului XML urmator: <?xml version="1.0"?> <head <title>XML prin xml-lib</title> </head> <sect> <title>Prezentare XML</title> <p>Un exemplu</p> </sect> </articol> Arborele creat mai sus poate fi salvat pe disc (o functie de salvare fiind void xmlDocDump(FILE *f, xmlDocPtr doc);), eventual compresat in format gzip. Aceasta maniera este folosita de aplicatia gnumeric care poate salva/incarca fisierele in format XML compresat cu GNUzip. Un exemplu complet <?xml version="1.0"?> Functia C care analizeaza informatiile despre persoanele implicate in realizarea unor proiecte este urmatoarea: /* structura cu datele despre o persoana */ typedef struct person A char *name; char *email; char *year; char *address; char *wpage; /* functia care analizeaza documentul si returneaza informatii despre un student */ person_ptr parse_person(xmlDocPtr doc, xmlNodePtr cnode) A person_ptr ret = NULL; /* aloca structura, daca se poate */ ret = (person_ptr) malloc(sizeof(person)); if (ret == NULL) A fprintf(stderr,"out of memory\n"); return(NULL); /* Nu ne intereseaza care e nodul radacina al documentului si vom viza doar elementele <name> si <email> */ cnode = cnode->childs; return (ret); Desigur, parcurgerea documentului se putea realiza, mai elegant, in mod recursiv, exploatind informatiile din arborele DOM asociat. Biblioteca libxml permite si asocierea si procesarea spatiilor de nume XML, diverse reguli de validare a documentelor, oferind suport pentru RDF, XPath si XPointer si altele. 6.2 Manipularea documentelor XML prin navigatorul Web De unde putem sti ca IE 5 intelege documente XML? Pur si simplu putem incerca sa incarcam un document XML si sa vedem daca il putem vizualiza. Iata cum arata un fisier XML in IE 5 (observati culorile pentru elementele XML in comparatie cu vizualizarea aceluiasi document in Notepad): <html> <script language="JavaScript"> alert(fragxml.innerHTML); </body> Marcatorul <xml> este un element HTML valid conform specificatiilor Consortiului Web. Identificatorul innerHTML reprezinta un fragment de document definit in varianta DOM pentru HTML. Pe ecran va apare: function insertionSort(t, iRowStart, iRowEnd, fReverse) Dupa cum se observa modificarile de pozitie ale elementelor se realizeaza la nivelul arborelui de noduri-obiect asociate elementelor. Apelarea functiei insertionSort o vom realiza prin: <input type="button" value="Sort" onclick="insertionSort(TBooks.childrena0i, 0, Tbooks este identificatorul tabelului cu lista cartilor. Acesta ar putea fi de exemplu: <table id="TBooks" border="2"> Inainte de sortare, pagina Web arata astfel: 7. Concluzii Recomandarile DOM ofera in intregime interfetele standard proiectate in Java si ECMAScript, independente de platformele hardware si software, fiind utile programatorilor de aplicatii destinate procesarii avansate a documentelor XML sau HTML. O alta directie complementara este data de specificarea unei scheme de limbaj (meta-gramatici) orientata-obiect destinata definirii structurii sintactice si a semanticii tipurilor de documente XML: Schema for Object-Oriented XML (SOX) aflata la versiunea 2.0 (ultima actualizare a variantei de lucru desfasurindu-se la sfirsitul lunii iulie 1999). Avind in vedere dezvoltarea pronuntata a tehnologiilor bazate pe XML, modelul DOM devine, cu atit mai mult, atractiv pentru dezvoltatorii de aplicatii Internet. |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite |
|