Sunteți pe pagina 1din 10

XML (eXtensible Markup Language)

1. Introducere
Prin date structurate intelegem lucruri ca liste de contacte, parametrii de
configuratie, desene tehnice, etc.
XML este un set de reguli (sau conventii) pentru a crea formate de text ce permit
structurarea datelor.
XML nu este un limbaj de programare si evita problemele obisnuite ale limbajelor
de programare: este independent de platforma, extensibil si suporta internationalizarea si
localizarea.
Pentru a invata XML nu trebuie sa fii programator sau sa stii programare.


2. Istoric
XML (eXtensible Markup Language) este un descendent al SGML (Standard
Generalized Markup Language) si este un meta-limbaj definit de Consortiul Web (W3C)
utilizat in activitatea de marcare ierarhica a documentelor.
Specificatia XML a fost dezvoltata incepand cu 1996 in cadrul Consortiului Web
de un grup de cercetare condus de Jon Bosak de la Sun Microsystems iar in 1998 a aparut
prima recomandare revizuita in octombrie 2000.
XML a fost proiectat cu scopul de a stoca si transporta datele.
Proiectarea presupunea ca XML:
- sa fie simplu de utilizat
- sa suporte o mare varietate de aplicatii
- sa fie compatibil cu SGML.
Deasemenea, programele ce vor procesa documente XML trebuie sa fie usor de
scris iar numarul facilitatilor optionale din XML sa fie reduse la minimum, ideal, la zero.


3. Ce este XML?
Pe scurt, XML este un limbaj bazat pe marcaje, asemanator cu HTML insa nu este
un inlocuitor al acestuia.
XML si HTML au fost concepute cu scopuri diferite:
- XML pentru stocarea si transportul datelor, cu accent pe ce sunt datele.
- HTML pentru afisarea datelor, cu accent pe cum arata datele.

XML nu face NIMIC.
Poate conceptul este putin mai greu de inteles si explicat insa XML nu face
absolut nimic.
A fost creat pentru structurarea, stocarea si transportul informatiilor.




Urmatorul exemplu este un mesaj de la Bogdan pentru George, salvat ca XML:

<?xml version="1.0"?>
<mesaj>
<expeditor>Bogdan</expeditor>
<destinatar>George</destinatar>
<subiect>Memento</subiect>
<continut>Nu uita de prezentarea XML!</continut>
</mesaj>


Mesajul de mai sus este auto descriptiv. Are un expeditor, un destinatar, un
subiect si un continut.
Si totusi, acest document XML nu face nimic. Este doar o informatie salvata intre
taguri. Cineva trebuie sa scrie un program care sa trimita, primeasca si sa afiseze aceasta
informatie.
Cu alte cuvine, XML nu este un compilator si nici un interpretor. Este doar un
standard definit cu scopul de a structura datele.

XML este o completare pentru HTML. In majoritatea aplicatiilor web, XML este
folosit pentru transportul informatiilor in timp ce HTML este folosit pentru formatarea si
afisarea informatiilor.
XML este acum la fel de important pentru Web asa cum HTML a fost pentru
infiintarea Web-ului, fiind cel mai folosit instrument pentru transmiterea datelor intre
diferite aplicatii.


4. Structura documentelor XML.
Un document XML este format din marcaje (taguri) si date caracter.
Cuvantul marcaj (markup) a fost folosit initial pentru a descrie note marginale in
cadrul unui text cu intentia de a indica tehnoredactorului cum trebuie listat un anumit
pasaj. Generalizand, putem defini marcajul ca fiind o actiune de interpretare explicita a
unei portiuni de text.
In XML, un marcaj este un sir de caractere delimitat de caracterele < si >.
Datele caracter reprezinta continutul marcajelor.

Documentele XML formeaza o structura asemanatoare unui arbore. Se porneste
de la radacina si se continua pe ramuri catre frunze.
Sintaxa este auto descriptiva si simpla:

