SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Sabin-Corneliu Buraga




    Şabloane de proiectare XML

          Sabin-Corneliu Buraga
          Facultatea de Informatică

             busaco@infoiasi.ro
      http://www.infoiasi.ro/~busaco/

1
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
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
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
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
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
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
Sabin-Corneliu Buraga


                      ce este un pattern?

    • Specificarea unui pattern:
      – Numele
      – Rezumatul
      – Problema
      – Contextul
      – Soluţia
      – Exemplele
      – Utilizările

8
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
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
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
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
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
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
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
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
Sabin-Corneliu Buraga


                   Pattern-uri XML structurale

     • Content Element
     <config>                    <config>
       <ram>256</ram>               <hardware>
                                       <ram>256</ram>
       <hdd tip=quot;...quot;>80</hdd>
                                       <hdd tip=quot;...quot;>80</hdd>
       <parser limbaj=quot;C++quot;>
                                    </hardware>
          Xerces</parser>
                                    <software>
     <editor>vim</editor>
                                       <parser limbaj=quot;C++quot;>
     <parser limbaj=quot;Perlquot;>              Xerces</parser>
          Expat</parser>               <parser limbaj=quot;Perlquot;>
     </config>                           Expat</parser>
                                       <editor>vim</editor>
                                    </software>
                                 </config>
17
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
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
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
Sabin-Corneliu Buraga


                   Pattern-uri XML structurale

     • Flyweight
     <?xml version=quot;1.0quot; ?>
     <!DOCTYPE Titlu [
     <!ENTITY titlu quot;Situl WebGroupquot;>
     ]>
     <html>
     <head>
      <title>&titlu;</title>
      <meta name=quot;descriptionquot; content=quot;&titlu;quot; />
     </head>
     <body>
      <h1>&titlu; :: Salut!</h1>
     </body>
     </html>
21
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
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
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
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
Sabin-Corneliu Buraga


       Pattern-uri de proiectare XML



         Exemple demonstrative
     de aplicare a pattern-urilor XML




26
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
Sabin-Corneliu Buraga


                                     biblio

     •   www.w3.org/XML
     •   www.XMLpatterns.org
     •   www.mobileworkspace.com/xmlstds
     •   www.dublincore.org
     •   www.ZVON.org



28
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
Sabin-Corneliu Buraga




     Mulţumiri pentru atenţia acordată!




                Întrebări?


30

Mais conteúdo relacionado

Semelhante a XML Design Patterns

Introducere baza de-date
Introducere baza de-dateIntroducere baza de-date
Introducere baza de-dateChelariu Mihai
 
Drupal Basics
Drupal BasicsDrupal Basics
Drupal BasicsAG Prime
 
Themes and Styles in Android
Themes and Styles in AndroidThemes and Styles in Android
Themes and Styles in Androidmready
 
Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataionut_ignatescu
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Sabin Buraga
 
Fii linked data
Fii linked dataFii linked data
Fii linked datateodora001
 
Fii linked data
Fii linked dataFii linked data
Fii linked datateodora001
 
Modul 3 word2007 en
Modul 3 word2007 enModul 3 word2007 en
Modul 3 word2007 entachita2007
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Codecamp Romania
 
Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Agora Group
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Sabin Buraga
 

Semelhante a XML Design Patterns (20)

HTML5? HTML5!
HTML5? HTML5!HTML5? HTML5!
HTML5? HTML5!
 
Curs html
Curs htmlCurs html
Curs html
 
Curs1-POO-Loga
Curs1-POO-LogaCurs1-POO-Loga
Curs1-POO-Loga
 
Flori x
Flori xFlori x
Flori x
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Introducere baza de-date
Introducere baza de-dateIntroducere baza de-date
Introducere baza de-date
 
Drupal Basics
Drupal BasicsDrupal Basics
Drupal Basics
 
Themes and Styles in Android
Themes and Styles in AndroidThemes and Styles in Android
Themes and Styles in Android
 
Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
 
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
Web 2020 05/12: Modelarea datelor. Familia XML. Extragerea datelor cu XPath. ...
 
Stroia_Laurentiu
Stroia_LaurentiuStroia_Laurentiu
Stroia_Laurentiu
 
Catalog online
Catalog onlineCatalog online
Catalog online
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Modul 3 word2007 en
Modul 3 word2007 enModul 3 word2007 en
Modul 3 word2007 en
 
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
Remus Pereni - Remus Pereni - JavaScript, from dark ages to renaissance, the ...
 
Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010Alternative Open Source pentru mediul de afaceri-19mar2010
Alternative Open Source pentru mediul de afaceri-19mar2010
 
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
Web 2016 (09/13) Procesarea datelor XML & HTML. Simple API for XML. Procesări...
 

