Convertirea Fisierelor Xml In Documente Html Utilizand Platforma Xslt

UNIVERSITATEA DIN ORADEA

FACULTATEA de Inginerie Electrică și Tehnologia Informației

DEPARTAMENTUL Calculatoare și tehnologia informației

TEMA: Convertirea fișierelor XML în documente HTML utilizând platforma XSLT

Lucrare de finalizare a studiilor a studentului IVAN (LUCA) Simona-Giorgiana

1). Tema lucrării de finalizare a studiilor:

Convertirea fișierelor XML în documente HTML utilizând platforma XSLT

2). Termenul pentru predarea lucrării: ________________________________________________________

3). Elemente inițiale pentru elaborarea lucrării de finalizare a studiilor:

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

4). Conținutul lucrării de finalizare a studiilor:

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

5). Material grafic:

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

6). Locul de documentare pentru elaborarea lucrării:

___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

7). Data emiterii temei:

_________________________________________________________________________________________

Coordonator științific

Prof. Dr. Ing. Dr. Ec. TITUS SLAVICI

REFERAT

PRIVIND LUCRAREA DE LICENȚĂ

A

ABSOLVENTEI: IVAN (LUCA) Simona-Giorgiana

DOMENIUL Calculatoare și tehnologia informației

SPECIALIZAREA Calculatoare

PROMOȚIA 2015

Titlul lucrării

Convertirea fișierelor XML în documente HTML utilizând platforma XSLT

Structura lucrării

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Aprecieri asupra lucrării (se va menționa: numărul titlurilor bibliografice consultate, frecvența notelor de subsol, calitatea și diversitatea surselor consultate; modul în care absolventul a prelucrat informațiile din surse teoretice)

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Concluzii (coordonatorul lucrării trebuie să aprecieze valoarea lucrării întocmite, relevanța studiului întreprins, competențele absolventului, rigurozitatea pe parcursul elaborării lucrării, consecvența și seriozitatea de care a dat dovadă absolventul pe parcurs)

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________________

Redactarea lucrării respectă ………………………….. cerințele academice de redactare (părți, capitole, subcapitole, note de subsol și bibliografie).

Consider că lucrarea îndeplinește/ nu îndeplinește condițiile pentru susținere în sesiunea de Examen de LICENȚĂ (finalizare a studiilor) din IULIE 2015 și propun acordarea notei ……..

Oradea, Conducător științific,

Data

Introducere

Dezvoltarea foilor de stil (din engl. stylesheet) a venit să revoluționeze proiectarea de pagini Web, prin faptul că dezvoltatorii au dobândit o libertate incredibilă din perspectiva posibilităților suplimentare de prezentare a documentelor. Cascading Style Sheets (cunoscut sub acronimul CSS) a fost proiectat ca limbaj pentru a descrie aspectul și formatarea de documente scrise într-un limbaj de marcare, precum limbajul XML, despre care vom discuta mai amănunțit în primul capitol al acestei lucrări.

Deși este cel mai adesea utilizat pentru modificarea de pagini web și interfațe cu utilizatorul scrise în HTML și XHTML, limbajul CSS poate fi aplicat oricărui tip de document XML. Alături de HTML și JavaScript, CSS reprezintă o tehnologie revoluționară, utilizată de cele mai multe dintre site-urile web pentru crearea de pagini web atractive vizual, interfețe cu utilizatorul pentru aplicații web și pentru multiple aplicații mobile.

Fișierele CSS sunt fișiere text cu extensia „.css” care definesc stilurile paginilor web. Aceste stiluri specifice CSS sunt menite să precizeze browser-ului, într-un mod mult mai riguros decât atributele specifice HTML, cum să afișeze elementele care compun un document HTML, cu privire la text, formulare sau grafică, oferind posibilități și rezultate mult superioare standardului HTML. Consorțiul World Wide Web a promovat utilizarea stylesheet-urilor începând cu 1994 și administrează și în prezent specificațiile CSS. Limbajul XSL a fost lansat de Consorțiul World Wide Web ulterior, ca o completare la CSS, al cărui unic avantaj constă în faptul că poate fi utilizat pentru a prezenta documente în format HTML, în comparație cu limbajul XSL, care a fost dezvoltat pentru a transforma documente, putând converti fișiere XML în documente HTML sau alte formate.

CSS a fost dezvoltat pentru a defini aspectul limbajelor de marcare, în vreme ce XSL a fost proiectat cu rolul de a transforma documente. Deși atât unul, cât și celălalt sunt foi de stil (din engl. stylesheets), fiecare dintre ele servește scopuri total diferite. Spre deosebire de CSS, XSL este un limbaj creat pentru a permite dezvoltatorilor să creeze date, pe care să le transforme apoi în multiple formate diferite. Pe scurt, XSL a fost gândit să separe conținutul de design și vom analiza în cele ce urmează modul de implementare al acestei funcționalități.

Lucrarea de față își propune așadar să prezinte utilizarea tehnologiilor XML/XSLT în scopul generării de documente în format HTML.

Vom porni în acest scop prin a prezenta în primul capitol o scurtă introducere în limbajul XML, vorbind despre caracteristici, funcționalitate și interacțiuni cu alte limbaje, exemplificând pentru o mai bună înțelegere a conceptului.

