270 likes | 396 Views
INTRODUCERE ÎN TEORIA BAZELOR DE DATE X ML (e X tensible M arkup L anguage). LOREDANA MOCEAN Universitatea Babeş-Bolyai din Cluj-Napoca Facultatea de Ştiinţe Economice Catedra de Informatică Economică mloredana@econ.ubbcluj.ro. * Anii 60-70 : - arhitecturi tranzacţionale
E N D
INTRODUCERE ÎNTEORIA BAZELOR DE DATE XML (eXtensible Markup Language) LOREDANA MOCEAN Universitatea Babeş-Bolyai din Cluj-Napoca Facultatea de Ştiinţe Economice Catedra de Informatică Economică mloredana@econ.ubbcluj.ro
* Anii 60-70: - arhitecturi tranzacţionale - modele de reprezentare ierarhice * Anii 80: - apariţia reţelelor, - arhitecturi client-server, - modele de reprezentare relaţionale; - interpretarea datelor la nivel de server cu ajutorul SQL - interfeţe de programare a aplicaţiilor - punţi de asigurare a conectivităţii ODBC, JDBC - conceptual se apelează la modelul entitate – relaţie (ER) dar schema este una rigidă; se permite astfel stocarea unui volum de date uniforme ! Probleme la indexare, normalizare, integritate referenţială * Anii 2000 - prezent: - arhitecturi navigaţionale, hipertext şi sisteme mobile - Daum şi Merten (2003): modelele de date cele mai potrivite sunt cele recurgând la gramatici regulare - trebuie impuse cerinţe suplimentare pentru un model ideal, aliniat la Web - datele sunt eterogene, pot proveni din diferite surse, multe informaţii evoluează în timp - datele dorite a fi modelate sunt nelimitate şi necunoscute → date semistructurate: - nu necesită definiţia unei scheme de date, - au o structură intrinsecă dar nu complet nestructurată
1. DefiniţieXML: limbaj de marcare, permite structurarea informaţiei de diferite tipuri, folosind un set liber de instrucţiuni Describing information ! Displaying information ! Tehnologie complementară pt. HTML! ! !
2. Cum pot fi folosite datele XML? • XML stochează datele în fişiere .xml • Se poate folosi HTML pentru formatare şi afişare • Datele XML pot fi stocate în interiorul fişierelor HTML ca şi “Data Islands” • Datele XML pot fi convertite între diverse aplicaţii şi sisteme de operare, chiar cu formate incompatibile • XML va fi în viitorul apropiat principalul limbaj de conversie între informaţiile financiare şi aplicaţiile B2B • Datele XML, fiind independente de hard, soft şi aplicaţii, pot fi vizualizate de diferite tipuri de browsere; pot fi citite ca şi surse de date în multe limbaje de programare; • XML este folosit pentru a crea noi limbaje de programare (ex. WML – Wireless Markup Language)
3. Sintaxa XML Ex: <?xml version="1.0" encoding=“UTF-8"?> <notă> <către>Dan</către> <dela>Cristina</dela> <antet>Reminder</antet> <body>Să nu uităm să facem proiectul mâine!</body> </notă> Categorii de constituenţi: * Declaraţia * Elementele * Atributele * Entităţile * Secţiunile de marcare * Instrucţiunile de procesare
Observaţii: • Trei tipuri de taguri: început, sfârşit şi vid; obligatorie existenţa tagurilor de închidere, cu excepţia primului rând; • La începutul documentului apare declaraţia xml care indică limbajul de marcare, versiunea lui şi informaţii suplimentare • Case – sensitive • Structurile de date trebuie să fie imbricate • Toate datele XML trebuie să aibă rădăcină unică • Atributele sunt incluse între ghilimele • Toată informaţia ce este conţinută între tagul de început şi sfârşit reprezintă zonă de date, deci se iau în considerare toate simbolurile de formatare (spaţii, enter etc.) • Comentariile la fel ca şi în HTML Ex: <!-- acesta este un comentariu>
4. Elemente XML a. Elementele XML sunt extensibile Ex:<data>01/03/2006 </data> b. Există relaţii între date; se definesc structuri arborescente Ex: <carte> <titlu>Primul meu XML</titlu> <prod ID=“12345” media=“hartie></prod> <capitol>Introducere in XML <para>Ce este HTML</para> <para>Ce este XML</para> </capitol> <capitol>Sintaxa XML <para>Elementele trebuie să aibă tag de închidere</para> <para>Elementele trebuie să fie imbricate</para> </capitol> </carte> • Primul meu XML • Introducere • Ce este HTML • Ce este XML • Sintaxa XML • Elementele trebuie să aibă tag de închidere • Elementele trebuie să fie imbricate
c. Elementele au conţinut şi atribute. Conţinutul poate fi de tip element, mixt, simplu şi vid. Ex: element <carte> , conţine alte elemente mixt <capitol> , conţine text şi alte elemente simplu <para> conţine doar text vid <prod>, nu conţine informaţii d. Numele elementelor XML: • Pot conţine litere, cifre şi caractere speciale • Nu poate începe cu cifră sau semne de punctuaţie • Nu poate începe cu cuvântul “XML” • Nu poate conţine spaţii
5. Atributele XML • Elementele XML pot avea atribute în tagul de început (preluare din html). • Atributele sunt folosite pentru a da informaţii suplimentare despre apariţiile particulare ale unui element Ex: <file type=“gif”>computer.gif</file> • Datele pot fi stocate fie în elemente arborescente fie în atribute Ex: <Pers Sex=“feminin”> <nume>Muresan</nume> <prenume>Anna</prenume> </Pers> <Pers> <Sex>feminin</Sex> <nume>Muresan</nume> <prenume>Anna</prenume> </Pers>
Dezavantaje ale utilizării atributelor: - Nu pot conţine mai multe valori - Nu sunt uşor de extins cu elemente arborescente - Nu pot descrie structuri - Codul le manipulează cu greu Ex: <mesaje> <nota id=“m1”> <către>Dan</către> <dela>Cristina</dela> <antet>Reminder</antet> <body>Să nu uităm să facem proiectul mâine! </body> <nota id=“m2”> <către>Calin</către> <dela>Mihaela</dela> <antet>TotReminder</antet> <body>Eu nu pot sa vin! </body> </nota> </mesaje>
Constituie pointeri către entităţi Entităţile pot fi unităţi de text, caractere, documente sau referinţe la alte documente Se folosesc atunci când se doreşte folosirea unor caractere care ar conduce la erori de procesare şi care nu ar trebui să apară în forma lor normală în text Construcţia &nume-entitate; Entităţile predefinte: 6. Referinţele la entităţi
7. Secţiunile de marcare • Se utilizează atunci când anumite părţi ale documentului necesită un tratament special în ce priveşte modul de procesare • Secţiunea CDATA are rolul de inhibare a prelucrării construcţiilor XML; este utilizată pentru a include blocuri de text conţinând caractere care altfel ar fi recunoscute ca marcaje • Secţiunile CDATA nu pot apare imbricate • Sintaxa <![CDATA[…]]> Ex1: inetpref.xml <Label TopMargin=“8” Group=“1”> <Text><![CDATA[&Select the default search engine:]]></Text> </Label> Ex2: <script type=“text/javascript”> /*<![CDATA[*/ If (vizite>10) { // vizitator fidel Document.write(“<p>Hello again! </p>”); } /*]]>*/ </script>
8. Instrucţiunile de procesare • Reprezintă un tip special de marcaj care conţine informaţii privitoare la anumite aplicaţii ce urmează a fi executate pentru procesarea conţinutului • Sintaxa <?nume_aplicatie ?> Ex1: <script> <?php echo “<p>Salut !\n</p>;?> </script> Ex2: <?xml:stylesheet type=“text/css” href=“stil.css” ?>
9. Tabele de stil XSL • Tabelele de stil (foi de stil): instrucţiuni speciale ce dirijează procesul de prezentare a elementelor în fereastra programului client (browserului); • Se foloseşte ca limbaj de formatare XSL (eXtensible Stylesheet Language); • Există posibilitatea de a folosi diferite stiluri de formatare pentru aceleaşi elemente depinzând de contextul utilizării lor; • Regulile de aranjare se evidenţiază prin tagurile <rule> şi </rule> • Elementele XML cărora li se atribuie formatarea se evidenţiază prin descriptorul </target-element> • Pentru a da o denumire concretă elementului se foloseşte atributul type=“nume_element” Ex: <xsl> <rule> <target-element type=“carte”> <p color=“green” font-size=“12”> </children> </p> </rule> </xsl> Este repetat procesul analizei pentru elementele fii
<element type="article"><target-element type="author"/></element><td align="center"><p color="red" font-size="14"font-style="italic"><children/></p></td></rule><rule><target-element type="book"/><tr><children/></tr></rule><rule><target-element type="article"/><tr><children/></tr></rule><rule><target-element/><td align="center"><p><children/></p></td></rule><rule><target-element type="books"/><tr><td colspan="3" bgcolor="silver">Books</td></tr><children/></rule><rule><target-element type="articles"/><tr><td colspan="3" bgcolor="silver">Articles</td></tr><children/></rule></xsl> <?XML Version="1.0"?> <documents> <books><book id="Book1"><title> Amintiri din copilarie </title><author>Ion Creangă </author><date>10.10.01</date></book><book id="Book2"><title> Poezii </title><author> Mihai Eminescu </author><date>10.10.02</date></book> </books> <articles><article id="Article1"><author> Dan Sirbu </author><title> Influenţa majorării tarifelor… </title><date>12.01.03</date></article> </articles></documents> <xsl><rule><root/> <HTML> <BODY bgcolor="white"><center><hr width="80%"/><b>Library</b><hr width="80%"/><br/> <table width="80%" border="2"><children/> </table></center></BODY></HTML> </rule><rule><element type="book"><target-element type="author"/></element><td align="center"><p color="red" font-size="14"> <b> <children/> </b></p></td></rule><rule> XML XSL
Regula elementului rădăcină: analiza oricărui document XML începe de la elementul rădăcină, tagurile de formatare vor fi plasate aici Ex: <xsl><rule><root/><html><head><title> Bibliotecă </title></head><body bgcolor="white" link="blue" alink="darkblue" vlink="darkblue"><children/></body></html></rule> </xsl>
Relaţiile între elemente: Elementele – fii se găsesc în interiorul zonei definite prin tagurile elementului – părinte. Pentru a arăta corect locul elementului în documentul XML, în XSL se utilizează tagul <element>;. Cu ajutorul lui se poate arăta care elemente sunt predecesoare lui, şi care trebuie să-l succeadă. Ex: formatarea elementului <titlu> depinde de locul lui în documentul XML: <xsl> <rule><element type="revista"><target-element type="titlu"/></element><center><hr width=80%><children/><hr width=80%></center> </rule><rule><element type="articol"><target-element type="titlu"/></element><td align="center"><p color="blue" font-size="14" font-style="italic"><children/></td> </rule> </xsl>
Folosirea atributelor elementelor: Parametrii indicaţi în <attribute> name şi value definesc atributul XML, care trebuie să aibă elementul curent destinat prelucrării. Ex: În fragmentul următor toate elementele cu atributul free_lance=”true” vor fi evidenţiate în documentul HTML final cu o culoare gri. </xsl> <rule><target-element type="author"><attribute name="free_lance" value="true"></target-element><p color="gray"><children/></p> </rule> </xsl>
Filtrarea elementelor: XSL are posibilitatea de a sorta şi de a alege elementele evidenţiate, din graful general de elemente din document. <select-elements>; - înlocuieşte în reguli elementul <children/>, definind acele elemente, care trebuiesc prelucrate în cadrul parcurgerii recursive. Ex: În fragmentul următor vor fi prelucrate numai elementele <author>: <xsl> <rule><target–element type=" staff"/><div><select–elements><target–element type = "author"/></select–elements></div> </rule> </xsl>
Calculul expresiilor: Ex: calculul valorilor parametrilor elementelor descrise. Se trece semnul = ca primul simbol al parametrului, ce va impune procesorul XSL să calculeze valoare expresiei (sintaxa expresiei trebuie să corespundă cerinţelor JavaScript). Ex: <xsl> <rule><target–element type="header"><hr width="=100-20+'%'"><children/><hr width="80%"> </rule> </xsl> În documentul final vor apărea următoarele instrucţiuni: <hr width=80%>... <hr width=80%>
Executarea instrucţiunilor: O altă metodă de plasare a informaţiei în documentul HTML final, (rezultatul executării unor operaţii şi a scenariilor JavaScript), este folosirea instrucţiunilor <eval> Ex: <xsl> <rule><element type="articles"><target–element type="article"></element><tr><td><eval>childNumber(this)</eval></td><td><children/></td><tr> </rule> </xsl> Obs. Întoarce numărul curent a elementului-fiu.
Definirea funcţiilor şi a variabilelor globale: Analog tagului <SCRIPT> în HTML, elementul <define-script> conţine funcţiile şi definiţiile variabilelor globale. Este plasat la început. Ex: <xsl> <define-script><![CDATA[var fontSize=12; function getColor(elem) {return elem.children.item("color",0).text; <color> }]]>// Returnează conţinutul elementului-fiu </define-script> <rule><target-element type = "leguma"><div background-color="=getColor(this)"; font-size="=fontSize"><children/></div> </rule> </xsl> Dacă se aplică aceste reguli la următorul document XML: <xml><leguma> varză <color> green </color> </leguma> </xml> La ieşire documentul HTML va conţine elementele următoare: <div background-color="green"; font-size="12">
10. Definirea tipului documentului DTD • DTD: defineşte setul elementelor variabile, identifică elementele care pot fi găsite în alte elemente şi defineşte atributele adevărate pentru fiecare dintre ele; • Nu este obligatorie folosirea DTD; • Se folosesc următoarele tipuri de reguli: - pentru elementele şi atributele lor, - descrierile categoriilor, - descrierea formatelor binare. • Folosirea DTD: • În fişier extern, prin referinţa la fişier DTD <?xml version="1.0" ?> <! DOCTYPE journal SYSTEM "jurnal.dtd"> • Evidenţierea unei zone în interiorul documentului în care se definesc regulile necesare <! DOCTYPE journal [ <!ELEMENT journal (contacts, issues, authors)> ... ]>
Definirea elementului: !ELEMENT, indică denumirea elementului, conţinutul şi structura lui; • Dacă există în interior şi alte elemente se foloseşte secţiunea CDATA; • Două instrucţiuni ce definesc tipul conţinutului: EMPTY (elementul trebuie să fie vid) şi ANY (elementul nu are o descriere specială); • Consecutivitatea fiilor pentru elementul curent se defineşte în formă de listă de denumiri a elementelor, separate prin virgulă. Pentru a indica numărul repetărilor de includere a acestor elemente se folosesc +, *, ? Ex: <!ELEMENT item (titlu, autor+, sumar?)>
! În cazul în care există mai multe variante ale conţinutului e necesar a se desparţi prin | Ex:<!ELEMENT leguma (PCDATA | denumire)*> ! Dacă în definirea elementului se indică un conţinut amestecat, trebuie indicată secţiunea CDATA şi elementele despărţite prin | Ex: <?xml version="1.0"?><! DOCTYPE journal [<!ELEMENT contacte (adresa, tel+, email?)><!ELEMENT adresa (strada, apt)><!ELEMENT strada PCDATA><!ELEMENT apt (PCDATA | EMPTY)*><!ELEMENT tel PCDATA><!ELEMENT email PCDATA>]>...<contacte><adresa><strada> Universităţii </strada><apt id="4"></adresa><tel>12-12-12</tel><tel>16-23-62</tel><email>info@j.com</email></contacte>
Concluzii • Puterea limbajului XML este reflectată de flexibilitatea în gestionarea documentelor de toate tipurile • Abordarea XML stabileşte un echilibru între performanţa, costul şi capacitatea de utilizare a strategiilor de codificare uşor lizibile • Familia XML este un punct de vedere unificator al unor tehnologii particulare: Internetul, procesarea computerizată a documentelor, stocarea şi procesarea tradiţională a datelor • Modelul bazat pe XML se pretează pentru stocarea datelor semistructurate • Direcţii importante de folosire a formatelor XML: • Comunicaţii şi interacţiune (person2person, person2comp, comp2comp) • Arhitecturi orientate pe servicii (aplicaţii EAI) • Conectare slabă (loose coupling) • Căutarea şi regăsirea cunoştinţelor (knowledge retrieval) • Managementul cunoştinţelor (knowledge management) • Modelarea proceselor (data flow, work flow)