400 likes | 510 Views
C01. Intro DS. Intro XML. Sintaxa XML. Date Semistructurate, 2012-2013. C 0 1. DS. Date semistructurate XML Istoric XML. Marcarea documentelor De ce XML ? Avantaje / Dezavantaje XML Sintaxa XML. C01 - DS. Modele de date: Ierarhic Retea Relational Logic
E N D
C01. Intro DS. Intro XML. Sintaxa XML Date Semistructurate, 2012-2013
C01. DS • Date semistructurate • XML • Istoric XML. Marcarea documentelor • De ce XML? • Avantaje / Dezavantaje XML • Sintaxa XML
C01 - DS • Modele de date: • Ierarhic • Retea • Relational • Logic • Obiectual: pur obiectual si object-relational • Semistructurat
C01 - DS • Motive pentru care datele ar fi semistructurate: • nu se cunoaste structura sau se poate modifica in viitor • integrarea datelor din surse eterogene – intr-un asemenea caz, un model de date structurat este prea rigid, cel putin intr-o prima faza; exemplu: bibliografie, carte, organigrama • date „sparse” – pe modelul relational am avea multe date NULL • ordinea este importanta • nu se poate interoga o baza de date structurata fara a cunoaste schema (de fapt se poate, insa e putin mai greu ), insa uneori apare nevoia de a interoga datele fara a cunoaste schema
C01 - DS Date semistructurate (DS) • Caracteristici: • nu au o schema fixa (precum cea relationala) • schema datelor inclusa in date • datele sunt perechi (eticheta: valoare) • reprezentare ca graf etichetat Exemplu: {name: {first: „John", last: „Smith"}, tel: 413476, email: "js76@hotmail.com" }
Exemplu DS {person: {name: {first: "John", last: „Smith"}, tel: 413476, tel: 0740334488, email: "js76@hotmail.com"}, person: {name: „Mell Gibb", tel: 405406, email: „mg91@hotmail.com"}, person: {name: „Julia", tel: 113178, height: 168} }
Tabele relationale ->DS Tabele: r1(a,b,c), r2(c,d) DS: {r1: {row: {a: a1, b:b1, c:c1}, row: {a: a2, b:b2, c:c2} }, r2: {row: {c: c2, d:d2}, row: {c: c3, d:d3}, row: {c: c4, d:d4} } }
Object database->DS {person: &o1{name: "Mary", age: 45, child: &o2, child: &o3}, person : &o2{name: "John", age: 17, relatives: {mother: &o1, sister: &o3} }, person : &o3{name: “Julia“, country: “Canada“, mother: &o1} }
Definitie DS <ds-expresion>:: = <value> | OID < value > | OID <value> :: = simple value |<complex value > < complex value > :: = { label: < ds-expresion >, ... , label: < ds-expresion >}
C01 - DS SGML • SGML (Standard Generalized Markup Language): tehnologie pentru definirea de limbaje de marcare generalizate pentru documente • marcarea descrie structura documentului, nu modul de afisare; • marcarea este conforma unui model, precum schema unei BD. • SGML nu ofera o structura standard – exista o serie de tipuri de documente atat de diferite (carti, articole, dictionare, orare s.a.) => nu se poate stabili un tipar pentru toate => nu impune un set de marcaje / tag-uri, ci propune un limbaj pentru descrierea structurii documentelor si marcarea corespunzatoare a acestora (reguli!!!). • Observatie: SGML a fost initial proiectat pentru a permite „sharing” de mari documente care sa fie citibile de sisteme de calcul, in domenii precum guvernare, industrie, armata s.a. • Structura documentului este, in general, definita folosind alte limbaje (ex: DTD = Document Type Definition) – care identifica elementele care pot sa apara in document. • Obs: HTML este o aplicatie SGML. • Obs: HTML include tag-uri de formatare a.i. este partial un limbaj de marcare procedurala (de exemplu <B>); pe de alta parte – permite adaugarea de stylesheets si folosirea atributului class => HTML este partial si un limbaj de codificare generica.
C01 - DS Exemple marcare document • Exemplu: un mesaj (aplicatie SGML) <mesaj> <header> <from>George P. <to>Ana-Maria M. <subject>Acte noi </header> <body> <para>Am auzit ca trebuie sa completam noi formulare. Daca ai vreunul, te rog sa-mi trimiti si mie. <para>Cand ai timp, uita-te la http://www.adresa.org – am pus cateva poze din ultima excursie. </body> <signature>George </mesaj>
C01 - DS Exemple marcare document • Exemplu: un mesaj (HTML= aplicatie SGML) <html> <head> <title>Mesaj - Acte noi</title> </head> <body> <h2>Acte noi</h2> <br/> <i>From:</i>George P. <br/> <i>To:</i>Ana-Maria M. <p>Am auzit ca trebuie sa completam noi formulare. Daca ai vreunul, te rog sa-mi trimiti si mie.<p> <p>Cand ai timp, uita-te la <a href=“http://www.adresa.org”>http://www.adresa.org</a> – am pus cateva poze din ultima excursie.</p> <u>George</u> </body> </html>
C01 - DS Exemple marcare document • Exemplu: un mesaj (HTML + stil) <html> <head> <title>Mesaj - Acte noi</title> <style> .from {font-style: italic;} </style> </head> <body> <h2>Acte noi</h2> <br/> <span class=“from”>From:</span>George P. <br/> <i>To:</i>Ana-Maria M. <p>(...)<p> <p>(...)</p> <u>George</u> </body> </html>
C01 - DS Exemple marcare document • Exemplu: un mesaj (XML) <?xml version=”1.0”?> <!DOCTYPE memo SYSTEM “mesaj.dtd”> <message> <header> <from>George P.</from> <to>Ana-Maria M.</to> <subject>Acte noi</subject> </header> <body> <para>Am auzit ca trebuie sa completam noi formulare. Daca ai vreunul, te rog sa-mi trimiti si mie.</para> <para>Cand ai timp, uita-te la <url>http://www.adresa.org</url> – am pus cateva poze din ultima excursie.</para> <signature>George</signature> </body> </message>
C01 - DS XML • In dezvoltarea XML au avut rol doua influente • pe de o parte, fiecare vroia mai multe tag-uri (matematicianul vroia tag-uri pentru scrierea de formule, chimistul – de asemenea etc.); • pe de alta parte, trebuia limitat numarul de tag-uri pentru ca paginile sa fie mai urow de incarcat (sau – posibil – anumite browser-e nu ar cunoaste intreg setul de tag-uri). • => pentru a rezolva problema „un limbaj cu mai multe tag-uri si mai putine tag-uri” => XML: • sa nu existe tag-uri predefinite (dar permite unui autor sa defineasca oricate tag-uri) • sa fie mai strict (decat HTML, …).
C01 - DS XML • XML este un standard pentru “marcarea” documentelor, sustinut de W3C; • este o specificare / tehnologie pentru crearea de limbaje de marcare particularizate; • este o tehnologie orientata in principal pentru gestiunea, afisarea si organizarea datelor. • defineste o sintaxa generica folosita in marcarea datelor cu tag-uri simple, citibile de o persoana; • furnizeaza un format standard pentru documente electronice – format destul de flexibil pentru a fi customizat pentru diferite domenii precum site-uri Web, schimb electronic de date, genealogie, imobiliare, serializare de obiecte, RPC-uri, sisteme de voice-mail, alte domenii stiintifice (matematica, chimie, etc.) s.a.
C01 - DS XML • XML este un limbaj de meta-marcare (metamarkup language) pentru documente text. • Datele sunt incluse in document ca siruri de caractere (se pot include obiecte de tip imagine, audio, etc.). • Unitatea XML de baza de data si marcare este elementul. • Specificatia XML defineste sintaxa care trebuie sa fie respectata in marcare: • cum sunt delimitate elementele de tag-uri, • cum arata un tag, • ce nume sunt acceptabile pentru elemente, • unde sunt mentionate atributele, • s.a. .
C01 - DS XML • XML este un limbaj de meta-marcare – nu are un set fix de tag-uri. XML permite definirea de elemente in functie de aplicatie. X =Extensible – limbajul poate fi extins si adaptat pentru a indeplini diferite cerinte. • XML este relativ strict – se poate defini o gramatica prin care sa se spuna locul in care poate sa apara un anumit tag, care nume de elemente sunt acceptate, cum sunt atasate atributele elementelor s.a. • Marcajul permis intr-o aplicatie XML poate fi documentat intr-o schema. Un anumit document poate fi comparat cu schema si, daca se potriveste, se spune ca este valid (altfel – invalid). Exemplu: DTD (Document Type Definition) de la XML 1.0; W3C XML Schema Language. • Din motive de interoperabilitate, grupuri de persoane sau organizatii pot sa se inteleaga sa foloseasca anumite tag-uri. Aceste multimi de tag-uri sunt numite aplicatii XML(o aplicare a XML intr-un anumit domeniu).
C01 - DS XML • Marcarea dintr-un document XML descrie structura (ierarhica a) documentului. Permite sa se vada care elemente sunt asociate cu alte elemente. In unele documente XML, marcarea descrie de asemenea si semantica documentului. • Marcarea nu ar trebui sa indice si cum sa fie afisat documentul (stil). XML este un limbaj de marcare structural si semantic, nu un limbaj de prezentare. • XML ofera posibilitatea de manipulare de date pe platforme diferite, pe termen lung. • Un document XML este simplu de citit, ca structura si ca tip de document (text). Nu sunt probleme de aliniere, de trecere pe un rand nou, de delimitare, de formatul unui numar care se gaseste (ca text) in document. XML – date portabile. • XML este simplu.
C01 - DS XML • Ce nu este XML • XML nu este limbaj de programare – nu sunt compilatoare XML care sa citeasca documente XML si sa produca cod executabil. Un document XML pur si simplu exista – nu face nimic. • XML nu este un protocol de transmitere a datelor in retea. Datele transmise prin HTTP, FTP s.a. pot respecta formatul XML, insa trebuie sa existe un soft aditional care sa transmita efectiv datele. • Un document XML nu este o baza de date. In schimb, o BD poate sa contina date in format XML (ca VARCHAR, BLOB sau un tip specializat XML) sau exista BD XML.
C01 - DS XML • Parsarea documentelor XML • Pentru ca un document XML sa fie citit, trebuie sa respecte regulile XML => exista parser-e care citesc un document XML si extrag informatia dorita (aceasta nu inseamna ca intelege semantica datelor ) => sunt capabile sa parcurga intreaga structura a unui document XML. • => un document XML poate fi citit de orice parser XML (nu conteaza aplicatia careia ii este destinat documentul, aplicatia care l-a creat sau platforma pe care a fost creat). In plus, daca se mai adauga un element, aplicatia care lucra pana in prezent cu acest document nu trebuie modificata (decat daca se doreste si citirea noului element). Daca, in schimb, se modifica numele elementelor, atunci si aplicatia trebuie modificata corespunzator.
C01 - DS XML • Validitatea documentelor XML: • Well-formed: un document XML respecta regulile XML. • Type-valid: pentru fiecare document exista un DTD sau o schema (o gramatica!!!) a carei reguli (structura) sunt respectate. • Observatie: in general se doreste ca documentele sa fie doar well-formed; insa, mai ales in situatiile in care un document XML este folosit pentru transfer de date intre organizatii, el trebuie sa respecte o structura pre-definita.
C01 - DS XML • Ce avem intr-un document XML: • Elemente: fiecare element este delimitat de 2 tag-uri (inceput si sfarsit); continutul unui element; exista elemente goale. • Arbori XML: • Element radacina • Imbricarea elementelor • Atribute • Declaratia XML <?xml version="1.0" encoding="ASCII" standalone="yes"?> <persoana nrcopii="2"> Victor Popa </persoana>
C01 - DS Sintaxa XML • Exemplu: structura arborescenta <e1> <e11> info_e11 </e11> <e12> <e121> info_e121 </e121> <e122> info_e122 </e122> </e12> (...) <e1n> info_e1n </e1n> </e1>
C01 - DS Validarea / doc XML well-formed • fiecare tag de inceput trebuie sa aiba un tag de sfarsit corespunzator • elementele trebuie sa fie imbricate, sa nu se suprapuna • trebuie sa fie exact un element radacina • valorile atributelor trebuie incluse intre ghilimele sau apostroafe • un element nu poate avea doua atribute cu acelasi nume • comentariile si instructiunile de procesare nu pot sa apara in interiorul tag-urilor • caracterele „<” si „&” nu pot sa apara in interiorul datelor caracter ale unui element sau atribut.
C01 - DS Validarea / doc XML well-formed • Alte observatii: • XML este case-sensitive • Documente data-oriented si documente narative • Elemente vs. atribute • Numele XML • Contin caractere alfanumerice, litere non-english (ideograme, caractere caracteristice unei limbi), „_”, „-”, „.”. • Nu pot sa contina alte semne de punctuatie in afara de acestea trei sau „whitespace”. • Denumirile care incep cu XML (indiferent de majuscula / minuscula) sunt rezervate pentru viitoare dezvoltari W3C. • Un nume XML poate sa inceapa cu litere, ideograme sau „_”. • Exemple: corect: nume, nume_persoana, nume-persoana, nume.persoana, şcoala, _nume; incorect: -nume, .nume
C01 - DS XML • Internationalizare • Pentru a include caractere speciale, din diferite limbi, trebuie stabilit setul de caractere din care face parte – dupa care in document se include codificarea caracterului dorit. • Exemplu – setul Latin-2 (europa de est): • <?xml version="1.0" encoding="ISO-8859-2"?> • Chiar daca nu se stabileste un set de caractere pentru un document XML, se poate recunoaste unul implicit (din primele 5 caractere din declaratia de document). • Referinte de caractere • Exemplu: њ • Referinte de entitati • O referinta de entitate se foloseste atunci cand in continutul text al unui element trebuie folosit un caracter rezervat pentru sintaxa XML. De exemplu „<” = „<”; „&” = „&”; „>”=„>”; „””=”"”; „’”=”'”. • " si ' se folosesc in valorile atributelor. • Alte referinte se pot defini in DTD.
C01 - DS XML • Sectiuni CDATA • Daca, de exemplu, se doreste includerea de cod XML sau HTML intr-un document XML (ca si continut text), trebuie inlocuite toate caracterele „<” si „&” cu referintele respective. Pentru a evita aceasta, s-a introdus sectiunea CDATA: • <![CDATA[text]]> • Acest text nu este interpretat de parser. • Parser-ul XML nu spune daca un anumit text a rezultat dintr-o sectiune CDATA sau din simplul continut al unui element. • Comentarii • <!--Comentariu --> • Secventa „--” nu are voie sa apara in interiorul comentariului. Comentariile pot fi incluse in datele caracter ale documentului, sau inainte sau dupa elementul radacina; nu pot sa apara intr-un tag sau intr-un alt comentariu.
C01 - DS XML • Avantaje • Poate reprezenta structuri de date cunoscute: inregistrari (record), liste, arbori • Structura ierarhica este urow de folosit pentru multe tipuri de documente • Format “self-documenting”: descrie structura + semnificatia data de numele elementelor • Suport pentru diferite seturi de caractere • Permite validare (standardizare) • Independent de platforma • Durabil in timp (ca si compatibilitate cu tehnologii) • Urow de folosit • Exista deja o multime de tehnologii orientate XML • Flexibilitate – avantaj • Publicare de date, schimb de date, mediere de date • Etc.
C01 - DS XML • Dezavantaje • Ofera un model de date ne-normalizat; permite date redundante – mai ales cand e scris … fara o analiza adecvata • Dificil de decis ce sa fie continut si ce sa fie atribut • Ofera mai putin decat graf OO • Flexibilitate – dezavantaj (uneori) • Oarecum – lipsa de suport in browser-e sau alte aplicatii end-user • Mai strict decat HTML • Etc.
C01 - DS Sintaxa XML • Exemplu: document XML narativ <eseu> <name><first_name>Alan</first_name><last_name>Turing</last_name></name>was one of the first people to truly deserve the name <emphasize>computer scientist</emphasize>. Although his contributions to the field are too numerous to list, his best-known are the eponymous <emphasize>Turing Test</emphasize> and <emphasize>Turing Machine</emphasize>. <definition>The <term>Turing Test</term> is to this day the standard test for determining whether a computer is truly intelligent. This test has yet to be passed. </definition> <definition>The <term>Turing Machine</term> is an abstract finite state automaton with infinite memory that can be proven equivalent to any any other finite state automaton with arbitrarily large memory. (...) </definition> <name><last_name>Turing</last_name></name> was also an accomplished <profession>mathematician</profession> and <profession>cryptographer</profession>. His assistance was crucial in helping the Allies decode the German Enigma machine. He committed suicide on <date><month>June</month> <day>7</day>, <year>1954</year></date> after being convicted of homosexuality and forced to take female hormone injections. </eseu>
C01 - DS Sintaxa XML • Exemplu: document XML narativ (elemente+atribute) <eseu> <nameborn='1912-06-23' died='1954-06-07'><first_name>Alan</first_name><last_name>Turing</last_name></name>was one of the first people to truly deserve the name <emphasize>computer scientist</emphasize>. Although his contributions to the field are too numerous to list, his best-known are the eponymous <emphasize>Turing Test</emphasize> and <emphasize>Turing Machine</emphasize>. <last_name>Turing</last_name> was also an accomplished <profession>mathematician</profession> and <profession>cryptographer</profession>. His assistance was crucial in helping the Allies decode the German Enigma machine. <footnotesource="The Ultra Secret, F.W. Winterbotham, 1974">1</footnote> He committed suicide on <date><month>June</month> <day>7</day>, <year>1954</year></date> after being convicted of homosexuality and forced to take female hormone injections.<footnote source="Alan Turing: the Enigma, Andrew Hodges, 1983">2</footnote> </eseu>
C01 - DS Sintaxa XML • Exemplu: XML si Web Services • UDDI = Universal Description, Discovery, and Integration • WSDL = Web Services Description Language • SOAP = Simple Object Access Protocol
C01 - DS Exemple aplicatii XML • Exemplu: Mathematical Markup Language(MathML) <math xmlns="http://www.w3.org/1998/Math/MathML"> <mi>x</mi> <mo>=</mo> <mfrac> <mrow> <mrow> <mo>-</mo> <mi>b</mi> </mrow> <mo>±</mo> <msqrt> <msup> <mi>b</mi> <mn>2</mn> </msup> <mo>-</mo> <mrow> <mn>4</mn> <mo>⁢</mo> <mi>a</mi> <mo>⁢</mo> <mi>c</mi> </mrow> </msqrt> </mrow> <mrow> <mn>2</mn> <mo>⁢</mo> <mi>a</mi> </mrow> </mfrac> </math>
C01 - DS Exemple aplicatii XML • Exemplu: Scalable Vector Graphics (SVG) <?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="467" height="462"> <!-- This is the red square: --> <rect x="80" y="60" width="250" height="250" rx="20" fill="red" stroke="black" stroke-width="2px" /> <!-- This is the blue square: --> <rect x="140" y="120" width="250" height="250" rx="40" fill="blue" stroke="black" stroke-width="2px" fill-opacity="0.7" /> </svg>
C01 - DS Exemple aplicatii XML • Exemplu: MusicXML <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 2.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd"> <score-partwise version="2.0"> <part-list> <score-part id="P1"> <part-name>Music</part-name> </score-part> </part-list> <part id="P1"> <measure number="1"> <attributes> <divisions>1</divisions> <key> <fifths>0</fifths> </key> <time> <beats>4</beats> <beat-type>4</beat-type> </time> <clef> <sign>G</sign> <line>2</line> </clef> </attributes> <note> <pitch> <step>C</step> <octave>4</octave> </pitch> <duration>4</duration> <type>whole</type> </note> </measure> </part> </score-partwise>
C01 - DS Exemple aplicatii XML • Exemplu: DocBook <?xml version="1.0" encoding="UTF-8"?> <book xml:id="simple_book" xmlns="http://docbook.org/ns/docbook" version="5.0"> <title>Very simple book</title> <chapter xml:id="chapter_1"> <title>Chapter 1</title> <para>Hello world!</para> <para>I hope that your day is proceeding <emphasis>splendidly</emphasis>!</para> </chapter> <chapter xml:id="chapter_2"> <title>Chapter 2</title> <para>Hello again, world!</para> </chapter> </book>
C01 - DS • Next C02 • DTD