Cel de-al doilea capitol al lucrării oferă o prezentare generală a limbajului XSL, în relație cu cele trei componente fundamentale care intră în alcătuirea sa: XSLT, Xpath și XSL-FO.

În cel de-al treilea capitol discutăm despre procesorul XML și procesorul XSL, din perspectiva procesării foilor de stil (din engl. stylesheets) și a modului cum sunt aplicate aceste documente fișierelor XML.

Cel de-al patrulea capitol definește și prezintă caracteristicile de bază ale celor trei componente care alcătuiesc limbajul XSL, menționate în capitolul al doilea, pentru ca cel de-al cincilea capitol să aprofundeze tehnologia XSLT, oferind o descriere a avantajelor acestei tehnologii, a structurii stylesheet-urilor, precum și a principalelor elemente și atribute utilizate pentru implementarea stylesheet-urilor.

Partea practică a acestei lucrări este prezentată în cel de-al șaselea capitol și constă într-o aplicație software care își bazează funcționalitatea pe transformări de fișiere XML în documente în format HTML, prin intermediul platformei XSLT (stylesheet). Aplicația web a fost proiectată sub forma unui document tip cerere disponibilă în browser și permite completarea respectivei cereri, vizualizarea și descărcarea acesteia de pe server în urma completării.

În cele din urmă, capitolul al șaptelea trasează concluziile lucrării.

Capitolul I
Limbajul XML. Noțiuni introductive

Extensible Markup Language, cunoscut sub acronimul XML, în traducere „limbaj extensibil de marcare”, este un limbaj simplu, bazat pe formatul text, conceput pentru reprezentarea de informație structurată. La baza acestui limbaj stau datele, deoarece „XML constă în stocarea de date – agende telefonice, liste de comenzi, liste de cărți, orice doriți. Spre deosebire de HTML, XML nu are legătură cu afișarea de date, ci cu ambalarea datelor pentru a fi transportate cu ușurință”, conform descrierii lui Steven Holzner. Termenul „markup” din denumirea acestui limbaj se referă la „coduri sau simboluri incluse într-un fișier pentru a indica modul de interpretare al datelor ne-marcate din respectivul fișier.”

Limbajul XML derivă din conceptul SGML (Standard Generalized Markup Language), dezvoltat anterior în cadrul Consorțiului World Wide Web (W3C), iar prima sa versiune a fost standardizată în anul 1998, urmând ca acest standard să fie revizuit ulterior de două ori, în anul 2000, respectiv în 2004. Conducătorul grupului de cercetare de la Sun Microsystems care a dezvoltat limbajul, Jon Bosak, spunea despre XML că a devenit de la apariția sa și până în prezent „lingua franca a web-ului”.

Proiectarea XML a avut ca scopuri principale următoarele:

Ușurința de utilizare pe In-ternet sau/și Intranet,

Capacitatea de a suporta o mare varietate de aplicații,

Compatibilitatea cu SGML,

Ușurința de scriere de programe pentru procesarea de documente XML,

Numărul facilităților opționale din XML sunt reduse la minimum, ideal la zero,

Ușurința citirii documentelor XML de către utilizatori,

Rapiditatea proiectării limbajului XML,

Designul XML se cerea a fi formal și concis,

Ușurința de creare a documentelor XML.

De asemenea, la proiectarea limbajului XML s-a avut în vedere capacitatea de a manipula date în mod riguros. Deși există unele asemănări cu standardul HTML, acestea sunt foarte generale. Dacă HTML urmărește afișarea de date și își propune ca principal obiectiv modul de afișare al acestora în browser, XML urmărește structurarea, stocarea și transmiterea de date sub formă de informații utilizator, obiectivul propus în cazul acestui limbaj fiind semnificația datelor. Rezumând, HTML afișează, iar XML descrie și manipulează riguros informațiile.

Un fișier XML poate fi definit ca un arbore ordonat etichetat, deoarece este alcătuit din noduri elemente etichetate cu nume (tipul elementului) și o multitudine de atribute, având fiecare un nume și o valoare. Vom prezenta în cele ce urmează un exemplu de reprezentare a unui fișier XML:

Figura 1. Model de arbore XML

Un fișier XML care să corespundă schemei de mai sus ar avea următoarea structură:

<?xml version="1.0" encoding="UTF-8"?>

<ListaLecturi>

<Carte cod=”170613”>

<titlu>Great Expectations</titlu>

<autor>Charles Dickens</autor>

<genLiterar>fictiune</genLiterar>

<anulAparitiei>2010</anulAparitiei>

<editura>Harper Collins</editura>

</Carte>

</ListaLecturi>

Nodurile, în cazul de mai sus, sunt <ListaLecturi>, <Carte>, <titlu>, <autor>, <genLiterar>, <anulAparitiei> și <editura>, iar atributul cod, cu valoarea alocată „170613”.

Dintre avantajele utilizării de fișiere XML, vom menționa în primul rând pe acela că a venit să desființeze monopolul tag-urilor predefinite. Așa cum se poate vedea în exemplul expus mai sus, în cazul documentelor XML dezvoltatorul nu este limitat la o serie de tag-uri definite anterior, ci își poate scrie propriul limbaj de marcare.