<?xml version="1.0" encoding="UTF-8"?>
<mesaj>
<expeditor>Bogdan</expeditor>
<destinatar>George</destinatar>
<subiect>Memento</subiect>
<continut>Nu uita de prezentarea XML!</continut>
</mesaj>
Prima linie este o instructiune de procesare. Ea informeaza ca urmeaza descrierea
unui fisier XML ce respecta versiunea de specificatie 1.0 iar setul de caractere utilizat
este encodat UTF-8.

Urmatoarea linie descriere elementul radacina al documentului:
<mesaj>

Urmatoarele 4 linii vor descrie cele 4 frunze ale arborelui (expeditor, destinatar,
subiect, continut):
<expeditor>Bogdan</expeditor>
<destinatar>George</destinatar>
<subiect>Memento</subiect>
<continut>Nu uita de prezentarea XML!</continut>

Ultima linie defineste sfarsitul elementului radacina (sau varful arborelui).
</mesaj>

Din acest exemplu putem intelege ca documentul XML contine un mesaj de la
Bogdan pentru George.


Documentele XML au forma unui arbore.
Toate documentele XML contin un element radacina. Acest element este
parintele tuturor celorlalte elemente. Fiecare element poate avea copii. Spre exemplu:

<radacina>
<ramura>
<frunza>
<limb />
<petiol />
<teaca />
</frunza>
</ramura>
</radacina>

Termenii parinte, copil, frate sunt folositi pentru descrierea relatiilor dintre
elemente. Elementele parinte au copii. Copiii de la acelasi nivel (cu acelasi parinte) se
numesc frati (sau surori).
Toate elementele pot contine text si au atribure (ca in HTML).



5. Elemente
Elementele sunt blocurile de baza ale unui document XML. Pot fi folosite atat
pentru a retine informatii, cat si pentru definirea structurii. Un element incepe cu un
macaj de start si se termina cu corespunzatorul marcaj de sfarsit.

Un element poate fi vid, sintaxa lui fiind:
<element_vid/>


6. Atribute
Atributele au rolul de a descrie elementele. Putem face o analogie intre atribute
care descriu elemente si adjective care descriu substantive.
Atributele in XML sunt aceleasi cu atributele din HTML. De exemplu, un atribut
al elementului <mesaj> ar fi data=16.03.2011.
Atributele sunt localizate in marcajul de start al unui element, imediat dupa
numele acestuia, sunt urmate de caracterul = care este urmat de valoarea atributului
intre ghilimele.
Sintaxa este urmatoarea:
<mesaj data=16.03.2011 prioritate=normal>

Observatie: Atributele nu pot contine mai multe valori, sunt greu de citit si de intretinut.
Folositi elementele pentru date si atributele pentru informatii care nu sunt relevante
pentru date.


7. Reguli de sintaxa
Regulile de sintaxa ale XML sunt simple, logice, usor de invatat si usor de folosit.

7.1 Toate elementele XML trebuiesc inchise.
In XML este ilegal (incorect) sa lasi marcajele deschise. Toate elementele trebuie
sa aiba un tag de inchidere.
Observatie: Prima linie este o instructiune de procesare, nu un element, si nu are nevoie
de un tag de inchidere.
radacina
frunza frunza2
limb petiol teaca limb petiol teaca
7.2 Marcajele sunt Case Sensitive
Elementele XML sunt case sensitive, ceea ce inseamna ca <Mesaj> nu este tot
una cu <mesaj>.

De exemplu:
<Mesaj>INCORECT</mesaj>
<mesaj>CORECT</mesaj>

Observatie: Deschiderea si inchiderea marcajelor este deseori referita ca marcaje de
inceput si sfarsit.


7.3 Elementele XML trebuie sa fie corect imbricate.
Acest lucru se refera la faptul ca odata deschis un element, nu poti inchide un
element deschis anterior pana ce elementul curent nu este inchis.
Exemplu: (incorect)
<radacina>
<fruna>
</radacina>
</frunza>

Elementul radacina nu poate fi inchis inaintea elementulu frunza care este un
descendent (fie el direct sau indirect) al sau.


7.4 Valorile atributelor XML sunt cuprinse intre ghilimele
Elementele XML pot avea atribute in perechi de forma nume/valoare, exact ca in
HTML.
In XML valorile atributelor trebuie sa fie intotdeauna intre ghilimele.
Exemplu:
<mesaj data=16.03.2011>
<expeditor>Bogdan</expeditor>
<destinatar>George</destinatar>
</mesaj>

Exemplul de mai sus este INCORECT!

Un exemplu corect este:
<mesaj data=16.03.2011>
<expeditor>Bogdan</expeditor>
<destinatar>George</destinatar>
</mesaj>





7.5 Referintele entitatilor.
Unele caractere au un inteles special in XML.
Daca vei plasa un caracter ca < in continutul unui element XML, interpretorul
va genera o eroare deoarce acest caracter este interpretat ca inceput de element.
Pentru a evita aceste erori, inlocuieste aceste caractere cu referintele lor:
&lt; < mai putin decat
&gt; > mai mult decat
&amp; & ampersand
&apos; apostrof
&quote; ghilimele

Obseratie: Caracterele < si & sunt strict ilegale in continutul unul element XML.


7.6 Comentarii
Sintaxa unui comentariu XML este similara cu cea a HTML:
<!-- Acesta este un comentariu -->



8. Validarea documentelor XML.
Documentele XML cu o sintaxa corecta se numesc Well Formed.
Documentele XML pot fi validate cu ajutorul documentelor DTD (Document Type
Definition).

Un document XML Bine definit are o sintaxa XML corecta.
Regulile de sintaxa au fost definite in capitolele anterioare:
o Documentele XML trebuie sa aiba un SINGUR element radacina
o Elementele trebuie sa aiba un tag de inchidere.
o Tagurile sunt Case Sensitive.
o Elementele trebuie sa fie ordonate corect.
o Valorile atributelor sunt scrise intre ghilimele.


Un document XML este valid daca este bine definit si se conformeaza regulilor
unui DTD asociat.
Pentru exemplul nostru:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mesaj SYSTEM "Mesaj.dtd">
<mesaj>
<expeditor>Bogdan</expeditor>
<destinatar>George</destinatar>
<subiect>Memento</subiect>
<continut>Nu uita de prezentarea XML!</continut>
</mesaj>

Declaratia DOCTYPE din exemplul de mai sus este o referinta la un fisier DTD
extern.
Continutul fisierului DTD (Mesaj.dtd):

<!DOCTYPE mesaj
[
<!ELEMENT mesaj
(expeditor,destinatar,subiect,continut)>
<!ELEMENT expeditor (#PCDATA)>
<!ELEMENT destinatar (#PCDATA)>
<!ELEMENT subiect (#PCDATA)>
<!ELEMENT continut (#PCDATA)>
]>



Validarea documentelor XML cu DTD


1. Introducere
Scopul DTD (Document Type Definition) este de a defini constructia corecta a
blocurilor intr-un document XML. El defineste structura documentului impreuna cu lista
elementelor permise.

1.1 Declararea DTD interna.
Daca DTD este declarat in interiorul fisierului XML, acesta trebuie sa fie cuprins
in interiorul declaratiei DOCTYPE si are sintaxa:
<!DOCTYPE radacina [declararea-elementelor]>

Exemplu:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE msg [
<!ELEMENT msg (expeditor,destinatar,subiect,continut)>
<!ELEMENT expeditor (#PCDATA)>
<!ELEMENT destinatar (#PCDATA)>
<!ELEMENT subiect (#PCDATA)>
<!ELEMENT continut (#PCDATA)>
]>
<msg>
<expeditor>Bogdan</expeditor>
<destinatar>George</destinatar>
<subiect>Memento</subiect>
<continut>Nu uita de prezentarea XML!</continut>
</msg>


1.2 Declararea DTD Externa.
Daca DTD este declarat intr-un fisier extern, acesta trebuie adaugat in definitia
DOCTYPE cu urmatoarea sintaxa:
<!DOCTYPE radacina SYSTEM nume_fisier.dtd>


1.3 De ce sa folosim DTD?
Cu DTD, fiecare document XML are o descriere a formatului sau.
O aplicatie poate folosi DTD pentru a verifica daca datele fisierul XML primit sunt
valide.


2. Sintaxa DTD
Ne amintim faptul ca un fisier XML este construit din urmatoarele tipuri de blocuri:
o Elemente
o Atribute
o Entitati
o Date caracter neparsabile CDATA
o Data caracter parsabile PCDATA

Un fisier DTD contine tipuri de definitii:
o Element
o Atribute
o Entitati
o Notatii.

2.1 Declararea Elementelor
Intr-un fisier DTD, elementele sunt declarate printr-o declaratie de tipul
ELEMENT si au urmatoarea sintaxa:

<!ELEMENT nume categorie>
sau
<!ELEMENT nume (continut)>

Elementele vide sunt declarate cu ajutorul cuvantului EMPTY:
<!ELEMENT nume EMPTY>

Elementele numai cu date caracter se declara:
<!ELEMENT nume (#PCDATA)>
sau
<!ELEMENT nume (#CDATA)>

Elementele cu orice continut:
<!ELEMENT nume ANY>


Elementele ce au copii:
Daca un element are o multime de elemente copii atunci ele trebuie enumerate
exact in ordinea in care apar in document:
<!ELEMENT nume (descendent1, descendent2, )>

Un element copil poate fi urmat de unul din semnele ?, +, * care au urmatoarele
semnificatii:
? Niciuna sau o aparitie a elementului precedent.
+ Una sau mai multe aparitii.
* Niciuna sau mai multe aparitii.
Intre elementele copii se poate afla semnul | care inseamna sau.


2.2 Declararea atributelor ATTLIST
Intr-un DTD, atributele se declara utilizand adnotarea ATTLIST. O declarare a
unui atribut specifica elementul caruia ii este asociat, numele lui, tipul si posibilele valori
implicite.
Sintaxa:
<!ATTLIST element atribut tip #DEFAULT val_impl>
<!ATTLIST element atribut tip #FIXED val_fixa>
<!ATTLIST element atribut tip (Val1|Val2|) val_impl>
<!ATTLIST element atribut tip #IMPLIED>
<!ATTLIST element atribut tip #REQUIRED>

unde:
- tip este tipul atributului si poate fi:
CDATA Date caracter
ENTITY Valoarea este o entitate
ENTITIES Valoarea este o lista de entitati
ID Valoarea este un id unic
IDREF Valoarea este o referinta la un alt id
IDREFS Valoarea este o lista de referinte la alte id-uri
NMTOKEN Valoarea este un nume valid XML
NMTOKENS Valoarea este o lista de nume valide XML
NOTATION Numele unei notatii
(Val1|Val2|) Lista de valori
xml; Valoarea este una predefinita in XML

- val_impl este valoarea implicita:
#DEFAULT valoare - daca valoarea nu exista, se va prelua valoarea implicit definita
#FIXED valoare - daca in document exista o alta valoare atunci se genereaza eroare la
validare.
#IMPLIED - atributul poate sa lipseasca, fiind optional.
#REQUIRED - daca elementul nu contine atributul respectiv, se gereneaza o eroare.

2.3 Declararea entitatilor
O entitate poate fi declarata local sau extern.
Sintaxa entitatilor in interiorul DTD este:
<!ENTITY nume_entitate valoare_entitate>

Exemplu:
<!ENTITY website http://www.forumupit.ro>
<!ENTITY copyright Copyright 2011, Bogdan FLOREA.>

Utilizarea intr-un fisier XML: <autor>&copyright;&website;</autor>

S-ar putea să vă placă și