C01. Intro DS. Intro XML. Sintaxa XML

40
C01. Intro DS. Intro XML. Sintaxa XML Date Semistructurate, 2012-2013

description

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 - PowerPoint PPT Presentation

Transcript of C01. Intro DS. Intro XML. Sintaxa XML

Page 1: C01. Intro DS. Intro XML. Sintaxa XML

C01. Intro DS. Intro XML. Sintaxa XML

Date Semistructurate, 2012-2013

Page 2: C01. Intro DS. Intro XML. Sintaxa XML

C01. DS

• Date semistructurate• XML

– Istoric XML. Marcarea documentelor– De ce XML?– Avantaje / Dezavantaje XML– Sintaxa XML

Page 3: C01. Intro DS. Intro XML. Sintaxa XML

• Modele de date:– Ierarhic– Retea– Relational– Logic– Obiectual: pur obiectual si object-relational– Semistructurat

C01 - DS

Page 4: C01. Intro DS. Intro XML. Sintaxa XML

• 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

Page 5: C01. Intro DS. Intro XML. Sintaxa XML

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: "[email protected]" }

C01 - DS

Page 6: C01. Intro DS. Intro XML. Sintaxa XML

Exemplu DS

{person:

{name: {first: "John", last: „Smith"},

tel: 413476, tel: 0740334488,

email: "[email protected]"},

person:

{name: „Mell Gibb", tel: 405406,

email: „[email protected]"},

person:

{name: „Julia", tel: 113178, height: 168}

}

Page 7: C01. Intro DS. Intro XML. Sintaxa XML

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} } }

Page 8: C01. Intro DS. Intro XML. Sintaxa XML

Tabele relationale ->DS

Page 9: C01. Intro DS. Intro XML. Sintaxa XML

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}

}

Page 10: C01. Intro DS. Intro XML. Sintaxa XML

Object database ->DS

Page 11: C01. Intro DS. Intro XML. Sintaxa XML

Definitie DS

<ds-expresion>:: = <value> | OID < value > | OID

<value> :: = simple value | <complex value >

< complex value > :: = { label : < ds-expresion >, ... , label: < ds-expresion >}

Page 12: C01. Intro DS. Intro XML. Sintaxa XML

• 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 - DSSGML

Page 13: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 14: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 15: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 16: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 17: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 18: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 19: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 20: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 21: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 22: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 23: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 24: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 25: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 26: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 27: C01. Intro DS. Intro XML. Sintaxa XML

Validarea / doc XML well-formed

1. fiecare tag de inceput trebuie sa aiba un tag de sfarsit corespunzator

2. elementele trebuie sa fie imbricate, sa nu se suprapuna

3. trebuie sa fie exact un element radacina

4. valorile atributelor trebuie incluse intre ghilimele sau apostroafe

5. un element nu poate avea doua atribute cu acelasi nume

6. comentariile si instructiunile de procesare nu pot sa apara in interiorul tag-urilor

7. caracterele „<” si „&” nu pot sa apara in interiorul datelor caracter ale unui element sau atribut.

C01 - DS

Page 28: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 29: C01. Intro DS. Intro XML. Sintaxa XML

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: &#1114;

– 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 „<” = „&lt;”; „&” = „&amp;”; „>” = „&gt;”; „”” = ”&quot;”; „’” = ”&apos;”.

• &quot; si &apos; se folosesc in valorile atributelor.• Alte referinte se pot defini in DTD.

C01 - DS

Page 30: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 31: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 32: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 33: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 34: C01. Intro DS. Intro XML. Sintaxa XML

Sintaxa XML

• Exemplu: document XML narativ (elemente+atribute)

<eseu> <name born='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. <footnote source="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

Page 35: C01. Intro DS. Intro XML. Sintaxa XML

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

Page 36: C01. Intro DS. Intro XML. Sintaxa XML

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>&PlusMinus;</mo> <msqrt> <msup> <mi>b</mi> <mn>2</mn> </msup> <mo>-</mo> <mrow> <mn>4</mn> <mo>&InvisibleTimes;</mo> <mi>a</mi> <mo>&InvisibleTimes;</mo> <mi>c</mi> </mrow> </msqrt> </mrow> <mrow> <mn>2</mn> <mo>&InvisibleTimes;</mo> <mi>a</mi> </mrow> </mfrac></math>

C01 - DS

Page 37: C01. Intro DS. Intro XML. Sintaxa 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

Page 38: C01. Intro DS. Intro XML. Sintaxa 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 - DSExemple aplicatii XML

Page 39: C01. Intro DS. Intro XML. Sintaxa 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 - DSExemple aplicatii XML

Page 40: C01. Intro DS. Intro XML. Sintaxa XML

• Next C02– DTD

C01 - DS