Dezvoltatorul nu trebuie, astfel, să aștepte ca organismele responsabile cu standardizarea să aducă îmbunătățiri la nivel de clasă de tag-uri sau ca browserele să adopte între ele standardele celorlalte, procese care se pot dovedi de lungă durată, ci, cu ajutorul XML, el poate crea propriul set de tag-uri în ritmul dorit și, mai important, tag-uri care să întrunească întru totul necesitățile specifice proiectului. Definind propriile tag-uri, dezvoltatorul poate crea propriul limbaj de marcare în funcție de setul de probleme specifice, deoarece, spre deosebire de HTML, XML nu se bazează pe un set generic de tag-uri adecvate nevoilor tuturor, ci permite fiecărei persoană sau organizație să construiască propria bibliotecă de tag-uri care se potrivește perfect nevoilor lor.

Dintre caracteristicile limbajului XML, le vom menționa în cele ce urmează pe acelea specifice, care îl deosebesc de alte limbaje:

XML vine în ajutorul dezvoltatorilor de pagini web ale căror necesități depășesc limitele impuse de HTML

XML nu are tag-uri predefinite, ci permite definirea de tag-uri personalizate, dând astfel mai multă libertate dezvoltatorilor

Elementele care compun documentele XML vor conține obligatoriu un tag de deschidere și un tag de închidere. Regulile de sintaxă XML impun elementelor vide închiderea într-una dintre următoarele două metode:

Adăugarea unui tag de închidere:

<titlu>Great Expectations</titlu>

Închiderea tag-ului cu o bară oblică:

<titlu/>

Atributele XML vor conține obligatoriu valori:

<Carte cod=”170613”> Great Expectations </carte>

Valoarea unui atribut XML se delimitează prin utilizarea de ghilimele:

<Carte cod=”170613”> Great Expectations </carte>

Elementele XML sunt case-senzitive. Unui tag de deschidere scris cu caractere mici sau mari îi va corespunde un tag de închidere scris cu același tip de caractere.

Un element XML poate conține alte elemente. Condițiile în acest caz sunt următoarele:

Fiecărui tag de deschidere trebuie să-i corespundă un tag de închidere cu nume identic

Tag-ul de închidere al elementului-copil va precede tag-ul de închidere al elementului-părinte

<Carte cod=”170613”>

<titlu>Great Expectations</titlu>

<autor>Charles Dickens</autor>

<genLiterar>fictiune</genLiterar>

<anulAparitiei>2010</anulAparitiei>

<editura>Harper Collins</editura>

</Carte>

Declarația XML cu care începe un document XML este facultativă, însă utilizarea acesteia este recomandată, deoarece transmite procesorului informația că documentul prelucrat este un document XML. Dacă este inclusă, declarația XML trebuie situată pe prima poziție a primei linii a documentului și nu are un tag de închidere. Această declarație poate conține trei atribute:

version specifică versiunea standardului XML căreia se conformează documentul XML. Acest atribut este obligatoriu să fie menționat, dacă se face declarația.

encoding reprezintă numele de codare ale celor mai des întâlnite seturi de caractere utilizate astăzi.

standalone poate primi valorea „yes”, dacă documentul XML conține un DTD intern sau „nu”, dacă documentul XML în cauză are un link către de un DTD extern.

<?xml version="1.0" encoding="ISO-8859-1"?>

Capitolul al II-lea
Limbajul XSL. Prezentare generală

În domeniul tehnologiei informației, termenul eXtensible Stylesheet Language (denumit sub acronimul XSL) este folosit cu referire la o familie de limbaje utilizate pentru a transforma și a reda documente XML. Dezvoltarea acestui limbaj a fost gândită de Consorțiul World Wide Web ca tehnologie compatibilă cu tehnologia XML. Cu alte cuvinte XSL se definește ca limbaj pentru proiectarea stylesheet-urilor în baza fișierelor XML.

Așa cum explicam în capitolul anterior, limbajul XML nu folosește tag-uri predefinite, ci programatorului i se oferă posibilitatea să definească tag-urile în funcție de specificul proiectului. O consecință a acestui fapt, însă, este aceea că browserul nu va ști cum să interpreteze și să afișeze informația conținută în acest tip de documente. Prin urmare, se introduc fișierele XSL, stylesheet-urile, prin intermediul cărora se va specifica modul cum va fi afișată informația conținută într-un fișier XML. În acest sens, limbajul XSL se bazează pe două tehnici:

de transformare a unui fișier XML în alt fișier XML,

o tehnică referitoare la descrierea modului în care va fi prezentată informația transformată.

Conform site-ului oficial al Consorțiului World Wide Web, XSL reunește o familie de recomandări pentru a defini transformarea și prezentarea de fișiere XML și se compune din trei părți:

Transformări XSL: XSLT (în engleză, XSL Transformations) este un limbaj de transformare destinat transformării de fișiere XML în alte fișiere XML. Trebuie menționat că XSLT este componenta XSL suportată la acest moment de către browserele web.

Limbajul XML Path: XPath (în engleză, The XML Path Language) reprezintă un limbaj de redare utilizat de XSLT, dar și de multe alte limbaje, cu scopul de a accesa sau de a face referire la părți dintr-un fișier XML. XPath este folosit pentru a naviga în cadrul fișierelor XML sau, mai precis, în interiorul arborilor specifici topologiei fișierelor XML.

Obiecte de formatare XSL XSL-FO (în engleză, XSL Formatting Objects) reprezintă un limbaj de formatare pentru fișierelor XML. Browserele web nu oferă la momentul actual suport direct pentru componenta XSL-FO. De aceea, pentru vizualizarea unui documente XSL-FO, acesta trebuie mai întâi transformat în format PDF, care din păcate nu se adaptează la fel de bine ca și documentele HTML la gama variată de dimensiuni utilizate în acest moment pentru monitoare.

Făcând o paralelă, putem spune că XSL reprezintă pentru fișierul XML ceea ce reprezintă CSS pentru un document HTML, și anume un stylesheet, o foaie de stiluri. Există, însă, o diferență foarte mare între cele două limbaje, prin faptul că XSL utilizează marcaje XML, în vreme ce CSS folosește marcajele proprii. În cazul CSS, arborele obiectelor de formatare este aproape identic cu arborele-sursă, iar moștenirea de proprietăți de formatare aparține arborelui-sursă. În ceea ce privește limbajul XSL, pe de altă parte, arborele obiectelor de formatare poate fi radical diferit de arborele-sursă, iar moștenirea de proprietăți de formatare aparține arborelui obiectelor de formatare.

Având în vedere cele enunțate mai sus, devine evident faptul că cele două limbaje vin cu funcționalități diferite și mai ales sunt proiectate pentru a adresa nevoi diferite. Putem afirma astfel că cel mi probabil ele vor co-exista, fără ca vreunul să ia locul celuilalt.

XSL este destinat proceselor de formatare complexă în cazuri când conținutul documentului ar putea fi afișat în mai multe locuri. Spre exemplu, textul dintr-un antet poate apărea, de asemenea, și într-un cuprins generat dinamic. CSS este destinat formatării dinamice de documente online pentru diverse medii. Natura sa strict declarativ limitează capacitățile sale, dar îl face, în egală măsură, eficient și ușor de generat și modificat în fluxul de generare de conținut.

În cele ce urmează, vom realiza o reprezentare grafică care să evidențieze relația XSL/CSS:

Figura 2. Reprezentare grafică a transformării dintr-un fișier XML într-un document HTML

Stilizarea sau aplicarea unui stylesheet necesită un document-sursă XML, care conține informația pe care o va afișa stylesheet-ul, precum și stylesheet-ul în sine, care descrie felul cum va fi afișat un document de un anume tip. Documentul XML nu conține informații cu privire la prezentare, întrucât aceste informații sunt conținute în stylesheet. Separarea conținutului unui document de informația privind stilizarea respectivului document permite afișarea aceluiași document în medii diferite – precum monitorul, hârtia de tipar, dispozitivele mobile – , permițând de asemenea utilizatorilor să vizualizeze documentul în concordanță cu preferințele fiecăruia prin simpla modificare a stylesheet-ului.

Capitolul al III-lea
Procesoarele XML și XSL

Având în vedere cele expuse în capitolele anterioare, se impune să aprofundăm felul cum este procesat un stylesheet și modul cum este aplicat acesta unui fișier XML. Vom începe, în acest scop, prin a discuta despre un modul de software denumit procesor XML, care este utilizat pentru accesarea structurii și conținutului fișierului XML și pentru procesarea acestui tip de document în fragmente de informații, denumite standard noduri. Un procesor XML va rula în spatele aplicațiilor care dețin facilitatea de a analiza și accesa con care dețin facilitatea de a analiza și accesa conținutul documentelor de acest tip.

Documentele de tip XML se procesează sub formă de arbori ierarhici. Acești arbori sunt la rândul lor alcătuiți din noduri aferente fiecărui fragment de informație, astfel încât fiecare element și atribut dintr-un astfel de document se transformă în nod, după cum am explicat și exemplificat în primul capitol al acestei lucrări. Procesorul XML are rolul de a analiza marcajele și de a pasa informațiile structurate către o aplicație.

Atunci când fișierul XML a fost procesat într-un arbore, asupra acestui arbore se vor aplica regulile din stylesheet prin intermediul unui procesor XSL. Se va porni de la nodul rădăcină al arborelui, care va fi folosit ca bază în căutarea de potriviri cu șabloane.

Potrivirea cu șabloane este un mecanism de selecție flexibilă și foarte puternică, prin care se selectează valoarea rezultatului dependent de valoarea unei expresii. În acest caz, vom defini potrivirea cu șabloane ca proces în care sunt folosite șabloane în scopul identificării nodurilor din arbore care urmează a fi transformate în conformitate cu stylesheet-ul. Iar șabloanele acestea sunt la rândul lor păstrate în cadrul unor structuri care poartă denumirea de machete și se pot regăsi în stylesheet-uri.

Aceste machete se compun mai departe din:

Pattern, adică un șablon reprezentând una sau mai multe expresii XPath separate prin „|”, care se evaluează pe arborele sursă în scopul stabilirii unei potriviri

Template, în traducere corpul machetei, care va descrie efectiv transformarea pe baza căreia se obține arborele rezultat.

Machetele vor fi mai departe analizate de procesorul XSL în scopul procesării diferitelor părți ale arborelui sursă. Atunci când apar potriviri între șabloanele și nodurile arborelui sursă au loc transformările. Putem rezuma funcționalitatea unui procesor XSL prin faptul că primește arborele unui document ca dată de intrare, pentru a genera un alt arbore ca dată de ieșire.

În esență, există două sarcini de bază de efectuarea cărora este responsabil procesorul XSL. Prima dintre ele este aceea de a construi arborele rezultat prin transformarea unui arbore sursă al unui document și presupune utilizarea tehnologiei XSLT, iar cea de-a doua constă în interpretarea arborelui rezultat în scopul formatării informațiilor și a conținutului fiecărui nod și implică utilizarea tehnologiei XSL-FO.

Vom reprezenta în cele ce urmează funcționarea procesorului XSL.

Figura 2. Funcționarea procesorului XSL

Capitolul al IV-lea
Tehnologii XSL: XSLT, XPath și XSL-FO

Fișierele XML au fost proiectate pentru a se concentra asupra structurii informației dintr-un fișier și nu asupra aspectului acesteia. Pentru a vizualiza fișiere XML este necesară formatarea sau stilizarea lor. Practic aceste lucru înseamnă cel mai adesea convertirea fișierului XML în documente de alte tipuri. Conform definiției W3C, XSL este un limbaj pentru redarea stylesheet-urilor. Un stylesheet XSL este, la fel ca și CSS, un fișier care descrie cum va fi afișat un fișier XML de un anume tip. Limbajul XSL folosește aceeași funcționalitate ca și CSS2, însă are o sintaxă diferită. De asemenea, aduce în plus un limbaj de transformare pentru fișierele XML: XSLT, precum și funcționalități avansate de stilizare, exprimate printr-un tip de fișier XML care definește un set de elemente denumite Obiecte de Formatare (din en. Formatting Objects) și atribute, moștenite în parte dintre proprietățile CSS2, dar incluzând și altele noi, mult mai complexe.

Pentru a detalia cele expuse mai sus, revenim la o idee trasată într-un capitol anterior, și anume aceea că limbajul XSL constă concret în trei limbaje create pentru convertirea de fișiere XML în alte formate. Limbajul XSL Formatting Objects, abreviat XSL-FO, descrie formatarea vizuală, în timp ce XPath accesează părți specifice dintr-un fișier XML. XSLT (XSL Transformations) este, însă, limbajul care realizează efectiv conversia dintr-un format XML în altul.

Figura 3. Reprezentare grafică a tehnologiilor XSLT, XPath și XSL-FO

XSLT are, așadar, funcția de a converti fișierul XML într-un alt document XML sau într-un document de alt tip, acceptat de browser, precum HTML sau XHTML. De regulă, XSLT va efectua acest lucru prin transformarea fiecărui element XML într-un alt element (X)HTML. XSLT face posibilă adăugarea și ștergerea de elemente și atribute în și din fișierul afișat. Astfel elementele vor putea fi rearanjate și sortate, vor putea fi efectuate teste, iar apoi se vor putea lua decizii cu privire la informația care va fi afișată sau ascunsă. Rezumând, putem defini procesul de transformare după cum urmează: limbajul XSLT are rolul de a transforma un arbore-sursă XML într-un arbore-rezultat XML.

Transformările XSLT descriu o mulțime de reguli de transformare a unui arbore de intrare într-un arbore de ieșire. Regula conține două componente: o parte de condiții, denumită șablon (din engl. pattern), care se identifică cu nodurile arborelui-sursă, și un tipar (din engl. template). Atunci când are loc o identificare (din engl. matching), tiparul se instanțiază, generând astfel o parte din arborele documentului de ieșire.

Parcurgerea recursivă a arborilor stă la baza prelucrării unui arbore-sursă.

http://software.ucv.ro/~cbadica/dadr/cap5.pdf

http://www.w3.org/TR/xslt#section-Introduction

http://www.zvon.org/xxl/XSLTutorial/Books/Output/example1_ch1.html

Pentru identificarea informațiilor în fișierele XML și pentru navigarea între elementele sau nodurile și atributele care alcătuiesc fișierele XML, XSLT se bazează pe limbajul XPath. Procesul de transformare XSLT folosește XPath pentru a defini părți din documentul-sursă, care se vor potrivi cu unul sau mai multe șabloane predefinite. Atunci când identifică o potrivire, XSLT transformă acea bucată din documentul-sursă în documentul-rezultat. Așadar, XPath poate fi abordat ca limbaj de interogare a arborilor XML.

Definim XPath ca limbaj non-XML utilizat pentru a descrie expresii utilizate cu scopul de a adresa porțiuni dintr-un fișier XML. Denumirea este legată de funcționalitatea acestui limbaj, și anume aceea că folosește căi (în engleză „paths”) pentru a identifica elementele din documentele de tip XML. Componentă de bază a limbajului XSLT, limbajul XPath este și el un standard de sine stătător al World Wide Web Consortium. Diferența dintre limbajul XPath și celelalte componente XSL, XSLT și XSL-FO, constă în faptul că primul dintre ele nu este implementat ca limbaj XML. Mai precis, utilizăm expresiile XPath în situațiile când marcajul XML nu se poate aplica, spre exemplu în cadrul valorilor atributelor.

