Sunteți pe pagina 1din 7

7.

1Date semi-structurate: remediu pentru datele distribuite


A Contextul de interschimb date și clasificarea formatelor de date (structurate, semistructurate,
nedefinite);

7.2 Formate ad-hoc (avantaje dezavantaje)


7.3 Date semi-structurate:

a Motivația
Tema datelor semistructurate (numită și date nestructurate) este relativ recentă, iar un tutorial pe
această temă poate fi prematur. Reprezintă, dacă este ceva, convergența unui număr de linii de
gândire despre noi modalități de a reprezenta și interoga datele care nu se potrivesc complet cu
modelele convenționale de date. Scopul acestui tutorial este de a descrie această motivație și de a
sugera domenii în care cercetările ulterioare pot fi fructuoase.

b problema adresată, caracteristici


Problemă: datele aferente există în multe locuri. Ei vorbesc despre aceleași lucruri, dar diferă ca
model, schema, convenții (de exemplu, terminologie). Cum ar trebui să preluăm date din locuri
diferite?

Caracteristici:
Eterogenă
Structură neregulată
Schemă mare evolutivă

7.4. XML și JSON: diferențe și similitudine


Lizibilitatea codului
Peter-Paul Koch de la QuirksMode.org consideră că lizibilitatea codului este principalul criteriu
pentru analiza sa. După părerea mea, este doar un scop secundar, dar poți fi ușor de acord că
JSON este mult mai ușor de perceput „cu ochi” decât XML - trebuie doar să te uiți la
următoarele exemple.

Ușurința de a crea
Formatul XML este cunoscut de mulți ani (notă: prima versiune de lucru a fost anunțată în 1996,
iar specificația era deja în 2000), așa că există un anumit set de interfețe de programare (API)
pentru legarea datelor la XML în mai multe programare limbi. De exemplu, în Java, puteți utiliza
JAXB și XmlBeans pentru a genera un răspuns XML. Mai jos este un exemplu folosind JAXB.

Ușurință în utilizare
Pe partea clientului, gestionarea datelor JSON ca răspuns la un XMLHttpRequest este extrem de
ușoară. Folosind un eval( normal), puteți converti răspunsul într-un obiect JavaScript. Odată ce
această operație a fost efectuată, datele pot fi accesate folosind proprietățile obiectului convertit.
Aceasta este cea mai elegantă parte a tuturor JSON.

Extensibilitate
Extensibilitatea ajută la reducerea numărului de legături dintre furnizorul de date și consumator.
În contextul aplicațiilor AJAX, scriptul de pe partea client trebuie să fie suficient de invariant în
ceea ce privește modificările compatibile ale datelor.

Prin credința comună, XML este automat extensibil pur și simplu având litera „X”. Dar aceasta
nu este o regulă absolută (adică acționarea implicită). Extensibilitatea XML provine din
principiul că puteți defini noduri suplimentare în XML-ul dvs. și apoi aplicați regula „săriți nu
este necesar” (adică dacă întâlniți un element sau un atribut necunoscut în timpul procesării
XML, omiteți-l).

Depanare și remediere erori


Acest aspect se aplică atât pentru partea de server a aplicației dvs., cât și pentru partea client. Pe
server, trebuie să vă asigurați că datele sunt bine formate și corecte. Ar trebui să fie ușor din
partea clientului să depaneze erorile din răspuns.

În cazul XML, este relativ ușor să verifici dacă datele trimise clientului sunt bine formate și
corecte. Puteți utiliza schema pentru datele dvs. și o puteți utiliza pentru validarea datelor. Cu
JSON, această sarcină devine manuală și necesită verificarea faptului că obiectul are atributele
corecte ca rezultat al răspunsului.

Pe partea clientului, în ambele cazuri, este dificil să se detecteze erori. Pentru XML, browserul
pur și simplu nu îl va putea converti în responseXML. Pentru cantități mici de date JSON, puteți
utiliza extensia FireBug pentru a depana și a remedia erorile. Dar cu cantități mari de date,
devine oarecum dificil să corelezi mesajul de eroare cu un anumit loc din cod.

