Vizualizarea documentelor xml

Similar documents
Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Versionare - GIT ALIN ZAMFIROIU

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

CERERI SELECT PE O TABELA

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

Metrici LPR interfatare cu Barix Barionet 50 -

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

Subiecte Clasa a VI-a

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

Lucrarea de laborator nr. 4

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

Update firmware aparat foto

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

Procesarea Imaginilor

R O M Â N I A CURTEA CONSTITUŢIONALĂ

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

Olimpiad«Estonia, 2003

CERERI SELECT PE MAI MULTE TABELE

Mecanismul de decontare a cererilor de plata

Auditul financiar la IMM-uri: de la limitare la oportunitate

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

GHID DE TERMENI MEDIA

INTEROGĂRI ÎN SQL SERVER

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A.

The First TST for the JBMO Satu Mare, April 6, 2018

HEAPSORT I. CONSIDERAŢII TEORETICE

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB

Printesa fluture. Мобильный портал WAP версия: wap.altmaster.ru

Modalitǎţi de clasificare a datelor cantitative

Propuneri pentru teme de licență

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

ISBN-13:

Candlesticks. 14 Martie Lector : Alexandru Preda, CFTe

Metoda de programare BACKTRACKING

Metoda BACKTRACKING. prof. Jiduc Gabriel

Itemi Sisteme de Operare

Managementul referinţelor cu

Updating the Nomographical Diagrams for Dimensioning the Concrete Slabs

În continuare vom prezenta unele dintre problemele de calcul ale numerelor Fibonacci.

SGBD Access 2010: Query

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Mircea Merca 1) Articol dedicat Prof. Dr. Ioan Tomescu la a 70-a aniversare

Baza de date: tabele, date. Componentele unei B.D.: tabele, constrangeri, relatii. Entitati ale unei B.D.: formulare, interogari, rapoarte

CHAMPIONS LEAGUE 2017 SPONSOR:

Baze de date distribuite și mobile

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

Reţele Neuronale Artificiale în MATLAB

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date.

Structuri de date: ARBORI

5.2 Interogări în SQL

Interogarea (query), este operaţia prin care se obţin datele

HTML Reference Prof. Marius Măciucă

HTML. De exemplu, considerând pagina web cu structura prezentată în figura 1, Fig. 1

Ce pot face pe hi5? Organizare si facilitati. Pagina de Home

Documentaţie Tehnică

INSTRUMENTE DE MARKETING ÎN PRACTICĂ:

Cap.5 Normalizarea relaţiilor

Proiectarea bazelor de date. PL/SQL Înregistrări și Colecții # 13. Adrian Runceanu

EN teava vopsita cu capete canelate tip VICTAULIC

Creare baza de data Deschidem aplicaţia Microsoft Access. Lansarea în execuţie a programului se face urmând calea:

PROIECT. La Baze de date. Evidența activității pentru o firmă IT. Îndrumător: ș. l. dr. ing. Mirela Danubianu. Efectuat de: Grigoriev Sergiu gr.

Limbajul VHDL. Circuite integrate numerice. Limbajul VHDL

PROIECTAREA ALGORITMILOR

Universitatea George Bariţiu, Braşov

MANAGEMENTUL CONTRACTELOR MANUAL DE UTILIZARE

Baze de date în Visual Fox Pro. Stabilirea relațiilor dintre tabele în cadrul bazei de date. Filtrarea, sortarea, indexarea, căutarea înregistrărilor.

ADO.NET - note de curs pentru disciplina "Servere de date"

MICROSOFT ACCESS 2007 (DE CĂUTAT???)

Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo

Proiectarea bazelor de date # 11. PL/SQL Funcții în PL/SQL (partea a II-a) Adrian Runceanu

Capitolul 4 SUBCERERI. F. Radulescu. Curs: Baze de date - Limbajul SQL

APLICAŢII ELEMENTARE CU ARBORI

Lucrarea 1 Introducere în Linux

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router

PROCEDURA PRIVIND DECONTURILE. 2. Domeniu de aplicare Procedura se aplică în cadrul Universităţii Tehnice Cluj-Napoca

INTERPRETOARE DE COMENZI

Manual Limba Romana Clasa 5 Editura Humanitas File Type

X-Fit S Manual de utilizare

MANAGEMENTUL CALITĂȚII - MC. Proiect 5 Procedura documentată pentru procesul ales

Ghid de utilizare a Calculatorului valorii U

Evoluția pieței de capital din România. 09 iunie 2018

Funcţii grup şi clauzele GROUP BY, HAVING. Operatorii ROLLUP şi CUBE.

I. Instrucţiuni PRELEGERE IX PROGRAMAREA CALCULATOARELOR ŞI LIMBAJE DE PROGRAMARE