Limbajul XPath permite identificarea unor bucăți dintr-un fișier XML, precum și navigarea prin fișiere XML. Deoarece documentele XML au fost proiectate cu o structură arborescentă caracterizată prin relația tată-fiu a nodurilor, limbajul XPath poate accesa elemente din cadrul unui astfel de document, acesta fiind scopul principal pentru care a fost proiectat. Această funcționalitate îi permite limbajului XPath să selecteze noduri și seturi de noduri din documente de tip XML.

La fel ca și în cazul XSLT, limbajul XPath presupune că fișierul XML a fost parcurs într-un arbore cu noduri. Accesarea diferitelor noduri și atribute ale documentului XML este permisă prin faptul că sintaxa utilizată de limbajul XPath este foarte asemănătoare cu sintaxa folosită în scopul accesării fișierelor într-un sistem UNIX. XPath nu este un fișier XML, astfel că nu respectă structura documentelor de acest tip.

Descriem limbajul XPath făcând referire la cele șapte tipuri de noduri care îl definesc, între care se stabilesc relații de rudenie (spre exemplu, tată – fiu), grație structurii arborescente a documentelor XML, după cum am observat într-un capitol anterior:

element nodurile documentului XML,

atribut,

text,

namespace,

instrucțiuni de procesare,

comentariu

rădăcina documentului root.

În parcurgerea unui document XML, selectarea nodurilor se realizează prin urmarea unei căi de localizare XPath, care se compune dintr-o secvență de pași de localizare (din limba engleză location step). Această cale poate fi absolută, situație în care va fi precedată obligatoriu de „/’, calea către destinație pornind de la rădăcina documentului:

/pasul1/pasul2/pasul3/…

sau relativă, când nu va fi precedată de „/”, calea pornind din nodul curent. Ca atare, o cale XPath va conține fie unul, fie mai mulți pași separați prin „/”:

pasul1/pasul2/pasul3/…

Etapele de parcurgere a unui document XML prin intermediul unei expresii XPath sunt evaluate în ordine, de la stânga către dreapta, iar când s-a ajuns la ajuns la cea de-a doua evaluare – pasul 2 –, aceasta se va realiza relativ la fiecare nod rezultat în urma evaluării pasul1.

Vom exemplifica cele expuse mai sus cu ajutorul unui fișier XML definit astfel:

<?xml version="1.0" encoding="ISO-8859-1"?>

<sectieFacultate numeSectie="calculatoare" anStudiu=4>

<listaStudenti>

<student cod="137">

<nume>Albulescu</nume>

<prenume>Emil</prenume>

</student>

<student cod="138">

<nume>Anghel</nume>

<prenume>Cristina</prenume>

</student>

<student cod="138">

<nume>Angheluta</nume>

<prenume>Dan</prenume>

</student>

<student cod="138">

<nume>Atodiresei</nume>

<prenume>Mihaela</prenume>

</student>

</listaStudenti>

<responsabilAn cod="17">

<nume>Bucur</nume>

<prenume>Ana</prenume>

</responsabilAn>

</sectieFacultate>

Pasul de localizare al unei căi XPath se definește ca fiind alcătuit din trei componente: o axă (din limba engleză axis), un test de nod (din limba engleză node test) și zero sau mai multe predicate, care au scopul de a rafina căutarea prin diminuarea mulțimii de noduri selectate de testul de nod.

Notăm mai jos sintaxa unui pas de localizare din cadru unei căi XPath:

nume_axa:: + test_nod + lista_de_predicate (acesta din urmă este opțional și se apelează inclus între „[„ și „]”)

Exemplu: „child::responsabilAn[prenume=Ana]”

Observăm în exemplul de mai sus cum fiecare componentă a unui pas a selectat un anumit nod, prin adăugarea de restricții suplimentare: nume_axa=”child” cuprinde toate sub-nodurile nodului în care ne aflăm, nod-test=”responsabilAn” apelează toate sub-nodurile nodului curent cu numele de „responsabilAn”, iar lista_de_predicate=”prenume=Ana” apelează sub-nodurile nodului curent cu numele „responsabilAn” care au un nod „prenume” cu valoarea „Ana”.

Cele trei componente ale unui pas XPath au roluri, după cum urmează:

nume_axa precizează legătura dintre nodul curent și nodurile selectate de către acest pas.

În exemplul de mai sus, „child” precizează faptul că nodurile identificate în pasul curent sunt sub-noduri ale nodului curent, iar în acest nodul curent este cel identificat în pasul anterior. Navigarea de-a lungul acestor axe stă la baza limbajului XPath.

În cazurile când nu se menționează „nume_axa” se va utiliza axa implicită, adică axa „child::”

Apelăm atributele modurilor în două moduri: cu prescurtarea „@” – în cazul nostru, „@numeSectie”, „@anStudiu” și „@cod” – sau utilizând numele de axă „attribute::”

test_nod precizează fie numele acelui nod care trebuie identificat – în cazul nostru „responsabilAn” –, fie tipul acestui nod – în cazul nostru „child::text()” identifică sub-nodurile de tipul TEXT, adică nodurile de tip #CDATA dintr-un fișier XML

