CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
||
|
||
XML
Prezentare
1. Despre XML - scurta istorie.
2. Sintaxa
3. Cazuri de utilizare
4. Tooluri
5. Concluzii
6. Bibliografie
1. Despre XML - scurta istorie
XML - (eXtensible Markup Language) este un limbaj de adnotare/structurare a datelor. Istoria aparitiei sale porneste de la SGML (Standard Generalized Markup Language) aparut in anii 80. Acest limbaj isi propunea la aparitie sa creeze documente ce pot fi analizate de catre masini prin introducerea de marcaje (sau taguri). SGML nu a fost un succes deoarece era foarte complex si astfel crearea de programe care sa-l analizeze.
In anii 90 la CERN a aparut HTML-ul (HyperText Markup Language). La baza acestui limbaj a fost SGML-ul si scopul sau a fost marcarea documentelor astfel incat sa poata fi transmise prin retea. Unul din primele documente care au stat la baza WWW-ului si respectiv HTML-ului le puteti gasi la [1]. Una din ideile acestui document este ca browserele trebuie sa ignore marcajele si atributele pe care nu le inteleg. Aceasta idee a avut ca efect din cate cred eu aparitia unui limbaj mai simplu care sa poata fi parsat rapid de catre browsere. Si astfel s-a dezvoltat HTML-ul.
Succesul avut de Web a cauzat o dezvoltare rapida a browserelor care analizau marcajele HTML. Astfel au aparut o gama larga de marcaje si atribute care puteau fi scrise fara prea multe constrangeri. Browserele au trebuit sa tina cont de aceste constrangeri si au devenit foarte complexe. Pe de alta parte s-a sesizat utilizarea HTML-ului pentru adnotarea documentelor si o slabiciune de-a sa - faptul ca nu se pot adauga marcaje noi.
In acest context in decembrie 1997 W3C (World Wide Web Consortium [2]) a lansat ca recomandare propusa versiunea 1.0 de XML [3]. In acest document se afirma ca XML este un subset al SGML care pastreaza caracteristici cum ar fi posibilitatea crearii de marcaje, posibilitatea de validare, posibilitatea de a fi citit si inteles de catre oameni. Totodata se afirma ca XML este creat pentru a fi folosit pentru adnotari, schimb de date, publicare documente si prelucreare automata de catre clienti (agenti) inteligenti. Pastrand un subset al SGML impreuna cu un set de constrangeri documentele XML vor putea fi prelucrate foarte rapid de catre parsere neavand limitele date de complexitatea SGML. Vom vedea care sunt cazurile de utilizare actuale pentru XML dupa ce ii vom intelege sintaxa - dupa care ii vom intelege mai clar si avantajele si slabiciunile.
2. Sintaxa
Am vorbit in prima parte a acestei prezentari despre marcaje si atribute. Acum putem sa incercam sa le si definim. Pentru a ilustra sintaxa vom folosi exemplul din Anexa 1. Un marcaj este un text care descrie sensul sau structura unor date. Acest text este inserat intre semnele "<" si ">". Marcajele pot avea inceput si sfarsit ca de exemplu:
<nume>Popescu</nume> (a)
sau pot fi vide (fara text in interiorul marcajului)
<casatorit />
Marcajele sunt case-sensitive. La intalnirea unui marcaj de tipul <nume>Popescu</NUME> parserul va da o eroare.
Un element este tot ceea ce se afla intre marcajul de inceput si marcajul de sfarsit . (a) este un element. Numele elementului este "nume". Aceste nume trebuie sa indeplineasca cateva conditii [4].
Pot sa contina litere, cifre si alte caractere
Nu pot incepe cu cifre si cu semne de punctuatie
Nu pot incepe cu "xml"
Nu pot contine spatii
Un element poate contine mai multe elemente. Acest lucru determina aparitia unor relatii de rudenie intre elemente si a unor constrangeri suplimentare. Cea mai importanta dintre aceste constrangeri este aceea ca intr-un fisier XML trebuie sa existe un element radacina care sa le contina pe toate celelalte. Elementul radacina in Anexa 1 este <persoana>. O a doua constrangere este ca elementele nu pot fi incrucisate. Astfel urmatoarea constructie este incorecta <tranzactie><data>2005-11-05</tranzactie></data>. Cu alte cuvinte marcajele trebuie inchise invers fata de cum sunt deschise.
Relatiile de rudenie pot fi parinte-copil sau frate-frate. Un exemplu de relatie parinte-copil in cadrul unui element este urmatoarea.
<tranzactie>
<data>20-07-2005</data>
<ora>13:00:00</ora>
</tranzactie>
In acest exemplu elementul <tranzactie> este parinte al elementelor <data> si <ora> care sunt "frati".
Un element poate sa contina unul sau mai multe atribute. Atributele se specifica in cadrul marcajului de inceput al elementului si sunt de tip nume_atribut="valoare". Un exemplu in anexa 1 este in cadrul marcajului urmator: <suma moneda="RON"> 1000 </suma>. Atributul in acest caz este moneda iar valoarea atributului este RON. Valorile atributelor se pun intotdeauna intre ghilimele.
Ar mai fi de mentionat ca intotdeauna un document XML incepe cu un rand in care se mentioneaza versiunea limbajului si codificarea folosita. In exemplul din anexa 1 se specifica faptul ca se foloseste versiunea 1.0 si ca se foloseste codificarea ISO-8859-2 care este codificarea folosita pentru limba romana.
Respectand aceste simple reguli de sintaxa vom putea obtine ceea ce se numeste un document XML bine format. Acest document se valideaza la randul lui cu ajutorul unui alt fisier in care se definesc tagurile folosite. Acest alt fisier poate fi de tip DTD sau XSchema si despre ele vom vorbi in laboratoarele viitoare.
3. Cazuri de utilizare
Din introducere si din scurta trecere in revista a sintaxei am putut observa ca XML-ul este un limbaj care permite structurarea si adnotarea datelor intr-un mod lizibil atat de catre oameni cat si de catre calculatoare. Avand aceste calitati putem oarecum deduce unde se poate folosi in mod practic si unde este mai putin recomandat.
Poate cel mai evident caz de utilizare este cel al fisierelor de configurare. In momentul de fata foarte multe aplicatii isi pastreaza fisierele de configurare in XML. Motivele sunt cele enuntate mai sus - parsare rapida pentru calculatoare, usor de citit de catre oameni, structura logica a datelor. Anexa 2 prezinta un exemplu de fisier de configurare pentru o aplicatie web scrisa in Java - fisier folosit de serverul Tomcat.
Un alt caz in care se foloseste XML si in care se pare ca va deveni un standard este cel al stocarii informatiilor din fisiere tip office. Daca in momentul de fata formatul fisierelor din cadrul Microsoft Office este necunoscut (desi se fac presiuni sa se dezvaluie), dezvoltatorii de solutii office open-source au standardizat un format numit Open Document[5][6]. Acest format presupune salvarea oricarui document de tip office - document, foaie de calcul (spreadsheet), prezentare - intr-un format XML. Informatia este stocata in mai multe fisiere care sunt arhivate si astfel utilizatorul poate vedea numai un singur fisier de tip *.sxw sau *.odt, etc. Fisierul content.xml (in care apare informatia efectiva dintr-un fisier editat in Open Office) pentru un fisier in care este scris textul "Hello World" este prezentat in anexa 3. De ce s-a alex XML pentru un astfel de format? Pentru ca ofera avantajele structurarii informatiei si mai ales pentru ca s-au dezvoltat deja foarte multe alte limbaje si standarde pe baza lui. Aceste limbaje (XHTML, SVG, XSL, SMIL, XLink, XForms, MathML, Dublin Core) sunt folosite si ele in acest format si deoarece toate au la baza XML interoperabilitatea este garantata. XML are si un dezavantaj care este dat de faptul ca introduce informatie redundanta (overhead). Informatia redundanta este reprezentata de numele marcajelor care se repeta in document. Aceasta problema a fost rezolvata de cei de la Open Office prin arhivarea fisierelor XML intr-o arhiva zip. Astfel s-a rezolvat problema spatiului suplimentar aparut prin introducerea unei mici pierderi in viteza.
Un alt caz de utilizare este in stocarea efectiva a datelor - mai precis baze de date. In momentul de fata XML poate fi folosit cu succes pentru baze de date mici. In momentul in care bazele de date cresc ca dimensiune overheadul devine inacceptabil. Din cauza spatiului mare ocupat si a necesitatii accesului foarte rapid la date arhivarea fisierelor XML cu date nu poate fi o solutie si in acest caz. Oricum, multe interfete pentru baze de date permit exportarea bazei de date in format XML - atat definitia tabelelor si a relatiilor intre ele cat si datele propriu zise. Doua exemple de aplicatii care au aceasta facilitate sunt MS Access si PHPMyAdmin[7]. Un alt exemplu de caz in care XML-ul nu a avut succes este legat tot de stocarea unor cantitati mari de date si de acces rapid la acestea - mai precis pastrarea fisierelor jurnal ale serverelor. In acest domeniu este folosit printre altele un standard numit CLF - Common Logfile Format - care are avantajul ca nu introduce informatie suplimentara [8].
XML sta la baza multor tehnologii si limbaje noi. Astfel pentru prezentare de continut pe web exista XHTML si WML (pentru dispozitive mobile), pentru descrierea unor fisiere XML exista XSchema, pentru transformarea fisierelor XML pentru a fi reprezentate exista XSL, pentru realizarea unor prezentari exista SMIL, pentru descrierea obiectelor grafice exista SVG, pentru reprezentarea semanticii unor domenii exista RDF si/sau OWL, pentru schimb de informatii intre aplicatii exista SOAP si asa mai departe, lista aceasta fiind departe de a cuprinde toate tehnologiile/limbajele existente bazate pe XML. De ce au aparut atatea limbaje bazate pe XML? Pentru ca are o structura simpla si totusi stricta, pentru ca este foarte usor de analizat si foarte usor de definit si dezvoltat.
4. Tooluri
5. Concluzii
XML-ul este un limbaj cu o sintaxa simpla si care permite doar structurarea datelor intr-o maniera proprie prin definirea propriilor taguri. Aceasta facilitate de structurare a datelor a permis folosirea sa pentru a dezvolta limbaje noi precum si pentru a fi folosit in noi standarde de stocare a datelor. Nu in ultimul rand XML-ul poate fi folosit pentru a schimba date intre aplicatiile care au nevoie de a comunica intr-un limbaj comun.
Chiar si in ciuda dezavantajelor pe care le are (overhead) calitatile XML mai sus mentionate ii permit sa fie folosit cu succes in multe domenii si sa fie piatra de temelie pentru si mai multe domenii.
6. Bibliografie
1. "The first version of HTML" - https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/MarkUp.html
2. World Wide Web Consortium - https://www.w3c.org
3. Press Release XML 1.0 - https://www.w3.org/Press/XML-PR
4. Tutorial XML - https://www.w3schools.com/xml/xml_elements.asp
5. Standardizarea Open Document - siteul web OASIS - https://www.oasis-open.org/news/oasis_news_05_23_05.php
6. Oasis OpenDocument Essentials - https://books.evc-cit.info/odbook/book.html
7. PHPMyAdmin - web site - https://www.phpmyadmin.net/home_page/index.php
8. CLF - formatul de inregistrare al jurnalelor - https://www.w3.org/Daemon/User/Config/Logging.html#common_logfile_format
Anexa 1. - Exemplu de document XML
<?xml version="1.0" encoding="ISO-8859-2"?>
<persoana>
<nume>Popescu</nume>
<prenume>Ion</prenume>
<informatii_personale>
<oras>Bucuresti</oras>
<strada>Calea Mosilor</strada>
<nr>100</nr>
<tel_fix>0213003000</tel_fix>
<tel_mobil></tel_mobil>
<e-mail>popescu.ion@gmail.com</e-mail>
<casatorit />
</informatii_personale>
<tranzactii>
<tranzactie>
<data>20-07-2005</data>
<ora>13:00:00</ora>
<suma moneda="RON">1000</suma>
<directia>venit</directia>
<descriere>salariu</descriere>
</tranzactie>
<tranzactie>
<data>20-07-2005</data>
<ora>13:05:00</ora>
<suma moneda="RON">35</suma>
<directia>plata</directia>
<descriere>telefon</descriere>
</tranzactie>
</tranzactii>
</persoana>
Anexa 2. Fisier de configurare Tomcat - web.xml pentru o aplicatie jsp
<?xml version='1.0' encoding='UTF-8' ?>
<web-app xmlns='https://java.sun.com/xml/ns/j2ee' xmlns:xsi='https://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='https://java.sun.com/xml/ns/j2ee https://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd' version='2.4'>
<context-param>
<param-name>language_def</param-name>
<param-value>/WEB-INF/languagedef.xml</param-value>
<description>File name of language definition file.</description>
</context-param>
<servlet>
<servlet-name>Dispatcher</servlet-name>
<servlet-class>Util.Dispatcher</servlet-class>
</servlet>
<servlet>
<servlet-name>Logout</servlet-name>
<servlet-class>Util.Logout</servlet-class>
</servlet>
<servlet>
<servlet-name>SetSearchProjects</servlet-name>
<servlet-class>Util.SetSearchProjects</servlet-class>
</servlet>
.
<servlet-mapping>
<servlet-name>Dispatcher</servlet-name>
<url-pattern>/Dispatcher</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Manager</servlet-name>
<url-pattern>/Manager</url-pattern>
</servlet-mapping>
.
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>
Anexa 3. Fisierul content.xml pentru un document Open Office in care apare textul "Hello World"
<?xml version='1.0' encoding='UTF-8' ?>
<office:document-content xmlns:office='urn:oasis:names:tc:opendocument:xmlns:office:1.0' xmlns:style='urn:oasis:names:tc:opendocument:xmlns:style:1.0' xmlns:text='urn:oasis:names:tc:opendocument:xmlns:text:1.0' xmlns:table='urn:oasis:names:tc:opendocument:xmlns:table:1.0' xmlns:draw='urn:oasis:names:tc:opendocument:xmlns:drawing:1.0' xmlns:fo='urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0' xmlns:xlink='https://www.w3.org/1999/xlink' xmlns:dc='https://purl.org/dc/elements/1.1/' xmlns:meta='urn:oasis:names:tc:opendocument:xmlns:meta:1.0' xmlns:number='urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0' xmlns:svg='urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0' xmlns:chart='urn:oasis:names:tc:opendocument:xmlns:chart:1.0' xmlns:dr3d='urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0' xmlns:math='https://www.w3.org/1998/Math/MathML' xmlns:form='urn:oasis:names:tc:opendocument:xmlns:form:1.0' xmlns:script='urn:oasis:names:tc:opendocument:xmlns:script:1.0' xmlns:ooo='https://openoffice.org/2004/office' xmlns:ooow='https://openoffice.org/2004/writer' xmlns:oooc='https://openoffice.org/2004/calc' xmlns:dom='https://www.w3.org/2001/xml-events' xmlns:xforms='https://www.w3.org/2002/xforms' xmlns:xsd='https://www.w3.org/2001/XMLSchema' xmlns:xsi='https://www.w3.org/2001/XMLSchema-instance' office:version='1.0'>
<office:scripts />
<office:font-face-decls>
<style:font-face style:name='Tahoma1' svg:font-family='Tahoma' />
<style:font-face style:name='Arial Unicode MS' svg:font-family=''Arial Unicode MS'' style:font-pitch='variable' />
<style:font-face style:name='Tahoma' svg:font-family='Tahoma' style:font-pitch='variable' />
<style:font-face style:name='Times New Roman' svg:font-family=''Times New Roman'' style:font-family-generic='roman' style:font-pitch='variable' />
</office:font-face-decls>
<office:automatic-styles>
<style:style style:name='P1' style:family='paragraph' style:parent-style-name='Standard'>
<style:text-properties fo:color='#800000' fo:font-weight='bold' style:font-weight-asian='bold' style:font-weight-complex='bold' />
</style:style>
</office:automatic-styles>
<office:body>
<office:text>
<office:forms form:automatic-focus='false' form:apply-design-mode='false' />
<text:sequence-decls>
<text:sequence-decl text:display-outline-level='0' text:name='Illustration' />
<text:sequence-decl text:display-outline-level='0' text:name='Table' />
<text:sequence-decl text:display-outline-level='0' text:name='Text' />
<text:sequence-decl text:display-outline-level='0' text:name='Drawing' />
</text:sequence-decls>
<text:p text:style-name='P1'>Hello World!</text:p>
</office:text>
</office:body>
</office:document-content>
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 3925
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved