CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
|||
|
|||
XML si orientarea pe obiecte
Un document XML este o instantiere a unei scheme, asa cum un obiect este o instantiere a unei clase. Se pot defini clase corespunzatoare elementelor XML, iar trecerea intre fisiere XML si clase Java (in ambele sensuri) este asigurata de clasele din interfata API numita JAXB (Java XML Binding). Clasele Java sunt generate pe baza unei scheme XML (de obicei un fisier DTD).
Aparitia si evolutia limbajului XML a fost contemporana cu orientarea pe obiecte in programare, ceea ce se vede si in aceea ca singurul model de prelucrare a fisierelor XML standardizat (W3C) este modelul DOM ("Document Object Model"), model independent de limbajul de programare folosit.
In esenta, modelul DOM inseamna ca rezultatul prelucrarii unui fisier XML este un arbore ce reflecta structura documentului, cu date in anumite noduri (terminale); standardizarea se refera la existenta unei interfete API unice pentru prelucrarea acestui arbore de catre aplicatii, indiferent de limbajul folosit.
Prelucrarea fisierelor XML a constituit o provocare pentru programarea orientata pe obiecte si, in special pentru limbajul Java in care existau deja predefinite multe clase si tehnici de programare potrivite acestui scop.
Un parser XML este un procesor de documente XML care furnizeaza unei aplicatii continutul fisierului, intr-o forma sau alta. Un parser verifica daca fisierul XML este bine format ("well formed") si poate valida, optional, documentul XML.
Un fisier XML bine format are toate perechile de marcaje incluse corect, la fel cum incluse perechile de paranteze dintr-o expresie sau perechile de acolade din Java.
Exemple de erori de utilizare a marcajelor semnalate de un parser:
<a> . <b> . </a> . </b> (corect este <a>.<b>.</b>..</a>)
<a> . <b> . </b> . </c>
Validarea XML necesita specificarea unui fisier schema (DTD sau XSD) la inceputul documentului XML si inseamna certificarea faptului ca au fost folosite numai marcajele din schema, cu relatiile, atributele si tipurile de date descrise in schema. Validarea mareste timpul de prelucrare si este inutila atunci cand fisierele XML sunt generate de catre programe si nu sunt editate manual.
Un parser bazat pe modelul DOM are ca principal dezavantaj memoria necesara pentru arborele corespunzator unui document XML mai mare (mai ales ca in acest arbore apar noduri si pentru spatiile albe folosite la indentare si la fiecare linie noua).
Spatiile albe nu sunt esentiale pentru intelegerea unui fisier XML si de aceea nici nu apar in fisiere destinate a fi prelucrate numai prin programe si transmise prin retea.
De exemplu, fisierul lista de preturi poate apare si sub forma urmatoare:
<!DOCTYPE priceList SYSTEM 'priceList.DTD'>
<priceList> <computer><name>CDC</name><price>540</price></computer>
<computer><name>SDS</name><price>495</price> </ computer ></priceList>
O alta critica adusa modelului DOM este aceea ca interfata API nu este total in spiritul orientarii pe obiecte si nu foloseste clasele colectie si iterator din Java. De aceea s-au propus si alte variante de modele arbore : JDOM si DOM4J (J de la Java).
Avantajul unui parser care creeaza un obiect arbore este acela ca permite operatii de cautare, de modificare in arbore si de creare a unui alt document XML din arbore.
O abordare total diferita fata de modelul DOM a dat nastere programelor parser de tip SAX ("Simple API for XML"), care folosesc functii "callback" apelate de parser dar scrise de utilizator, ca parte dintr-o aplicatie. Pe masura ce parserul analizeaza fisierul XML, el genereaza evenimente si apeleaza metode ce respecta anumite tipare. Exemple de evenimente SAX: intalnire marcaj de inceput, intalnire marcaj de sfarsit, intalnirea unui sir de caractere intre marcaje, etc. La apelul metodelor de tratare a evenimentelor se transmit si alte informatii, cum ar fi continutul marcajului si atribute
Un parser SAX este mai rapid, consuma mai putina memorie si este mai usor de folosit (nu necesita navigarea printr-un arbore), dar nu permite modificarea de fisiere XML si nici operatii repetate de cautare in fisier intr-un mod eficient. Este util atunci cand o aplicatie este interesata numai de anumite sectiuni dintr-un document XML si nu de intreg continutul. O aplicatie poate construi un arbore pe baza informatiilor primite de la un parser SAX.
Pentru ca nu exista un singur parser SAX sau DOM pentru Java si pentru a putea utiliza orice parser cu minim de modificari, se practica obtinerea unui obiect parser prin apelul unei metode fabrica si nu prin instantierea directa a unei singure clase.
Un alt standard, materializat intr-un API Java, este XSLT (XML Stylesheet Language for Transformation), care permite specificarea unor transformari asupra unui document XML in vederea conversiei sale intr-un alt format (de ex. HTML). Un obiect convertor ("transformer") primeste la creare un obiect sursa si un obiect rezultat, iar metoda "transform" face transformarile necesare de la sursa la rezultat.
Interfetele "Source" si "Result" sunt implementate de clase "DOMSource" si "DOMResult", "SAXSource" si "SaxResult" sau "StreamSource", "StreamResult" (fluxuri de intrare-iesire ca sursa si rezultat al transformarii). In felul acesta se poate trece intre diferite reprezentari posibile ale documentelor XML, cu sau fara modificari in continutul documentelor.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 3702
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved