Aplicatia Formular Airwings

Cuvânt înainte

Lucrarea de față este compusă dintr-o parte teoretică, în care se evidențiază avantajele noului limbaj XML și o aplicație practică care susține procesarea si transformarea informațiilor reprezentate cu ajutorul acestui limbaj. Aplicația se numește Formular AirWings, prin intermediul căruia utilizatorul completează un formular cu date despre un avion care se dorește a fi comandat si date despre persoana fizică sau companie.

Ideea și motivația aplicației

În ultimii ani au apărut o mulțime de metode de stocare a informațiilor, utilizatorii putând să aleagă în funcție de programele folosite. Impedimentele apar însă atunci când se dorește schimbul de informații între ele. O soluție ar putea fi programele de conversie, un intermediar între programele care folosesc diferite metode de stocare doar ca acestea sunt consumatoare de timp, resurse iar erorile nu ezită să apară. Astfel s-a propus găsirea unui format comun pentru toate aplicațiile care doresc stocarea datelor și care sa fie usor de transmis de pe o platformă pe alta. O metodă este cea a datelor descrise cu marcaje, cum ar fi:

<STUDENT>

<NUME>Popoiu</NUME>

<PRENUME>Sanda</PRENUME>

<FACULTATE>Matematica-Informatica</FACULTATE>

<AN>3</AN>

</STUDENT>

Pentru ca un program să reușească să citească un astfel de format trebuie să cunoască dinainte structura marcajului respectiv. Charles Goldfarb introduce pentru prima dată noțiunea tip de document, ce conține structura pe care un document XML trebuie să o ȋndeplinească pentru a putea fi citit de programe. Ideea este că programele știu ce fel de structură trebuie să aibă acel document și așa le pot accesa și prelucra fără impedimente. Documentele XML au devenit astfel un standard ȋn stocarea și schimbul datelor ȋntre programe. Ĩn aplicația mea s-au folosit documentele XML ca metodă de introducere a informațiilor ȋn formular cât și ca metodă de extragere a lor, ȋntr-un mod foarte simplu și ușor de lucrat.

Scopul aplicației

După cum sugerează și numele, Formular AirWings, este o aplicație care are ca scop dezvoltarea unui formular de comandă de avioane disponibile oferite de o companie care se ocupă cu vânzarea lor și care poate fi ușor adaptat ȋn funcție de nevoile și ofertele firmei. El poate fi ușor inserat ȋn pagina web a companiei, după prezentarea detaliată a fiecărui avion ȋn parte. Prin această aplicație clientul are posibilitatea de a alege din oferta de avioane, modelul și numărul lor ( ȋn caz că dorește să cumpere mai multe ȋn limita stocului) și apoi trebuie să completeze câmpurile dedicate informațiilor despre cumpărător, fie el persoană fizică sau companie. Obiectivul urmărit este ca firma să fie capabilă să-și modifice singură stocurile fără a fi nevoie de instalarea unei baze de date, iar comenzile plasate de către un client să fie exportate la rândul lor ȋntr-un document XML ( de exemplu o companie dorește să achizitioneze două tipuri de avioane, acestea fiind ȋnregistrate ȋntr-un singur document XML, comenzile fiind scrise una după alta).

Grupul țintă

Grupul tintă este format din companiile care au spre vânzare diferite bunuri ( in cazul defață bunurile sunt avioane, ȋnsă ele pot fi ușor ȋnlocuite cu mașini, cărți, ș.a), au deja un site web unde le este prezentată oferta ȋnsa le este greu să folosească baze de date, astfel căutând o metodă mai ușoară de stocare a informatiilor. Beneficiarii sunt viitorii clienți care doresc să achiziționeze unul sau mai multe avioane, printr-un formular aerisit și ușor de utilizat.

Cap. I – Introducere ȋn XML

1.1. Istoric

XML (eXtensible Markup Language) este un descedent al SGML (Standard Generalized Markup Language) și un meta-limbaj folosit ȋn marcarea structurală a documentelor a cărui specificatii au fost pentru prima dată descrise ȋn 1996 ȋn cadrul Consorțiului World Wide Web (W3C). Prima versiune a fost standardizată ȋn 1998 iar apoi a mai primit modificări până ȋn anul 2004. Scopurile stabilite pentru acest nou meta-limbaj sunt:

– trebuie să fie simplu de utilizat pe Internet

– trebuie să poată fi folosit de o multitudine de aplicații

– trebuie să fie compatibil cu SGML

– documentele XML trebuie să fie clare, formale, concise și ușor de creat

1.2. Ce este XML?

Documentele XML sunt formate din unități de stocare numite enități care conțin date parsate sau neparsate. Cele parsate sunt alcătuite din caractere, unele formând date caracter iar altele marcaje. Marcajele codifică o desciere a schemei de stocare a documentului și structura sa logică. XML a fost creat pentru separarea sintaxei de semantică, construirea de limbaje de mark-up și asigurarea independeței de platformă.

Un document XML este un arbore ordonat etichetat și conține:

-date caracter (noduri frunză care inmagazinează datele)

-noduri elemente ce conțin un nume (tipul elementului) și atribute, care conțin la râdul lor un nume și o valoare.

Un exemplu de reprezentare de document XML este următorul:

Figura 1.1

Procesorul XML citește documentele XML și oferă acces la structura și conținutul lor rulând ȋn spatele unei aplicații.

XML este alcătuit din mai multe limbaje care au ca scop de a se adapta ușor ȋn funcție de noile tendințe de publicare a documentelor pe Internet. XML este compus din:

– XML (Extensible Markup Language)– subset al specificației SGML creat pentru implementarea mai ușoară

– XLL (Extensible Linking Language) – set al mecanismelor hipertext

– XSL (Extensible Stylesheet Language) – limbaj standard al foilor de stil care permite atașarea de semantici elementelor XML și transformarea lor ȋn alt tip de documente (HTML,MathML)

– XUA (XML User Agent) – direcție de standardizare a navigatoarelor XML

Un sistem XML este alcătuit din patru părți generale: documentul XML, definiția, tipul de document (DTD), analizorul XML și aplicația XML.

Figura 1.2

Datele procesate de un sistem XML sunt cele din documentul XML ȋn care sunt scrise informațiile folosindu-se sintaxa XML. Pentru verificarea corectitudinii reprezentării informației conform sintaxei XML, documentul este parsat de către procesorul XML numit analizor XML. Acesta returnează structura informației ȋn memorie, care apoi va fi disponibilă aplicației XML.

Dacă se doreste ca datele sa fie specificate ȋntr-un anumit fel, se atașează documentului XML un DTD (Document Type Definition) ce conține un set de reguli prin care se specifică modul ȋn care informația trebuie structurată ȋn document. Se presupune că toate analizoarele XML au același comportament, ȋnsă ȋn realitate ele diferă ȋn funcție de limbajul ȋn care va fi scrisă aplicația. Dintre cele mai cunoscute și utilizate sunt:

– IBM XML Parser pentru Java

– DataChannel Parser pentru Java (XJParser)

– Sun XML Parser pentru Java

– MSXML (analizor Microsoft de XML inclus in Internet Explorer)

1.3. Elemente specifice limbajului XML

Limbajul XML este asemănător cu limbajul HTML, ȋnsă XML este folosit pentru stocarea informației, astfel se asigură portabilitatea datelor de pe orice platformă sau dispozitiv. Elementele care fac parte din tehnologia XML sunt următoarele:

1. Fișierul propriu-zis XML, format din etichete și informațiile care sunt transmise prin intermediul acestora.

2. Declarația regulilor de validare și a tipurilor de date incluse ȋn document (DTD).

DTD are rolul de a valida conținutul și structura fișierului XML.

3. Pentru particularizarea modului de afișare a informațiilor din documentul XML este necesară utilizarea foilor de stil (XSL). Ele au rol asemănător cu fișierele CSS.

1.4. Documentele XML

Un document XML este format din marcaje (tag-uri) și date caracter. Un marcaj este un șir de caractere delimitat de “<” și “>”. Ĩn XML marcajele sunt folosite pentru a asigura o sintaxă simplă pe care analizoarele XML le pot citi și asigură o metodă de scriere ierarhică prin ȋmpărtirea informației ȋn părți numite elemente care ulterior sunt ramificate ȋn atribute.

1.4.1. Principalele componente ale unui document XML

Un document XML poate fi impărțit ȋn trei părți generale de colecții de marcaje:

1. Prolog

2. Declarația tipului de document

3. Elementul rădăcină

Fiecare dintre ele ulterior se ramifică la rândul lor ajungându-se la o structură mai detaliată descrisă ȋn următoarea schemă:

Prolog

– Comentarii

– Instrucțiuni de procesare

DOCUMENT Declarația tipului de document

XML – Comentarii

– Instrucțiuni de procesare

– Definitii

– Elemente

– Atribute

– Entități

– Notații

Elemente rădăcină

– Comentarii

– Instrucțiuni de procesare

– Elemente

– Atribute

– CDATA, entități

– PCDATA

– Referințe la entități

– Referințe la entități

– Secțiuni CDATA

Figura 1.3

1.4.2. Prologul

Ĩn general orice document XML conține un prolog. El apare tot timpul la ȋnceput de document și poate fi format din mai multe compomente: declarații XML, comentarii XML, instrucțiuni de procesare si declarații DOCTYPE ce reprezintă DTD-uri interne și/sau externe.Un exemplu de prolog poate fi:

<?xml version=”1.0” encoding=”UTF-8” standalone=”no” ?>

<!– FormularAirWings.xml –>

De cele mai multe ori, un document XML nu conține toate componentele enumerate mai sus, ȋnsă ȋn toate există pe prima linie, declarația XML. Aceasta are rolul de a indica faptul că documentul repectiv este unul XML și de a specifica versiunea de XML folosită ȋn editarea acestuia. Opțional, această linie mai poate indica setul de caractere folosit și dependența documentului XML de alte resurse externe. Forma generală a unei declarații XML este urmatoare:

<? xml version=”versiune” encoding=”set_caractere” standalone=”yes/no” ?>

Figura 1.4

Din figura 1.4 se observă următoarele atribute:

version – versiunea de XML folosită (“1.0” sau “1.1”);

encoding – setul de caractere folosit ( implicit este “UTF-8”)

standalone – acest atribut poate lua valoarea “yes” sau “no”. Daca este “yes” indică faptul că documentul curent nu depinde de alte documente externe, cum ar fi DTD-urile externe.

1.4.3. Elemente

Elementele sunt cele mai folosite componente XML. Ĩn general, numele lor au rolul de a sugera natura conținutului pe care ȋl dețin ȋntre tag-urile de ȋnceput și de sfârșit. Tag-ul de ȋnceput este tag-ul care dă și numele elementului, iar cel de sfârșit este identic cu cel de ȋnceput, doar că numele acestuia ȋncepe cu “/”. Ĩntre tag-uri se găsește conținutul elementului. Datorită facilităților care le are meta-limbajul XML, ne putem crea propriile tag-uri care să reflecte clar conținutul lor. De exemplu, elementul de mai jos, an-fabricatie este un astfel de element:

<an-fabricatie>2005</an-fabricatie>

Chiar dacă XML-ul ne oferă libertatea de a ne alege propriile elemente, sunt totuși anumite reguli de care trebuie ținut cont, cum ar fi:

– numele nu pot conține spații (de exemplu: an fabricatie);

– numele nu trebuie să ȋnceapă cu literele xml, XML, xML, …;

-numele nu trebuie să ȋnceapă cu o cifră sau cu caracterul “_”;

– numele nu trebuie să conțină caractere speciale;

– numele elementelor XML sunt case-sesitive;

Orice document XML este caracterizat de un element principal denumit element rădăcină. Acesta este un element obișnuit, numai că toate celelalte elemente ce ȋl urmează ȋi sunt subordonate. Ĩn documentele XML elementul rădăcină este primul element care se deschide și ultimul care se ȋnchide. Nu este obligatoriu ca un element XML să aibă conținut. Ele pot fi vide având posibilitatea de a fi completate ulterior. De exemplu, următorul element este vid:

<pret></pret>

1.4.4. Atribute

Atributele reprezintă perechi de genul nume=”valoarea”, care apar ȋn interiorul elementelor imediat după tag-ul de ȋnceput. Acestea conturează anumite specificații ale elementului respectiv. Figura următoarea reprezintă un exemplu de atribut XML:

< />

Figura 1.5

Un element poate conține zero, unul sau mai multe atribute. Regulile de alegere ale numelor atributelor sunt aceleași ca și ȋn cazul numelor elementelor. Valorile atributelor trebuie să fie plasate ȋntotdeauna ȋntre ghilimele simple sau duble. Atributele vide fac parte din erorile de sintaxă.

1.4.5. Comentarii

În documentele XML comentariile sunt ca și în HTML, încep cu “<!–“ și se termină cu “–>”. Ele au doar rol informativ ca și în aplicațiile de C sau Java și nu influențează cu nimic procesarea documentului. Comentariile pot fi plasate în orice loc din interiorul documentului XML și pot avea orice lungime. Trebuie avut grijă ca în interiorul comentariului să nu apară “–“.

1.4.6. Referințe la entități
Caracterele “<” și “>” sunt de obicei rezervate, însa ele pot fi introduse în continutul unui document XML însă nu ca atare ci prin intermediul entităților sau a referințelor la entități. Referirea la o entitate se face prin intermediul numelui acesteia. Referințele la entități încep cu caracterul “&” și se termină cu “;”. Între cele două caractere se găsește numele entității (&nume;) . Pentru caracterele rezervate există deja entități predefinite care sunt prezentate în tabelul următor:

Figura 1.6

Un exemplu de astfel de entitate poate fi:

<comparatie>

euro &gt; dolar

</comparatie>

Rezultatul în urma analizei textului de către analizorul XML este:

euro > dolar

O altfel de categorie de referințe sunt entitățile caracter. Ele sunt folosite pentru inserarea de caractere Unicode în conținutul documentului XML. Sintaxa acestor entități este &#numar; unde număr poate fi reprezentat ca un număr întreg sau hexazecimal și reprezintă codul Unicode al caracterului care se dorește a fi inserat în document. Referințele mai pot fi folosite atunci când în documentul XML avem bucăți de text care se repetă. Pentru a nu le scrie de mai multe ori se defines entități care au ca valoarea acel text și de fiecare dată când trebuie introdus vom folosi referința pentru a scurta din dimensiunea documentului și din timpul alocat redactării.

1.4.7. Instrucțiuni de procesare

Instructiunile de procesare nu fac parte efectiv din documentul XML, ele sunt pasate in continutul aplicatiei care le intelege si le foloseste. Ele incep cu caracterele “<?” si se incheie cu caracterele “?>”. Imediat dupa caracterele de inceput urmeaza “tinta” utilizata pentru a identifica aplicatia carea urmeaza sa primeasca instructiunile. Cea mai cunoscuta instructiune de procesare este xml-stylesheet folosita pentru a informa o aplicatie unde sa gaseasca foaia de stiluri folosita in transformarea documentului XML. Tot o instructiune de procesare este si declaratia XML.

1.4.8. Sectiunea CDATA

Uneori este necesar ca in memontul procesarii unui document XML anumite informatii sa fie transmise aplicatiei asa cum sunt in document, fara a mai fi procesate. Acest lucru presupune ca procesorul sa ignore acele informatii iar pentru aceasta se poate apela la sectiunile CDATA. Un exemplu de astfel de sectiune este acesta:

<! [CDATA[

Pentru a comanda un avion completati urmatoarele sectiuni dupa modelul de mai jos:

<comanda>

<marca>Shark</marca>

<an-fabricatie>2005</an-fabricatie>

<pret>250000</pret>

</comanda>

//date identificare persoana fizica

<date-identificare>

<nume>Nume:Popoiu</nume>

<prenume>Prenume:Sanda</prenume>

<CNP>CNP:2930326265897</CNP>

</date-identificare>

]]>

În interiorul acestei secțiuni nu pot fi incluse alte secțiuni CDATA și trebuie evitată folosirea șirului de caractere “]]”.

1.4.9. Declarația de structură a documentului – DOCTYPE

Un document XML poate conține opțional declarații de structură prin intermediul cărora se furnizează procesorului XML informații pentru validarea documentului. O astfel de declarație poate conține:

– numele elementului rădăcină al documentului XML

– referințe la entități parametru

– o referință la un DTD extern

– un DTD intern

1.4.10. Namespaces

Este posibil ca unele tag-uri invetate de către cel care a creat documentul XML să se suprapună cu cele create de o altă persoană. În acestă situație analizatorul XML va genera eroare sau documentul va fi redat greșit. Pentru a nu întâmpina astfel de situații trebuie date denumiri unice elementelor adăugând prefixe universale pentru care se folosește mecanismul numit Namespaces. Pentru a determina zona de activitate a tag-ului este nevoie de a defini un atribut unic care descrie denumirea elementului iar apoi analizorul XML va putea să detecteze al carui grup de nume se atribuie Namespaces-ul.

1.5. Documente “bine-scrise”

Ĩnainte de validarea documentelor XML trebuie verificat că acestea sunt “bine scrise”. Pentru ca un document XML să poată fi procesat fără erori este esențial ca tag-urile sa fie corect ȋnchise. Regula de bază ȋntr-un document XML este : Ultimul tag deshis – primul tag ȋnchis. Această regulă stă la baza noțiunii de “bine scris”, iar dacă nu este respectată, documentul XML nu este considerat ȋn conformitate cu specificațiile W3C și nu va putea fi procesat sau validat.

Iată câteva reguli de bază pentru dezvoltarea unui XML”bine-scris”:

– trebuie să ȋnceapă cu o declarație XML

– trebuie să aibă un element rădăcină unic

– tag-urile XML sunt case-sensitive

– toate elementele trebuie să fie ȋnchise

– toate valorile atributelor trebuie plasate ȋntre ghilimele simple sau duble

– caracterele speciale vor fi reprezentate prin entități

1.6. Document Type Definition (DTD)

Definițiile de structură apar în interiorul declarațiilor de structură și sunt folosite pentru a evita generarea unui haos in documentele XML și pentru a nu obține rezultate greșite de la aplicațiile care folosesc aceste documente. De exemplu, avem următorul fragment XML:

<person-pf>

<Nume>Nume:_</Nume>

<Prenume>Prenume:_</Prenume>

<CNP>CNP:_</CNP>

<Numar-cont>Nr. cont:_</Numar-cont>

</person-pf>

Acest fragment este “bine scris” din punct de vedere XML dar este în același timp și logic și intuitiv. Să observam acum următorul fragment, care este altfel “aranjat”:

<CNP>

<Nume>Nume:_</Nume>

<Prenume>Prenume:_</Prenume>

<person-pf>CNP:_</person-pf>

<Numar-cont>Nr. cont:_</Numar-cont>

</CNP>

Deasemenea acest fragment de cod XML este “bine scris” numai că de data aceasta nu mai este logic ducând la extragerea de informații într-un mod eronat. Acesta este doar un exemplu care ne zice că ar trebui introduse unele constrângeri (reguli) asupra structurii unui document XML. Aceste reguli ar duce la o mai bună claritate a documentului, făcându-l ușor de înțeles și de modificat. Toate aceste lucruri se află în așa numitele DTD-uri (Document Type Definition), care sunt de două tipuri: interne și externe. Atunci când procesăm un document XML care este legat de unul DTD și nu apar erori, se spune că documentul este valid, iar dacă apar erori, acesta se numește invalid. Procesul de validare este foarte important atunci când sunt asocitate documente DTD , deoarece de rezultatul acestui proces depinde dacă XML-ul poate fi folosit sau nu ulterior de o aplicație. Atunci cand procesorul XML întâmpină un document invalid , afișează o listă cu erori ce oferă informații despre parțile de cod care nu respectă specificațiile DTD-ului. Unele procesoare XML chiar încearcă să corecteze aceste erori. Un document XML “bine-scris” dar care nu are asociat un document DTD este considerat invalid, însă procesoarele XML nu semnalează erori, deoarece asocierea de DTD nu este obligatorie și nici procesul de validare.

valid

invalid

Figura 1.7

1.6.1. Declararea unui DTD într-un document XML

Atunci când declarăm un DTD într-un document XML, în momentul procesării XML-ul este validat pe baza documentului DTD atașat. Documentul DTD poate fi declarat intern sau extern.

Declararea unui DTD intern într-un document XML

Aceste documente sunt definite în interiorul documentului XML și sunt în general cele mai utilizate deoarece atunci când se distribuie documentul XML, DTD-ul este deja incorporat. Declararea de DTD intern se face utilizând cuvântul DOCTYPE (Document Type Declaration) și respectând următoarea formă generală:

<!DOCTYPE nume_element_radacina [definitii DTD]>

definiții DTD – corpul DTD-ului format din definiții scrise pe linii separate iar parantezele patrate sunt obligatorii si au rolul de a delimita această zonă de restul documentului XML.

Declarația DTD-urile se afla tot timpul între declarația XML și elementul rădăcină.

Declararea unui DTD extern într-un document XML

Aceste documente DTD externe sunt scrise în afara documentului XML și au extensia .dtd iar conținutul lor este format din definiții DTD, la fel ca la cele de tip intern. Avantajele utilizării acestor DTD-uri externe sunt:

cu ajutorul unui document DTD se pot realiza mai multe documente XML

atunci când se dorește modificarea structurii documentelor XML este suficient să se modifice DTD-ul la care sunt legate

DTD-urile sunt de două tipuri: publice și nepublice (private). Cele publice sunt standardizate și folosite de un număr mare de utilizatori pe când cele private nu sunt standardizate și sunt destinate unui număr restrâns de documente XML.

1.7. XML Schema

Atunci când dorim să definim seturi de reguli mai complexe decât cele aflate în DTD putem apela un limbaj mai puternic numit W3C XML Schema Definition Language sau XML Schema. Fiind o alternativă DTD-urilor ele au același obiectiv ca acestea din urmă dar la un nivel mai superior. Făcând o comparație între cele două metode de aplicare de reguli avem următoarele avantaje ale schemei XML:

oferă suport pentru tipul de date

schemele sunt scrise folosind sintaxa XML

sunt ușor de întreținut și extins

1.7.1. Elementul <schema>

Acest element reprezintă elementul-rădăcină al oricărei scheme XML și tot conținutul este înscris între tag-urile <schema>…</schema> și i se pot adăuga atribute pentru a lua diverse forme. Elementele și atributele sunt definite cu ajutorul tag-urilor <ElementType> și <AttributeType> iar instanțele lor prin <element> și <attribute>. Exemplu:

<?xml version =”1.0”>

<Schema name=”SchemaMea” xmlns=http://www.airwings.org>

<ElementType name=”nume” content=”textOnly”/>

<AttributeType name=”id” required=”no”/>

</ElementType>

</Schema>

Fiecare schemă are asociat un spațiu de nume specificat prin xmlns.

Principalele componente ale XML Schema sunt elementele XML Schema, <xs:element></xs:element>, tag-uri folosite pentru a indica că urmează definiția unui element. Numele elementului este indicat de valoarea atributului name, iar tipul prin valoarea atributului type. Pe lângă elemente mai sunt și atributele, <xs:attribute></xs:attribute>, care au la rândul lor name și type.

1.8. Vizualizarea documentelor XML

Pentru a utiliza datele definite în documentul XML este necesar scrierea unui program analizator care execută elementele XML-ului. Programele analizatoare pot fi împărțite în două tabere: verificatoare (folosesc DTD-urile pentru verificarea corectitudinii documentului) și nonverificatoare. Datorită faptului că utilizarea DTD-urilor în XML nu este obligatorie toate documentele “bine-scrise” pot fi analizate fără probleme. După descompunerea documentului se obține un model-obiect ce descrie documentul și metodele de lucru cu el. Unele analizatoare folosesc DOM pentru expunerea structurii unui document.

1.9. Extensible Stylesheet Language – XSL

Ĩn acest moment există două tehnologii care fac posibilă conversia dintr-un document XML ȋn alt tip de format cum ar fi HTML: CSS (Cascading Stylesheet Language) și XSL ( Extensible Stylesheet Language). Dintre acestea cea mai apropiată de conceptele XML este XSL-ul fiind bazat pe limbajul XML și folosește stylesheet-ul pentru documentele de intrare.

Figura 1.8

Ĩn cadrul XSL sunt definite două limbaje:

XSLT – limbaj pentru transformări;

XSL Formatting Objects – transformă documentele XML ȋn documente PDF sau Microsoft Word;

Aceste două limbaje sunt folosite ȋmpreuna pentru a transforma documentele XML.

Asocierea unui XML cu un stylesheet XSLT se realizează in interiorul documentului XML cu ajutorul următoarei instrucțiuni:

<?xml-stylesheet href=”stylesheet/Login” type=”text/xsl”/>

1.10. Concluzii

XML este un limbaj care dispune de o sintaxă simplă si care permite structurarea datelor ȋntr-o manieră personalizată cu ajutorul tag-urilor care pot fi definite de către utilizator. Scopul XML-ului a fost de a permite un schimb cât mai ușor de date ȋntre aplicații și a devenit rapid un succes ȋn multe domenii.

Cap. II – Aplicația Formular AirWings

Așa cum am arătat ȋn capitolul anterior, limbajul XML poate fi folosit de mai multe tipuri de aplicații. Ĩn aplicația mea, Formular AirWings, vom folosi limbajul de programare Java datorită puterii și fiabilității de care dă dovată ȋn dezvoltarea de aplicații.

2.1. Generalități despre Java

2.1.1. O privire asupra sintaxei limbajului Java

Dau ca exemplu un program simplu care afișează la ieșirea standard textul “Hello world!”:

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello world!");

}

}

Java este un limbaj de programare orientat-obiect caracterizat prin simplitate, ușurință, robustețe, portabilitate și care ȋmprumută o mare parte din sintaxă de la C și C++ dar are un model al obiectelor mai simplu și prezintă mai puține facilități de nivel jos. De obicei, programele Java sunt scrise ȋn fișiere cu extensia .java.

Ĩn Java tipurile de date sunt ȋmpărțite ȋn două categorii: tipuri primitive și tipuri referință. Ideea de bază ȋn acest limbaj de programare este că “orice este un obiect” doar că pe lângă această concepție de tip de date mai sunt și tipurile primitive, care sa ȋntâlnesc și la celelalte limbaje de programare amintite, cu mențiunea că ȋn Java nu există pointeri.

Față de aplicațiile standalone, la acest limbaj de programare apare un nou tip de aplicație numit applet și care se execută ȋn interiorul unui browser web, acest lucru ducând la ușurarea dezvoltării de aplicații web.

J2SE (Standard Edition) este platforma standard de lucru care oferă suport pentru crearea de aplicații standalone sau de applet-uri. Ĩn această platformă mai este introdusă și tehnologia Java Web Start care oferă modalități de lansare și instalare locală a programelor scrise ȋn Java direct de pe Internet.

Ĩn funcție de modul de execuție a aplicațiilor, regăsim două categorii pentru limbajele de programare: interpretate și compilate. Cele interpretate sunt citite linie cu linie de către un interpretor iar apoi instrucțiunile sunt traduse ȋn instrucțiuni mașină, pe când programele compilate au codul sursă transformat de către un compilator ȋntr-un cod care poate fi executat direct de procesor, numit și cod masina. Limbajul Java combină cele două metode. Atunci când dorim să compilăm, se va folosi compilatorul javac care creează câte un fișier separat pentru fiecare clasă a programului, acestea având extensia .class. Rularea aplicației se face cu interpretorul java apelat pentru unitatea de compilare corespunzătoare clasei principale.