lista_de_predicate denumește funcții utilizate cu scopul de a filtra nodurile din fișierul XML selectate în pasul curent în funcție de anumite condiții

Enumerăm mai jos tipurile de axe posibile:

child: precizează sub-nodurile nodului context

descendant: precizează toți descendenții nodului context; definim ca descendent un fiu sau un fiu al unui fiu, excluzând însă atributele și spațiile de nume

parent precizează ce conține părintele unui nod

ancestor precizează toți strămoșii unui nod: părintele, părintele părintelui. Această axă va conține obligatoriu nodul rădăcina, exceptând cazul când rădăcina este chiar nodul curent.

following-sibling și preceding-sibling precizează ce conțin nodurile imediat descendente, precedente și următoare ale nodului context

following și preceding precizează ce conțin nodurile precedente și următoare ale nodului context

Attribute, namespace, self, descendant-or-self, ancestor-or-self.

http://andrei.clubcisco.ro/cursuri/f/f-sym/4ioc/labs/Xpath.pdf

http://www.w3schools.com/xpath/xpath_syntax.asp

Vom oferi în cele ce urmează o explicație simplă a procesului de convertire, care pornește de la două documente: un fișier XML conținând informațiile și un stylesheet XSLT care va fi folosit pentru transformare. Un procesor XSLT va aplica regulile definite în stylesheet asupra fișierului XML pentru a crea un document în format XHTML, WML sau practic în aproape orice alt format text.

Un aspect important de menționat este acela că mai multe stylesheet-uri diferite pot prezenta același document în mai multe formate diferite. Un singur stylesheet poate transforma instanțe multiple ale unui singur tip de date într-un format de prezentare standard, pe care utilizatorul îl poate modifica pur și simplu modificând stylesheet-ul. De asemenea, limbajul XSLT poate transforma instanțe multiple de date în formate multiple.

Iată, așadar, mai jos, un exemplu de proces de convertire al fișierului XML în document HTML. În acest scop s-a utilizat tool-ul Altova XMLSpy, versiune trial.

Avem în primă fază documentul XML în următoarea formă:

Peste care aplicăm următorul stylesheet:

Iar rezultatul afișat în browser va arăta astfel:

Deși a fost în primă fază proiectat pentru a realiza operații complexe de stilizare, precum generarea de table de materii și indexuri, limbajul XSL se folosește în acest moment în mare măsură ca limbaj universal de procesare de fișiere XML.

http://www.zvon.org/xxl/XSLTutorial/Books/Output/example1_ch1.html

http://www.w3.org/Style/XSL/WhatIsXSL.html

http://www.techrepublic.com/article/introduction-to-xslt/

http://www.yegor256.com/2014/06/25/xml-and-xslt-in-browser.html

Vom discuta mai departe amănunțit despre XSLT, o sub-ramură a limbajului XSL.

http://www.bnr.ro/files/xml/years/nbrfxrates2015.xml

Capitolul al V-lea
Limbajul XSLT

După cum am observat în capitolele anterioare, XSL are rolul de a coverti date XML în diverse formate pregătite pentru a fi distribuite. Modulul XSLT reprezintă partea cea mai importantă a standardului XSL. XSLT este responsabil cu transformarea unui document XML în alt document XML sau într-un alt tip de document care este recunoscut de browser. În mod normal, XSLT realizează acest proces transformând fiecare element XML într-un element XHTML. XSLT poate, de asemenea, să adauge elemente noi în documentul rezultat sau chiar să elimine elemente. În plus, XSLT rearanjează sau sortează elementele, testează condiții și, de asemenea, decide care dintre elemente vor fi afișate și care nu.

Definim procesul de transformare ca convertire a unui arbore sursă într-un arbore destinație. În procesul de transformare, XSLT folosește Xpath pentru a defini părți ale documentului sursă care se potrivesc cu niște șabloane predefinite. Atunci când o potrivire a fost detectată, XSLT transformă acea parte din documentul sursă care se potrivește cu conținutul șablonului definit. Dacă există părți din documentul sursă care nu se potrivesc cu nici un șablon, acele părți vor rămâne nemodificate în documentul rezultat.

Vom exemplifica în cele ce urmează cu ajutorul unui document XML (text.xml) pe care dorim să-l convertim în format HTML, utilizând tehnologia XSLT. Acesta constă într-o colecție de cărți despre care cunoaștem și dorim să afișăm următoarele informații: numele cărții, numele autorului, anul de publicare, editura la care a fost publicată și prețul. Mai departe vom transforma acest fișier XML într-o pagină HTML, pentru a putea fi vizualizat cu ajutorul unui browser.

<?xml version="1.0" encoding="ISO-8859-1"?>

<librarie>

<articol>

<titlu>The Children Act</titlu>

<autor>Ian McEwan</autor>

<loculPublicarii>London</loculPublicarii>

<editura>Vintage</editura>

<price>$7.48</price>

<year>2015</year>

</articol>

<articol>

<titlu>The Narrow Road to the Deep North</titlu>

<autor>Richard Flanagan</autor>

<loculPublicarii>London</loculPublicarii>

<editura>Vintage</editura>

<price>$10.41</price>

<year>2014</year>

</articol>

<articol>