Siguranță
Dave Johnson în postarea sa JSON și Golden Fleece opinează că JSON poate cauza probleme de
securitate. Ideea notei este că, dacă permiteți inserarea apelurilor de funcție împreună cu date în
răspunsurile JSON și utilizați eval() pentru a procesa răspunsul, atunci executați cod arbitrar, de
fapt, care poate conține deja un risc de securitate.

Alegerea mea
În cazul aplicațiilor centrate pe date, prefer să folosesc JSON peste XML, datorită simplității și
ușurinței procesării datelor din partea clientului. XML poate fi indispensabil pe server, dar JSON
este cu siguranță mai ușor de lucrat pe client.

7.5 JSON. (generalități, reprezentări de date)


 este un acronim în limba engleză pentru JavaScript Object Notation, și este un format de
reprezentare și interschimb de date între aplicații informatice. Este un format text, inteligibil
pentru oameni, utilizat pentru reprezentarea obiectelor și a altor structuri de date și este folosit în
special pentru a transmite date structurate prin rețea, procesul purtând numele de serializare.
JSON este alternativa mai simplă, mai facilă decât limbajul XML. Eleganța formatului JSON
provine din faptul că este un subset al limbajului JavaScript (ECMA-262 3rd Edition) , fiind
utilizat alături de acest limbaj. Formatul JSON a fost creat de Douglas Crockford și standardizat
prin RFC 4627. Tipul de media pe care trebuie să îl transmită un document JSON
este application/json. Extensia fișierelor JSON este .json.

Tipurile de date de bază ale JSON sunt:


Număr: un număr zecimal cu semn care poate conține o parte fracțională și poate folosi notația E
exponențială, dar nu poate include non-numere precum NaN. Formatul nu face distincție între
întreg și virgulă mobilă. JavaScript folosește un format în virgulă mobilă cu precizie dublă
pentru toate valorile sale numerice (până mai târziu acceptă și BigInt[24]), dar alte limbaje care
implementează JSON pot codifica numerele diferit.
Șir: o secvență de zero sau mai multe caractere Unicode. Șirurile sunt delimitate cu ghilimele
duble și acceptă o sintaxă de evadare a barei oblice inverse.
Boolean: oricare dintre valori adevărat sau fals
Matrice: o listă ordonată de zero sau mai multe elemente, fiecare dintre acestea putând fi de orice
tip. Matricele folosesc notația paranteze pătrate cu elemente separate prin virgulă.
Obiect: o colecție de perechi nume-valoare în care numele (numite și chei) sunt șiruri. Standardul
ECMA actual prevede: „Sintaxa JSON nu impune nicio restricție asupra șirurilor de caractere
utilizate ca nume, nu necesită ca șirurile de nume să fie unice și nu atribuie nicio semnificație
ordonării perechilor nume/valoare.”[25] Obiectele sunt delimitate cu paranteze și folosesc
virgule pentru a separa fiecare pereche, în timp ce în fiecare pereche caracterul două puncte „:”
separă cheia sau numele de valoarea sa.
null: o valoare goală, folosind cuvântul null

7.6 Extensible Markup Language (XML) este un meta-limbaj de marcare recomandat


de Consorțiul Web pentru crearea de alte limbaje de marcare, cum ar
fi XHTML, RDF, RSS, MathML, SVG, OWL etc. Aceste limbaje formează familia de limbaje
XML.
Meta-limbajul XML este o simplificare a limbajului SGML (din care se trage și HTML) și a fost
proiectat în scopul transferului de date între aplicații pe internet, descriere structură date.
https://www.w3schools.com/xml/

7.7 Definirea unui document XML


http://web.cs.wpi.edu/~cs561/s12/Lectures/XML/XML.pdf

7.7.1Modele DTD - declarații de elemente și atribute