Toate aplicațiile scrise ȋn Java conțin o clasă principală ȋn care trebuie să se găsească metoda main iar clasele aplicației pot sa fie ȋntr-un singur fișier sau ȋn mai multe. Este recomandat ca fișierul care conține codul sursă al clasei principale să aibă același nume cu cel al clasei.

Instrucțiunile Java sunt asemănătoare cu cele din C și se pot ȋmpărți ȋn următoarele categorii:

instrucțiuni de decizie: if-else, switch-case

instrucțiuni de salt: for, while, do-while

instrucțiuni pentru tratarea excepțiilor: try-catch-finally, throw

alte instrucțiuni: break, continue, return

2.2. Java și XML

Limbajul de programare Java conține câteva metode pentru procesarea și scrierea de documente XML. Versiunile mai vechi de Java suportau doar DOM API (Document Object Model) și SAX (Simple API for XML) API. Ĩn DOM documentele XML se pot accesa ca o ierarhie de obiecte. Deasemenea DOM se poate utiliza ȋn a citi și scrie fișiere XML. SAX este un API Java care citește secvențial documentele XML. Acest API poate doar să citească fișierele scrise ȋn limbajul XML. El mai este cunoscut și sub numele de “push-parsing mechanism” și mai are un frate numit StAX (Streaming API for XML) sau “pull-parsing mechanism”. Cele două API-uri sunt asemanătoare deoarece ambele parsează documentele XML ca pe niște fluxuri de evenimente.

Este important de reținut faptul că acest API se bazează pe două principii:

parcurge documentul XML element cu element ȋn maniera “doar inainte”

generează evenimente de genul:

– s-a intâlnit ȋnceputul documentului XML

– s-a intâlnit sfârșitul documentului XML

– s-a intâlnit tag-ul de ȋnceput al unui element

– s-a intâlnit tag-ul de sfârșit al unui element

– s-a intâlnit o instrucțiune de procesare

– s-au intâlnit date de tipul caracter

StAX oferă posibilitatea de a parcurge un document XML ȋn mod controlat, pas cu pas, de a cere anumite tipuri de evenimente sau de a parcurge atributele unui element. StAX include două API-uri care se folosesc la citirea și scrierea de documente XML numite Cursor și Event Interator. API-ul Cursor se bazează pe două interfețe din pachetul javax.xml.stream, numite XMLStreamReader si XMLStreamWriter. Obținerea de astfel de obiecte se face cu ajutorul claselor abstracte XMLInputFactory și XMLOutputFactory.

Clasa XMLStreamReader oferă atenție deosebită extragerii de informații iar acest lucru este posibil printr-un număr impresionant de metode dedicate. Pentru a afla valorile fiecărui atribut din declarația XML, această clasă folosește diferite metode cum ar fi: pentru a determina versiunea de XML se utilizează getVersion, pentru a determina setul de caractere, getCharacterEncodingScheme și pentru a determina dacă documentul XML are atașat documente externe cum ar fi DTD-urile se folosește metoda isStandalone.

Un exemplu de utilizare a metodelor enumerate ar fi:

//extragerea informatiilor din declaratia XML

public void printInfo(XMLStreamReader XMLsr){

System.out.println(“General Info”);

//obtinerea versiunii

System.out.println(“Versiune:”+XMLsr.getVersion());

//obtinerea setului de caratere

System.out.println(“Set caractere: ”+XMLsr.getCharacterEncodingScheme());

System.out.println(“Set caractere: ”+XMLsr.getEncoding());

//dependenta XML-ului de documente externe

System.out.println(“Standalone (true-yes/false-no):”+XMLsr.isStandalone());

}

La fel ca și ȋn cazul citirii de documente XML, atunci când vrem să scriem, se va folosi pachetul java.xml.stream ce definește o clasă și o interfată dedicată acestui scop, mai exact clasa XMLOutputFactory ce permite obținerea de obiecte XMLStreamWriter și interfața XMLStreamWriter. După ce s-a obținut un obiect XMLOutputFactory il putem folosi la crearea unui obiect XMLStreamWriter, apelând una din metodele createXMLStreamWriter. Odată obținut obiectul XMLStreamWriter putem ȋncepe operația de geneare a documentului XML.

Similar Posts