Modelarea datelor via XML. Design patterns in contextul specificarii document...Sabin Buraga
An introduction to XML (Extensible Markup Language), including several considerations regarding the use of design patterns in the context of semi-structural data modeling.
O lectie de anatomie Web. Disectia unui document HTMLSabin Buraga
A presentation -- prepared for InfoEducatie 2012, a national IT contest for high-school students -- regarding the main methods to access (and process) parts of a HTML document by using CSS, XPath, and JavaScript (jQuery).
Modelarea datelor via XML. Design patterns in contextul specificarii document...Sabin Buraga
An introduction to XML (Extensible Markup Language), including several considerations regarding the use of design patterns in the context of semi-structural data modeling.
O lectie de anatomie Web. Disectia unui document HTMLSabin Buraga
A presentation -- prepared for InfoEducatie 2012, a national IT contest for high-school students -- regarding the main methods to access (and process) parts of a HTML document by using CSS, XPath, and JavaScript (jQuery).
My presentation from PHP Geek Meet #4 - Cluj Napoca.
Drupal Basic: why and why not Drupal. And a basic module and theming guide.
http://blog.ag-prime.com/2009/09/prezentarea-la-geekmeet-drupal-basics/
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Sabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
My presentation from PHP Geek Meet #4 - Cluj Napoca.
Drupal Basic: why and why not Drupal. And a basic module and theming guide.
http://blog.ag-prime.com/2009/09/prezentarea-la-geekmeet-drupal-basics/
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Sabin Buraga
Tehnologii Web (prezentările aferente disciplinei predate de Sabin Buraga la Facultatea de Informatică, Universitatea A.I. Cuza din Iași) – detalii la http://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
Prelegere din cadrul materiei "Tehnologii Web" predată de Dr. Sabin Buraga.
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
Prelegere din cadrul materiei "Dezvoltarea aplicaţiilor Web cu JavaScript" (Full-Stack Web Development) predată de Dr. Sabin Buraga (oct.2019–feb.2020).
Resurse suplimentare la https://profs.info.uaic.ro/~busaco/teach/courses/staw/web-film.html
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
XML Design Patterns
1. Sabin-Corneliu Buraga
Şabloane de proiectare XML
Sabin-Corneliu Buraga
Facultatea de Informatică
busaco@infoiasi.ro
http://www.infoiasi.ro/~busaco/
1
2. Sabin-Corneliu Buraga
cuprins
• Punerea problemei
• Ce este un pattern?
• Pattern-uri de proiectare
a structurii XML
• Pattern-uri de proiectare
a aplicaţiilor utilizând XML
2
3. Sabin-Corneliu Buraga
punerea problemei
• O problemă poate apărea frecvent
• Cei experimentaţi au găsit diverse soluţii
pentru problema în cauză, reuşind
să recunoască problema şi să aleagă
soluţia (optimă) care poate fi aplicată
într-un anumit context
• Apare astfel un şablon (pattern) de
proiectare (soluţionare) a problemelor
3
4. Sabin-Corneliu Buraga
ce este un pattern?
• Un pattern ≡ o regulă care exprimă
o relaţie dintre un context, o problemă
si o soluţie (Christopher Alexander, 1979)
– Iniţial, folosit în arhitectură
– Ulterior, în proiectarea software
(object-oriented software design):
pattern ≡ “mind sized” chunk of information
– W. Cunningham & K.Beck, 1987
– “Design Patterns” (E. Gamma et al., 1995)
Context
Problemă Soluţie
4
5. Sabin-Corneliu Buraga
ce este un pattern?
• Un pattern poate descrie cunoştinţele
unui expert (pe baza experienţei sale
personale) în domeniul problemei în ceea
ce priveşte recunoaşterea problemei,
a contextului şi a soluţiei la acea problemă
• Un pattern nu reprezintă o regula fermă
(uneori nu trebuie aplicat!)
• Este necesară adoptarea unui vocabular
comun corespunzător domeniului
problemei ⇒ pattern language
5
6. Sabin-Corneliu Buraga
ce este un pattern?
• Tipuri de pattern-uri
–De proiectare
–De arhitectură
–De analiză
–De creaţie
–De structură
–De comportament
6
7. Sabin-Corneliu Buraga
ce este un pattern?
• “Recunoaşterea” unui pattern
poate avea loc la unul dintre nivelurile:
–De prezentare
–De procesare (business logic)
–De integrare
7
8. Sabin-Corneliu Buraga
ce este un pattern?
• Specificarea unui pattern:
– Numele
– Rezumatul
– Problema
– Contextul
– Soluţia
– Exemplele
– Utilizările
8
9. Sabin-Corneliu Buraga
ce este un pattern?
• În cazul nostru, ne interesează
meta-limbajul (familia) XML
• Întrebări:
– Cum trebuie structurat un document XML
pentru a stoca anumite date sau metadate?
– Cum trebuie proiectată o aplicaţie
care utilizează XML ca limbaj de specificare,
stocare şi/sau prezentare a datelor?
9
10. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• Proiectarea structurii unui document XML
– Lungimea documentului
– Uşurinţa folosirii marcajelor
(ease of authoring)
– Uşurinţa procesării (ease of processing)
– Uşurinţa validării
– Flexibilitatea
– Consistenţa
– Gradul de abstractizare
10
11. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• XML Design Patterns
– Oportunitatea folosirii XML-ului: Use XML
– Reutilizarea tipurilor de documente existente:
Reuse Document Type
– Alegerea elementului/elementelor rădăcină:
Multiple Document Types, Multi Root Document Types
– Stabilirea gradului de abstractizare: Envelope,
Short Understandable Names, Domain Element,
Container Element, Collection Element,...
– Asocierea de metadate: Separate Metadata & Data,
Metadata in Separate Document, Head-Body,
Metadata First
11
12. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• XML Design Patterns – continuare
– Organizarea documentului
• Referenţierea unor construcţii:
Declare Before First Use
• Aceeaşi informaţie referenţiată
în locuri multiple: Flyweight
• Arbore (ierarhie) versus graf: Marketplace
– Extinderea ulterioară: Catch-All Element,
Role Attribute, Extensible Content Model
– Asigurarea consistenţei:
Common Attributes, Consistent Element Set
12
13. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• Use XML
– Determină situaţia în care XML e soluţia viabilă
de reprezentare a informaţiei (semi)structurate
– Existenţa unor reprezentări multiple:
binar, CSV, HTML, baze de date relaţionale,
obiecte serializate, XML
– XML poate fi o soluţie adecvată când:
• Conţinutul (datele) trebuie separate de formatare
• Datele trebuie partajate între aplicaţii, organizaţii,...
• Reprezentarea să poată fi înţeleasă şi de oameni
• Reprezentarea să poată fi uşor procesată de
calculator, independent de platformă şi de limbaj
13
14. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• Use XML
– Factori care trebuie consideraţi: simplitatea,
extensibilitatea, interoperabilitatea,
existenţa instrumentelor de procesare,
transformarea facilă în alte reprezentări,
uşurinţa validării, existenţa standardizării
– XML ca limbaj pentru reprezentarea
atât a datelor, cât şi a metadatelor
<rdf:Description
about=quot;http://s.infoiasi.ro/studenti.cgi?matricol=33quot;>
<nume porecla=quot;Sammyquot;>Mihai Alexandru Serea</nume>
<orar> <zi tip=quot;luniquot;>... </zi> </orar>
</rdf:Description>
14
15. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• Short Understandable Names
– Numele elementelor & atributelor trebuie să fie
scurte şi uşor de înţeles atât de autori, cât şi de
dezvoltătorii soft-ului de procesat documentul
– Pattern-ul poate fi utilizat pentru orice tip de
document
– Numele prea scurte sunt dificil de înţeles,
dar reduc lungimea documentelor
– Convenţii de numire: <nume_tag>, <NumeTag>
– Exemple:
<b> <ul> vs. <img /> <table>
<DescriereaEchipamentului Codul=quot;quot;> vs. <desec c=quot;quot;>
15
16. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• Content Element
– Un container grupează elemente (copil) înrudite
– Problema: numeroase elemente care apar
pe acelaşi nivel în document
şi care pot fi divizate în grupuri distincte
– Pattern-ul ajuta la structurarea documentului,
dar e foarte general (pot exista pattern-uri
mai specializate, derivate din acesta)
– Pattern-ul adaugă un nivel de abstractizare,
gruparea elementelor oferind informaţii
semantice suplimentare (e.g., asocierea de
metadate unui grup de elemente)
– Pattern-uri înrudite: Head-Body, Collection Element
16
18. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• Collection Element
– Creează un element al cărui model de conţinut
permite doar instanţe de singur tip
– Problema: există un element care trebuie repetat
la acelaşi nivel al documentului
– Context: gruparea pe categorii a elementelor,
existenta multor “fraţi” (siblings),
asocierea de metadate etc.
– Soluţie: crearea unui element conţinând
mai multe elemente de acelaşi tip
– Structura rezultată e mult mai uşor de procesat
– Dacă volumul de metadate este mare,
se va putea utiliza pattern-ul Head-Body
– Exemple: XHTML, RDF, DocBook,...
18
19. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• Envelope
– Oferă un tip de document care va desemna
un “plic” în care se vor putea stoca
date XML arbitrare
– Problema: diferite seturi de date trebuie livrate
unui sistem, într-o manieră consistentă
– Context: structura datelor din “plic” poate varia
şi nu e cunoscută la momentul creării sistemului
– Pattern-ul permite separarea diferitelor tipuri de
conţinuturi, oferind un mecanism de livrare
a datelor XML; plicul nu interferează
cu conţinutul propriu-zis al mesajului transmis
– Exemplu: SOAP (Simple Object Access Protocol)
19
20. Sabin-Corneliu Buraga
Pattern-uri XML structurale
• Flyweight
– Când aceeaşi informaţie este inclusă în diferite
locuri în document, atunci ea poate fi plasată
o singură dată şi referită în locuri multiple
– Problema: plasarea repetată a aceloraşi date
în locuri diferite poate cauza erori si dificultăţi
în mentenanţa documentului;
creşte nejustificat lungimea documentului
– Soluţie: utilizarea entităţilor XML (externe),
folosirea datelor “embed” via XLink,
utilizarea atributelor ID şi IDREF etc.
– Pattern-ul măreşte gradul de mentenanţă şi
modularizare, dar poate afecta abilitatea
de înţelegere a documentului
20
22. Sabin-Corneliu Buraga
Pattern-uri de proiectare XML
• Proiectarea unei aplicaţii Web
(bazata pe tehnologiile XML)
– Separaţia dintre modul de stocare a datelor,
vizualizarea lor şi maniera de procesare
– Pattern-ul consacrat:
Model-View-Controller (MVC)
• Problema:
disponibilitatea pe un sit Web
a datelor provenite din surse XML distribuite
22
23. Sabin-Corneliu Buraga
Pattern-uri de proiectare XML
• Exemple de pattern-uri de proiectare:
– XML In Out Tray – rezolvă problema obţinerii,
procesării şi returnării datelor XML,
procesele interne de prelucrare fiind ascunse
– External Assistant – procesul de generare
a formatului de prezentare plecând de la XML
este realizat de o aplicaţie externă
– Information Grouping – soluţionează
problema grupării şi prezentării datelor XML,
indiferent de aplicaţia care generează aceste date
– XML Mediator – rezolvă problema
inter-operabilităţii dintre aplicaţii care utilizează
documente XML cu structuri eterogene
23
24. Sabin-Corneliu Buraga
Pattern-uri de proiectare XML
• Exemple de pattern-uri de proiectare:
– XML In Out Tray
• Organizează activitatea componentelor implicate
în procesele de colectare şi de vizualizare a datelor
• Scop: dezvoltarea de conexiuni între componente
traversate de date XML păstrând o cuplare slabă
şi o coeziune ridicată (similar cu pattern-ul Proxy)
• Existenţa unui “lipici” între componente
⇒ independenţa de limbaj/platformă
IN
XML
Worker
OUT
24
25. Sabin-Corneliu Buraga
Pattern-uri de proiectare XML
• Exemple de pattern-uri de proiectare:
– Information Grouping
• Date la intrare documente XML, pattern-ul oferă
o modalitate de a formata datele XML, grupate pe
diverse criterii (asemănător lui group by din SQL)
• Asigura separarea între formatul de reprezentare şi
cel de stocare a datelor, putând organiza informaţiile
într-un mod diferit de cel al stocării
XSL XHTML
WML
XML Transformer
SVG
25
26. Sabin-Corneliu Buraga
Pattern-uri de proiectare XML
Exemple demonstrative
de aplicare a pattern-urilor XML
26
27. Sabin-Corneliu Buraga
biblio
• E. Gamma et al., Design Patterns,
Addison-Wesley, 1995
• B. Daum, U. Merten, System Architecture
with XML, Elsevier Science, 2003
• S. Buraga, Semantic Web, Matrix Rom, 2004
• S. Buraga (coord.), Aplicaţii Web la cheie,
Polirom, 2003
• S. Buraga (coord.), Situri Web la cheie,
Polirom, 2004
27
29. Sabin-Corneliu Buraga
rezumat
• Punerea problemei
• Ce este un pattern?
• Pattern-uri de proiectare
a structurii XML
• Pattern-uri de proiectare
a aplicaţiilor utilizând XML
29