<titlu>The Rosie Project</titlu>

<autor>Graeme Simsion</autor>

<loculPublicarii>London</loculPublicarii>

<editura>Penguin Books Ltd.</editura>

<price>$9.22</price>

<year>2014</year>

</articol>

<articol>

<titlu>The Goldfinch</titlu>

<autor>Donna Tartt</autor>

<loculPublicarii>London</loculPublicarii>

<editura>Abacus</editura>

<price>$12.78</price>

<year>2014</year>

</articol>

<articol>

<titlu>The Help</titlu>

<autor>Kathryn Stockett</autor>

<loculPublicarii>London</loculPublicarii>

<editura>Penguin Books Ltd.</editura>

<price>$9.85</price>

<year>2010</year>

</articol>

<articol>

<titlu>The Luminaries (Man Booker Prize winner 2013)</titlu>

<autor>Eleanor Catton</autor>

<loculPublicarii>London</loculPublicarii>

<editura>GRANTA BOOKS</editura>

<price>$12.47</price>

<year>2014</year>

</articol>

<articol>

<titlu>The Book Thief</titlu>

<autor>Markus Zusak</autor>

<loculPublicarii>London</loculPublicarii>

<editura>Black Swan</editura>

<price>$9.42</price>

<year>2008</year>

</articol>

</librarie>

Bibliografie

Steven Holzner: Sams Teach Yourself XML in 21 Days, 2003, SAMS, 3rd edition

XML. De ce? Cum? Unde?, articol din Revista „Informatică Economică” a Academiei de Studii Economice, http://revistaie.ase.ro

XML Journal (articole XML & XSLT online)

Neil Bradley: The XML companion, 1998, Addison-Wesley

William J. Pardi: XML in Action. Web Techology, 1999, Microsoft Press

http://www.w3.org/Style/XSL/ (specificația XSL)

http://www.w3.org/TR/xslt (specificația XSLT)

http://www.w3.org/TR/XPath (specificația XPath)

How Not to Use XSLT, articol de R. Alexander Milowski, berkeley.edu

Converting-xml-to-html-using-xsl.html, articol, http://www.htmlgoodies.com/

What kind of language is XSLT?, articol, http://www.ibm.com

Introduction to XSLT, articol, http://techrepublic.com

Similar Posts

  • Sisteme Informatice DE Tip Erp

    cuprins INTRODUCERE I. sisteme informatice de tip erp în managementul firmei 1.1. EVOLUȚIA SISTEMELOR INFORMATICE 1.2. ROLUL SISTEMELOR INFORMATICE DE TIP ERP ÎN MANAGEMENTUL FIRMEI II. structura și funcțiile unui sistem de tip erp 2.1. GESTIUNEA PRODUCȚIEI 2.2. GESTIUNEA STOCURILOR 2.3. APROVIZIONARE ȘI DEFACERE 2.4. CONTABILITATE FINANCIARĂ 2.5. MODULUL IMOBILIZĂRI 2.6. SALARIZAREA ȘI GESTIUNEA ANGAJAȚILOR…

  • Clase de Functii Univalente

    Cap.1 Clase speciale de funcții univalente. În acest capitol voi prezenta studiul unor clase de funcții univalente caracterizate prin proprietăți geometrice remarcabile, proprietăți care se exprimă analitic prin anumite inegalități diferențiale. Aceste condiții analitice care caracterizează acste clase reprezintă condiții suficiente de univalență. 1.1 Funcții stelate Definiția1: Fie funcția cu f(0)=0. Spunem că funcția f…

  • Platforma Deschisa Pentru Specificatii DE Contabilitate

    === concluzie === Capitolul V CONCLUZII Astăzi tot mai multe activități se caută a fi informatizate. Indiferent de specificul domeniului tehnic, economic, social produsele informatice trebuie să satisfacă în cât mai mare măsură cerințele utilizatorilor la un anumit moment de timp și să fie capabile să răspundă unor solicitări viitoare. De aceea trebuie bine cunoscut…

  • Baze de Date Personal Si Salarizare

    Figură 1-Tabela Localități 4 Figură 2-Tabela Salariați 5 Figură 3-Tabela Departamente 6 Figură 4-Tabela Sporuri 7 Figură 5-Tabela Spor_angajat 8 Figură 6-Tabela Retineri 9 Figură 7-Tabela Retineri_angajat 10 Figură 8-Salariati.frx 12 Figură 9-Report5.frx 13 Figură 10-program_adaugare.prg 14 Figură 11-program_modificare.prg 16 Figură 12-program_stergere.prg 18 Figură 13-listare.prg 19 Figură 14-program_raport.prg 20 Figură 15-program_stergere_retinere.prg 22 Figură 16-program_modificare_retinere.prg 24…

  • Arhitectura Microprocesoarelor

    Cuprins Tema proiectului Circuite de cale – bloc de linie automat. Prezentare generala Principii de urmarire in linie curenta Structuri cu microprocesoare introducere principii de proiectare Microprocesorul INTEL 8086 genaralitati caracteristici de baza terminalele si semnificatiile lor arhitectura interna setul de registre configuratii sistem pentru INTEL 8086 Circuite aditionale INTEL tampoane unidirectionale I8282 tampoane bidirectionale…