Managementul Proiectelor Software Metode de dezvoltare

PACHETE DE PROMOVARE

NOTA: se vor mentiona toate bunurile aflate in proprietate, indiferent daca ele se afla sau nu pe teritoriul Romaniei la momentul declararii.

earning every day-ahead your trust stepping forward to the future opcom operatorul pie?ei de energie electricã și de gaze naturale din România Opcom

Colegiul Național Calistrat Hogaș Piatra-Neamț LIMBAJUL SQL

DECLARAȚIE DE PERFORMANȚĂ Nr. 101 conform Regulamentului produselor pentru construcții UE 305/2011/UE

Preţul mediu de închidere a pieţei [RON/MWh] Cota pieţei [%]

Metode de acces la informatie în bazele de date pentru prelucrari grafice

SAG MITTIGATION TECHNICS USING DSTATCOMS

Transcription:

Vizualizarea documentelor xml Fără un fişier de stil asociat: browserul vizualizează conținutul documentului xml, cu posibilitatea de a vedea/ascunde descendenții unui nod din structura arborescentă Exemplu: fisiere/xml-xsl/bib.xml Cu un fişier de stiluri (construit asemănător ca pentru un document html): se foloseşte acest fişier la vizualizarea documentului. Pentru fiecare tag din documentul xml se poate defini un stil de apariție. La vizualizarea documentului tagurile vor apare în ordinea în care sunt trecute în document, fără posibilitatea de a schimba ordinea acestora sau de a însera caractere suplimentare. Utilizarea acestei facilități se face prin includerea următoarei declarații în documentul xml (se precizează fişierul de stiluri): <?xml-stylesheet type="text/css" href="fisier.css"?> Exemplu: bib.xml cu fişierul de stiluri bib.css din directorul: /xml-xsl/0/ Observații: La vizualizare nu se pot folosi atributele definite în taguri. Un document xml se poate transforma în alt document (xml, html, etc.) cu ajutorul limbajul XSLT. XSL - extensible Stylesheet Language Pentru a prezenta (vizualiza, transforma) documentele xml s-a creat limbajul declarativ XSL. Acesta este compus din trei componente: XPath (limbajul XML Path) XSLT (extensible Stylesheet Language Transformation), XSL/FO (extensible Stylesheet Language Formatting Objects). XPath XPath este un standard W3C XPath permite selectarea unei părți dintr-un document xml cu ajutorul unor expresii (expresii de cale) XPath conține mai multe funcții standard (descrise la http://www.w3.org/2005/xpathfunctions/ şi http://www.w3schools.com/xpath/xpath_functions.asp) In XPath se pot folosi 7 tipuri de informații (elemente): 1. element, 2. atribut, 3. text, 4. namespace, 5. processing-instruction, 6. comment, 7. document (root) node. Valoarea atomică este valoarea unui atribut sau a unui nod care nu se mai divide. Un element poate avea 0, 1, 2,... fii (descendenți pe nivelul imediat următor în structura de arbore). Un element poate avea un nod părinte Precizarea unui element sau a unei mulțimi de elemente se poate face printr-o "expresie", care este scrisă ca o succesiune de paşi pentru a ajunge dintr-un nod curent la alt nod sau la altă mulțime de noduri.

Intr-un pas (din această succesiune de selectare) poate apare una din următoarele construcții. In funcție de context, există un nod curent. nume_element Selectează toți descendenții direcți ai unui element cu numele precizat. / Selectează nivelul următor din structura de arbore. Dacă apare ca prim caracter în expresie, atunci se precizează nodul rădăcină din document // Selectează un nod, plecând de la nodul curent, făcând salturi (spre interior) peste 0, 1, 2,... nivele.. Selectează nodul curent.. Selectează nodul părinte al nodului curent @ Selectează un atribut din nodul curent Exemple pentru documentul: <?xml version="1.0"?> <bibliografie> <carte limba="ro"> <titlu>php, MySQL si Apache</titlu> <autor>julie C. Meloni</autor> <editura>teora</editura> <pret moneda="ron">45.87</pret> <anap>2005</anap> </carte> <carte limba="en"> <autor>richard Anderson</autor> <autor>brian Francis</autor> <autor>alex Homer</autor> <autor>rob Howard</autor> <autor>david Sussman</autor> <autor>karli Watson</autor> <titlu>professional ASP.NET 1.0 Special Edition</titlu> <editura>wrox Press Ltd.</editura> <anap>2002</anap> </carte> </bibliografie> carte /bibliografie carte/titlu //editura bibliografie//anap //@limba Selectează toți descendenții direcți (copiii nodului curent) cu numele carte Selectează elementul bibliografie din document Selectează toate elementele titlu, care sunt descendenți direcți pentru carte Selectează elementele editura incluse în nodul curent, indiferent de poziția lor în structura arborescentă Selectează elementele anap incluse, indiferent de distanță, într-un element bibliografie Selectează toate atributele cu numele limba

Prin construcțiile precedente se poate selecta o mulțime de noduri (o colecție, o listă). Pentru a specifica un anumit nod (dintr-o colecție de noduri, sau care îndeplineşte o condiție), se foloseşte un predicat, precizat între două paranteze drepte. Predicatul poate fi o expresie numerică (precizează printr-un index un anumit element din colecție), sau poate fi o condiție (se poate preciza o submulțime de elemente din colecție, care îndeplinesc o condiție). In condiția din predicat (dacă apare) se pot folosi următorii operatori (aritmetici, relaționali, logici): +, -, *, div, =,!=, <, <=, >, >=, or, and, mod. Pentru a specifica un număr neprecizat de elemente (în expresie, în predicat) se pot folosi construcțiile următoare: * pentru orice element @* pentru orice atribut node() pentru orice nod Exemple: Expresie Rezultat /bibliografie/carte[1] Selectează primul element carte din elementul bibliografie. Observație: IE foloseste pentru primul element indexul 0, iar în standard primul index este 1. /bibliografie/carte[last()] Selectează ultimul element carte din elementul bibliografie /bibliografie/carte[last()-1] Selectează penultimul element carte din elementul bibliografie /bibliografie/carte[position()<3] Selectează primele două elemente carte din elementul bibliografie //carte[@limba] Selectează toate elementele carte care au atributul limba //carte[@limba='en'] Selectează toate elementele carte care pentru care atributul limba are valoarea 'en' /bibliografie/carte[@pret>50.00] Selectează toate elementele carte din elementul bibliografie pentru care atributul pret are valoarea > 50 /bibliografie/carte[@pret>50.00]/titlu Pentru toate elementele carte din elementul bibliografie la care atributul pret are valoarea > 50, selecteaza titlul /bibliografie/* Selectează toate elementele fiu din elementul bibliografie //* Selectează toate elementele din nodul curent //titlu[@*] Selectează toate elementele titlu care au cel puțin un atribut Cu operatorul " " se pot preciza mai multe expresii. Exemple: //carte/titlu //carte/pret Selectează toate elementele titlu şi toate elementele pret din elementele carte // titlu // pret Selectează toate elementele titlu şi toate elementele pret din document /bibliografie/carte/titlu //pret Selectează toate elementele titlu din toate elementele carte din bibliografie şi toate elementele pret In procesul de selectare (prin expresia de cale) se ajunge la un nod curent, din care se poate merge într-o anumită "direcție" (pe o anumită axă) pentru a determina alte noduri. In

tabelul următor se precizează denumirea unor astfel de axe pentru un nod curent. In expresia de selectare se poate folosi construcția: "DenumireAxa::denumirenod" în loc de "denumirenod". De aici se deduce că un "pas" din selectarea nodurilor poate avea forma: DenumireAxa::denumirenod [predicat], unde DenumireAxa şi predicat pot lipsi. DenumireAxa ancestor ancestor-or-self attribute child descendant descendant-or-self following following-sibling namespace parent preceding preceding-sibling self Rezultat Selectează toți strămoşii (părinți, bunici,...) nodului curent Selectează toți strămoşii (părinți, bunici,...) nodului curent şi nodul curent Selectează toate atributele nodului curent Selectează toți copiii nodului curent Selectează toți descendenții (copii, nepoți,...) nodului curent Selectează toți descendenții (fii, nepoți,...) nodului curent şi nodul curent Toate nodurile care sunt succesoare ale nodului curent, indiferent de nivelul în structura arborescentă Toate nodurile care sunt succesoare ale nodului curent şi care au acelaşi părinte Selectează toate nodurile namespace din nodul curent Selectează părintele nodului curent Toate nodurile care sunt predecesoare ale nodului curent, indiferent de nivelul în structura arborescentă Toate nodurile care sunt predecesoare ale nodului curent şi care au acelaşi părinte Selectează nodul curent Exemple de expresii pentru un pas din procesul de selectare (considerăm că se lucrează într-un anumit context, deci există un nod curent): child::* Selectează toți copiii nodului curent child::carte Pentru nodul curent selectează toți copiii carte attribute::* Selectează toate atributele nodului curent attribute::limba Selectează atributul limba pentru nodul curent descendent::carte Selectează toți descendenții carte pentru nodul curent ancestor::carte Selectează toți ascendenții carte pentru nodul curent ancestor-or-self::carte Selectează toți ascendenții nodului carte şi nodul însuşi pentru nodul curent XSLT (extensible Stylesheet Language Transformation) Scopul limbajului XSLT este de a transforma un document xml în alt document xml. O descriere simplă a semnificației unui document XSLT pentru XML este ceva asemănător ca CSS pentru HTML, dar cu mai multe facilități. In procesul de transformare se foloseşte limbajul XPath pentru selectarea unui element, sau a unei mulțimi de elemente, din documentul xml ce se transformă. Un fişier (foaie de stiluri) XSLT este un fişier XML (bine format) care defineşte un template (model) pentru utilizarea datelor (taguri, atribute) dintr-un document xml. Printr-un

astfel de şablon se poate face o reorganizare, o gestiune mai complexă a componentelor unui document xml (se pot căuta anumite elemente, se pot efectua transformări asupra elementelor, se pot folosi stiluri de apariție), deci se poate crea un nou document xml cu taguri complet diferite. Un document xslt este document xml, deci prima linie este de forma: <?xml version="1.0"?> Elementul rădăcină pentru un document xlst este <xsl:stylesheet> sau <xsl:transform> (care sunt sinonime) şi se declară astfel (pentru a putea fi folosite): <xsl:stylesheet xmlns:xsl= http://www.w3c.org/1999/xsl/transform version= 1.0 > sau: <xsl:transform xmlns:xsl= http://www.w3c.org/1999/xsl/transform version= 1.0 > iar la final aceste taguri trebuie închise. In acest mod se precizează că toate elementele care vor începe cu xsl: sunt elementele documentului XSLT, iar acestea sunt conforme cu recomandarea XSLT 1.0 la care se face referire prin spațiul de nume. In documentul xslt toate elementele care nu au acest prefix (adică "xsl:") sunt extrase (copiate) în documentul transformat, fără nici o analiză. De aici derivă semnificația de "şablon": tot ce se află în cadrul tagurilor xsl face parte din şablon, restul se extrage după cum apare în document. Pentru a asocia un document XSLT (o foaie de stiluri XSLT) la un document XML este necesară următoarea declarație la începutul documentului XML: <?xml-stylesheet type= text/xsl href= numefişier.xsl?> Un şablon descrie o modalitate de transformare a elementelor din documentul xml şi este definit prin tagul: <xsl:template...>... </ xsl:template> Un document xsl poate avea definite unul sau mai multe şabloane. Un şablon trebuie să poată selecta unul sau mai multe elemente din structura de arbore a documentului xml. O astfel de selectare se poate face prin limbajul XPath (aşa cum e precizat mai sus, se poate face o deplasare în arborelele corespunzător documentului xml, prin selecția nodurilor XML care satisfac diverse criterii). Din cele precizate mai sus se poate trage concluzia că un document xslt are o structură de forma: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">... taguri xsl (şabloane care se analizează), sau de alte taguri (care se extrag fără analiză) </xsl:stylesheet> Precizarea şabloanelor: <xsl:template match="expresie">... </ xsl:template> Se defineşte un model (şablon) pentru transformare. Expresia din match (precizată în limbajul XPath) defineşte un nod în structura de arbore a documentului xml. In interiorul

acestui tag nodul astfel precizat va fi un nod curent. Acest nod se va transforma conform modelului. Acest tag se poate repeta (pentru fiecare model de transformare). <xsl:value-of select="expresie" /> - folosind nodul curent, se poate determina valoarea unei expresii, iar această valoare se adaugă în documentul rezultat prin transformare. Pentru "expresie" se foloseşte o construcție XPath. <xsl:for-each select="expresie ">... </ xsl:for-each > - permite parcurgerea tuturor elementelor precizate de o expresie (deci o colecție de elemente, iar pentru fiecare element se folosesc tagurile incluse în <xsl:for-each>. Colectia de elemente dintr-un tag < xsl:for-each> se poate sorta după valoarea unei expresii precizată prin <xsl:sort select="expresie"/>. Pot apare atribute suplimentare pentru a preciza tipul valorilor (ex. data-type="number") şi ordinea de sortare (ex. order="ascending"). <xsl:apply-templates [select="expresie"] /> - aplică un şablon la: o descendenții nodului curent dacă nu apare select o elementele fiu care sunt precizate prin expresie (dacă apare select). Pentru fiecare nod din această mulțime se aplică un şablon individual definit cu: <xsl:templates select="nume" match="element">... </xsl:templates> Intr-un şablon poate apare tagul: <xsl:if test="expresie">...... extrageri dacă valoarea condiției este true...... </xsl:if> sau un tag de forma următoare: <xsl:choose> <xsl:when test="expresie">... extrageri... </xsl:when>... <xsl:otherwise>... extrageri... </xsl:otherwise> </xsl:choose>