DTD înseamnă Document Type Definition. Un DTD vă permite să creați reguli pentru
elementele din documentele dumneavoastră XML. Deși XML în sine are reguli, regulile definite
într-un DTD sunt specifice propriilor nevoi.
Deci, pentru ca un document XML să fie bine format, trebuie să folosească sintaxa XML corectă
și trebuie să se conformeze DTD-ului sau schemei sale (vom acoperi mai târziu schemele XML).
DTD-ul este declarat în partea de sus a documentului dumneavoastră XML. Conținutul real al
DTD poate fi inclus în documentul dumneavoastră XML sau inclus într-un alt document și legat
la (sau ambele).
Dacă v-ați creat propriile elemente XML, atribute și/sau entități, atunci ar trebui să creați un
DTD
Dacă creați un document XML folosind elemente/atribute/entități predefinite (adică cele care au
fost create de altcineva), atunci ar trebui să existe deja un DTD. Tot ce trebuie să faceți este să vă
conectați la acel DTD folosind declarația DOCTYPE. (Vom acoperi DOCTYPE în curând).
Un DTD constă dintr-o listă de definiții de sintaxă pentru fiecare element din documentul
dumneavoastră XML.
Când creați un DTD, creați regulile de sintaxă pentru orice document XML care utilizează DTD.
Specificați ce nume de elemente pot fi incluse în document, atributele pe care le poate avea
fiecare element, indiferent dacă acestea sunt obligatorii sau opționale sau nu și multe altele.

Un limbaj de schemă mai nou, descris de W3C ca succesor al DTD-urilor, este XML Schema,
denumit adesea inițialismul pentru instanțe XML Schema, XSD (XML Schema Definition).
XSD-urile sunt mult mai puternice decât DTD-urile în descrierea limbajelor XML. Acestea
folosesc un sistem bogat de tipare a datelor și permit constrângeri mai detaliate asupra structurii
logice a unui document XML. XSD-urile folosesc, de asemenea, un format bazat pe XML, ceea
ce face posibilă utilizarea instrumentelor XML obișnuite pentru a ajuta la procesarea acestora.

7.7.2 XML schema - elemente simple și complexe, atribute


https://www.w3schools.com/xml/schema_intro.asp
7.8 Expresii XPATH pentru seleсții:
1. Select the document node
/
2. Select the 'root' element
/root
3. Select all 'actor' elements that are direct children of the 'actors' element.
/root/actors/actor
4. Select all 'singer' elements regardless of their positions in the document.
//foo:singer
5. Select the 'id' attributes of the 'singer' elements regardless of their positions in the
document.
//foo:singer/@id
6. Select the textual value of first 'actor' element.
//actor[1]/text()
7. Select the last 'actor' element.
//actor[last()]
8. Select the first and second 'actor' elements using their position.
//actor[position() < 3]
9. Select all 'actor' elements that have an 'id' attribute.
//actor[@id]
10. Select the 'actor' element with the 'id' attribute value of '3'.
//actor[@id='3']
11. Select all 'actor' nodes with the 'id' attribute value lower or equal to '3'.
//actor[@id<=3]
12. Select all the children of the 'singers' node.
/root/foo:singers/*
13. Select all the elements in the document.
//*
14. Select all the 'actor' elements AND the 'singer' elements.
//actor|//foo:singer

15. Select the name of the first element in the document.


name(//*[1])
16. Select the numeric value of the 'id' attribute of the first 'actor' element.
number(//actor[1]/@id)
17. Select the string representation value of the 'id' attribute of the first 'actor' element.
string(//actor[1]/@id)
18. Select the length of the first 'actor' element's textual value.
string-length(//actor[1]/text())
19. Select the local name of the first 'singer' element, i.e. without the namespace.
local-name(//foo:singer[1])
20. Select the number of 'singer' elements.
count(//foo:singer)
21. Select the sum of the 'id' attributes of the 'singer' elements.
sum(//foo:singer/@id)

7.9.1 Modelul DOM. Noduri XML


https://dom.spec.whatwg.org/#infrastructure

7.9.2Modelele stream-based Push și Pull


7.10. 1 Procesarea explicită a documentelor XML

i. Procesarea explicită a documentelor XML


1.  .Net - XmlDocument (DOM-based), Linq to XML,
XmlReader/XmlWriter, XPathNavigator
ii. Procesarea implicită a documentelor XML
1. Java - JAXB
2. .Net - XmlSerializer
3. *

https://docs.google.com/presentation/d/1yqZSHMZimrpLhUQT3wOUOcyyi5XgngMIyy3r4gaCL
wg/edit#slide=id.gebd45fc10_2_214

S-ar putea să vă placă și