Mais de Sabin Buraga

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleSabin Buraga
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebSabin Buraga
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebSabin Buraga
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Sabin Buraga
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelSabin Buraga
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Sabin Buraga
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Sabin Buraga
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTSabin Buraga
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Sabin Buraga
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Sabin Buraga
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeSabin Buraga
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSabin Buraga
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSabin Buraga
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.Sabin Buraga
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSabin Buraga
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSabin Buraga
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSabin Buraga
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSabin Buraga
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5Sabin Buraga
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)Sabin Buraga
 

Mais de Sabin Buraga (20)

Web 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturaleWeb 2020 01/12: World Wide Web – aspecte arhitecturale
Web 2020 01/12: World Wide Web – aspecte arhitecturale
 
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni WebWeb 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
 
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie WebWeb 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
Web 2020 03/12: Programare Web – Arhitectura aplicaţiilor Web. Inginerie Web
 
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
Web 2020 04/12: Programare Web – Dezvoltarea aplicaţiilor Web în PHP
 
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object ModelWeb 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
Web 2020 06/12: Procesarea datelor XML & HTML. Document Object Model
 
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
Web 2020 07/12: Procesarea datelor XML & HTML – Simple API for XML. Procesări...
 
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
Web 2020 08/12: Servicii Web. De la arhitecturi orientate spre servicii la SO...
 
Web 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma RESTWeb 2020 09/12: Servicii Web. Paradigma REST
Web 2020 09/12: Servicii Web. Paradigma REST
 
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
Web 2020 10/12: Servicii Web. Micro-servicii. Serverless. Specificarea API-ur...
 
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
Web 2020 11/12: Interacţiune Web asincronă. Aplicaţii Web de tip mash-up. JAM...
 
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţialeWeb 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
Web 2020 12/12: Securitatea aplicaţiilor Web. Aspecte esenţiale
 
STAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor WebSTAW 01/12: Arhitectura aplicaţiilor Web
STAW 01/12: Arhitectura aplicaţiilor Web
 
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţialeSTAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
STAW 02/12: Programare Web: Limbajul JavaScript. Aspecte esenţiale
 
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
STAW 03/12: Programare Web: Limbajul JavaScript. Aspecte moderne: ES6 et al.
 
STAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.jsSTAW 04/12: Programare Web: Node.js
STAW 04/12: Programare Web: Node.js
 
STAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului WebSTAW 05/12: Arhitectura navigatorului Web
STAW 05/12: Arhitectura navigatorului Web
 
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uriSTAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
STAW 06/12: JavaScript în navigatorul Web. De la DOM la Ajax şi mash-up-uri
 
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScriptSTAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
STAW 07/12: Ingineria dezvoltării aplicaţiilor JavaScript
 
STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5STAW 08/12: Programare Web. Suita de tehnologii HTML5
STAW 08/12: Programare Web. Suita de tehnologii HTML5
 
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)STAW 09/12: Programare Web. API-uri JavaScript în contextul HTML5 (I)
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
  • 17. Sabin-Corneliu Buraga Pattern-uri XML structurale • Content Element <config> <config> <ram>256</ram> <hardware> <ram>256</ram> <hdd tip=quot;...quot;>80</hdd> <hdd tip=quot;...quot;>80</hdd> <parser limbaj=quot;C++quot;> </hardware> Xerces</parser> <software> <editor>vim</editor> <parser limbaj=quot;C++quot;> <parser limbaj=quot;Perlquot;> Xerces</parser> Expat</parser> <parser limbaj=quot;Perlquot;> </config> Expat</parser> <editor>vim</editor> </software> </config> 17
  • 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
  • 21. Sabin-Corneliu Buraga Pattern-uri XML structurale • Flyweight <?xml version=quot;1.0quot; ?> <!DOCTYPE Titlu [ <!ENTITY titlu quot;Situl WebGroupquot;> ]> <html> <head> <title>&titlu;</title> <meta name=quot;descriptionquot; content=quot;&titlu;quot; /> </head> <body> <h1>&titlu; :: Salut!</h1> </body> </html> 21
  • 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
  • 28. Sabin-Corneliu Buraga biblio • www.w3.org/XML • www.XMLpatterns.org • www.mobileworkspace.com/xmlstds • www.dublincore.org • www.ZVON.org 28
  • 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
  • 30. Sabin-Corneliu Buraga Mulţumiri pentru atenţia acordată! Întrebări? 30