SlideShare une entreprise Scribd logo
1  sur  125
Télécharger pour lire hors ligne
Dr. Sabin-Corneliu Buraga
             Facultatea de Informatică
Universitatea “Alexandru Ioan Cuza” – Iași, România

            www.purl.org/net/busaco
                  @busaco
„Lucrurile nu sunt grele de făcut,
ceea ce este greu este să fim în stare să le facem!”


               Constantin Brâncuși
Cum modelăm (reprezentăm) datele?
datele: mai importante decât aplicațiile




    Procesare   Date proprietare    Publicarea    Modelare      Modelare
   (programe)    (baze de date,      datelor        (semi)     conceptuală
                 suite de birou)     pe Web      structurată   (RDF, OWL)
                                     (HTML)         (XML)

“Data is less            “Data is as                   “Data is more
 important               important                       important
than code”                as code”                      than code”

   1945 -1970   1970 - 1994        1994 - 2000   2000 - 2003   2003 -


    evoluția conceptului de “dată” (Daconta et al., 2003)
datele: mai importante decât aplicațiile




    Procesare   Date proprietare    Publicarea    Modelare      Modelare
   (programe)    (baze de date,      datelor        (semi)     conceptuală
                 suite de birou)     pe Web      structurată   (RDF, OWL)
                                     (HTML)         (XML)

“Data is less            “Data is as                   “Data is more
 important               important                       important
than code”                as code”                      than code”

   1945 -1970   1970 - 1994        1994 - 2000   2000 - 2003   2003 -


    evoluția conceptului de “dată” (Daconta et al., 2003)
Ce model de reprezentare a datelor
        alegem pentru…

    stocarea datelor eterogene,
    provenind din surse multiple?
Ce model de reprezentare a datelor
        alegem pentru…

   informații care evoluează rapid?
Ce model de reprezentare a datelor
        alegem pentru…

  reprezentarea limbajului natural?
Dorim să modelăm și să procesăm
       date privitoare la…

         antologii de poezii,
cataloage de produse ale unui e-shop,
  depozite de rețete gastronomice,
             chestionare,
            rețele sociale
                 etc.
o soluție


Folosim HTML pentru modelarea datelor
și – eventual – CSS pentru prezentarea lor
o soluție


   Folosim HTML pentru modelarea datelor
   și – eventual – CSS pentru prezentarea lor

<p><strong>Prietenii mei:</strong></p>
<ul>
      <li><a href="http://twitter.com/pinguinulvesel">
          Dragoș</a></li>
      <li><a href="mailto:tux@pinguin.info">
          Tux</a></li>
</ul>
Nu putem defini propriile noastre marcaje!?
Necesitate:
un limbaj de marcare explicită a datelor
Necesitate:
   un limbaj de marcare explicită a datelor

datele modelate pot fi practic nelimitate (unbound)
                 și necunoscute
Necesitate:
   un limbaj de marcare explicită a datelor

               ar fi de dorit ca datele
să se poată „explica” pe ele însele (self-explanatory)
Necesitate:
   un limbaj de marcare explicită a datelor

               ar fi de dorit ca datele
să se poată „explica” pe ele însele (self-explanatory)



       ce reprezintă triplul ("Sabin", "Buraga", 33)?
Necesitate:
modelul adoptat să se preteze arhitecturilor
navigaționale actuale, bazate pe hipertext

suport pentru specificarea adreselor Web – URI-uri
Am putea recurge la sau specifica
 un nou format de document?
Documente:

    formate particulare (proprietare)

                  versus

formate generice (deschise, standardizate)
definiție


    Marcaj – adnotare, codare, mark-up

      orice actiune de a interpreta explicit
          o porțiune de text (conținut)
definiție


    Marcaj – adnotare, codare, mark-up

      orice actiune de a interpreta explicit
          o porțiune de text (conținut)



                      exemple:
     semnele de punctuație pentru limbile scrise,
         deliminatorii folosiți în codul-sursă
definiție


              Limbaj de specificare
            (de adnotare, de marcare)

            set de convenții de marcare
       utilizate pentru codificarea datelor
definiție


              Limbaj de specificare
            (de adnotare, de marcare)

            set de convenții de marcare
       utilizate pentru codificarea datelor


    specifică mulțimea de marcaje obligatorii,
 modul de identificare și de structurare a marcajelor
Extensible Markup Language

   meta-limbaj de marcare

   permite definirea de limbaje
Extensible Markup Language

descendent simplificat al SGML destinat
  utilizării în Internet (1996–prezent)
Extensible Markup Language

standard al Consorțiului Web (W3C)

    www.w3.org/TR/REC-xml
Extensible Markup Language

o tehnologie + o familie de limbaje

       www.w3.org/XML/
Asigură inter-operabilitatea la nivel de date


are suport pe orice platformă hardware/software,
       inclusiv în cadrul navigatoarelor Web
Asigură inter-operabilitatea la nivel de date


    procesoarele XML sunt implementate
      în toate limbajele de programare
Asigură inter-operabilitatea la nivel de date


        procesoarele XML sunt implementate
          în toate limbajele de programare


               metode uzuale de procesare
        obiectuală: DOM (Document Object Model)
secvențială bazată pe evenimente: SAX (Simple API for XML)
                 simplificată: Simple XML
Asigură inter-operabilitatea la nivel de date


recurge la Unicode – independent de codificare
Soluție pentru reprezentarea conținutului
  resurselor Web identificate de URI/IRI
exemplu


     Reprezentarea unei antologii de poezii
<?xml version="1.0" ?>
<antologie>
       <poem>
               <titlu>...</titlu>
               <strofa>
                       <vers>...</vers>
                       <vers>...</vers>
                       ...
               </strofa>
       </poem>
       <!-- mai multe poeme… (acesta e un comentariu) -->
</antologie>
exemplu


       Specificarea unui catalog de produse
<produse>
  <produs tip="promo">
    <nume>Ping Uinix</nume>
    <ofertant>http://www.pinguin.info</ofertant>
  </produs>
  <produs>
    <!-- un soi de portocale albastre -->
    <nume>Blue Ory</nume>
    <descriere />              <!-- un element având conținut vid -->
  </produs>
  <produs>…</produs>
</produse>
exemplu


       Specificarea unui catalog de produse
<produse>
  <produs tip="promo">
    <nume>Ping Uinix</nume>
    <ofertant>http://www.pinguin.info</ofertant>
  </produs>
  <produs>
    <!-- un soi de portocale albastre -->
    <nume>Blue Ory</nume>
    <descriere />              <!-- un element având conținut vid -->
  </produs>
  <produs>…</produs>
</produse>
exemplu


       Specificarea unui catalog de produse
<produse>
  <produs tip="promo">
    <nume>Ping Uinix</nume>
    <ofertant>http://www.pinguin.info</ofertant>
  </produs>
  <produs>
    <!-- un soi de portocale albastre -->
    <nume>Blue Ory</nume>
    <descriere />              <!-- un element având conținut vid -->
  </produs>
  <produs>…</produs>
</produse>
                                          date semi-structurate
exemplu


              Informații despre o persoană
          via vocabularul FOAF (Friend Of A Friend)
<foaf:Person rdf:ID="busaco">
  <foaf:name>Sabin Buraga</foaf:name>
  <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/>
  <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/>
</foaf:Person>
exemplu


               Informații despre o persoană
          via vocabularul FOAF (Friend Of A Friend)
<foaf:Person rdf:ID="busaco">
  <foaf:name>Sabin Buraga</foaf:name>
  <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/>
  <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/>
</foaf:Person>
<foaf:Image rdf:about="http://www.flickr.com/.../foto.jpg">
  <dc:date rdf:datatype="xsd:date">2010-05-12</dc:date>
  <dc:title xml:lang="ro">Prezentare la Summer Web 2010</dc:title>
  <foaf:depicts rdf:resource="#busaco"/>
  <foaf:maker rdf:resource="#tux"/>
</foaf:Image>
exemplu


               Informații despre o persoană
          via vocabularul FOAF (Friend Of A Friend)
<foaf:Person rdf:ID="busaco">
  <foaf:name>Sabin Buraga</foaf:name>
  <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/>
  <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/>
</foaf:Person>
<foaf:Image rdf:about="http://www.flickr.com/.../foto.jpg">
  <dc:date rdf:datatype="xsd:date">2010-05-12</dc:date>
  <dc:title xml:lang="ro">Prezentare la Summer Web 2010</dc:title>
  <foaf:depicts rdf:resource="#busaco"/>
  <foaf:maker rdf:resource="#tux"/>
</foaf:Image>
                                           spații de nume
sintaxa
XML (Extensible Markup Language)
  modelul de date XML (abstract)
  XML Information Set – Infoset
  transformări/prezentări de date
XSL (Extensible Stylesheet Language)
       interogarea datelor
    XQuery – împreună cu XPath
Structurarea/formatarea conținutului
       (formate de prezentare a datelor)

   în navigatorul Web: (X)HTML – Extensible HTML
            formulare electronice: XForms
   grafică vectorială: SVG (Scalable Vector Graphics)
  lumi tridimensionale: X3D (Extensible 3D Graphics)
în medii fără fir: XHTML-MP (Mobile Profile), Tiny SVG
Reprezentarea diferitelor tipuri de conținut

              expresii matematice: MathML
              multimedia sincronizată: SMIL
     (Synchronized Multimedia Integration Language)
               informații vocale: VoiceXML
       componente ale interfeței-utilizator: XUL
            (Extensible User-interface Language)
informații cartografice: KML (Keyhole Markup Language)
Reprezentarea diferitelor tipuri de conținut

 documentații: DocBook (Documentation Book)
      informații prelucrate de suite de birou
 – e.g., Open Office: ODF (Open Document Format)
    mediatizare (syndication) – fluxuri de știri:
        RSS (Really Simple Syndication), Atom
   reguli de specificare a proceselor de afaceri:
      BRML (Business Rules Markup Language)
Multe alte limbaje la

http://xml.coverpages.org/
Așadar, până la urmă, ce este XML?
XML unifică tehnologii privind:

         procesarea documentelor

stocarea și prelucrarea tradițională a datelor

         accesul la Internet (Web)
Internet




          XML
 Baze                Docu-
de date              mente
XML se pretează pentru stocarea
(reprezentarea) datelor semi-structurate
XML se pretează pentru stocarea
(reprezentarea) datelor semi-structurate

sistemele tradiționale (e.g., bazele de date relaționale)
      necesită specificarea unei scheme rigide
         în vederea stocării/accesării datelor
XML se pretează pentru stocarea
(reprezentarea) datelor semi-structurate

sistemele tradiționale (e.g., bazele de date relaționale)
      necesită specificarea unei scheme rigide
         în vederea stocării/accesării datelor

     …un punct de vedere în general centralizat
XML se pretează pentru stocarea
   (reprezentarea) datelor semi-structurate

datele de pe Web sunt descentralizate, eterogene și pot fi,
  deseori, accesate – chiar modificate – de către oricine
XML se pretează pentru stocarea
   (reprezentarea) datelor semi-structurate

datele de pe Web sunt descentralizate, eterogene și pot fi,
  deseori, accesate – chiar modificate – de către oricine

         resursele disponibile la un moment dat
               nu sunt cunoscute a-priori
Direcții de interes:
comunicatii și interacțiune
Direcții de interes:
     comunicatii și interacțiune

           person-to-person

instant messaging – e.g., Jabber via XMPP
    micro-blogging – exemplu: Twitter
Direcții de interes:
     comunicatii și interacțiune

        computer-to-person

      syndication – via RSS/Atom
recomandare de conținut – e.g., Zemanta
     integrare de sisteme sociale
Direcții de interes:
      comunicatii și interacțiune

        computer-to-computer

servicii Webaplicații hibride (mash-up-uri)
Twitter + Google EarthTwittEarth
Direcții de interes:
publicare deschisă a datelor
Direcții de interes:
      publicare deschisă a datelor

      modelare (semi)structurată
utilizare de formate/vocabulare standardizate
     DCMI (Dublin Core Metadata Initiative),
           FOAF (Friend Of A Friend),
        DOAP (Description Of A Project),
                      …
Direcții de interes:
       publicare deschisă a datelor

procesare independentă de platformă/limbaj
Direcții de interes:
      publicare deschisă a datelor

   prezentări multiple ale conținutului,
în diverse formate, pe sisteme eterogene
Direcții de interes:
modelarea proceselor (de afaceri, mai ales)
Direcții de interes:
modelarea proceselor (de afaceri, mai ales)

            dataflow/workflow

  BRML (Business Rules Markup Language),
BPEL4WS (Business Process Execution Language
             for Web Services)
Analizoare (procesoare, parsers)
         Apache Xerces, Expat, libxml,…

       Vizualizatoare și editoare structurale
Firefox, Open Office, 4Suite, <oXygen />, Serna etc.

  Formatatoare – e.g., procesoare XSLT/XSL-FO
         Apache FOP, libxslt, Saxon,…
Firefinder – folosirea interogărilor XPath în cadrul Firebug
Instrumente de convertire
                 Tidy

         Instrumente de arhivare
                 XMill

Sisteme de gestiune a bazelor de date XML
    Berkeley DB XML, eXist, Sedna etc.
Există bune practici
privind utilizarea și/sau modelarea
       documentelor XML?
Cum trebuie structurat un document XML
        pentru a modela (stoca)
      anumite date sau meta-date?
Recurgerea la șabloane de proiectare
         (design patterns)
definiție


               Pattern (șablon)

           regulă ce exprimă o relație
   dintre un context, o problemă și o soluție

            Christopher Alexander, 1979
Uzual, pattern-urile sunt utilizate
            în proiectarea de aplicații
        (object-oriented software design)


     pattern  “mind sized” chunk of information


                 lucrarea de referință:
E. Gamma et al., Design Patterns, Addison-Wesley, 1995
Șabloanele de proiectare au fost folosite, ulterior,
      în cadrul interacțiunii om-calculator

      context: IA – Information Architecture



                    resurse esențiale:
     J. Tidwell, Designing Interfaces, O’Reilly, 2005
                  www.hcipatterns.org
                www.welie.com/patterns
folosirea șabloanelor de interacțiune
Un șablon 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 șablon nu reprezintă o regulă fermă


uneori nu trebuie aplicatanti-patterns
Este necesară adoptarea unui vocabular comun
     corespunzător domeniului problemei

            pattern language
Șabloane privitoare la:

     proiectare
     arhitectură
       analiză
     dezvoltare
      structură
   comportament
Ne interesează modelarea datelor
       pe baza familiei XML
Recurgerea la șabloane structurale pentru
proiectarea structurii unui document XML:

          lungimea documentului
        ușurința folosirii marcajelor
             ușurința procesării
                flexibilitatea
                 consistența
           gradul de abstractizare
exemplu


                    Use XML

determină situația în care XML este soluția viabilă
de reprezentare a informațiilor (semi-)structurate
exemplu


                     Use XML

               reprezentări multiple:
   binar, CSV (Comma-Separated Values), HTML,
baze de date relaționale, obiecte serializate, XML,…
exemplu


                    Use XML

   XML poate fi o soluție adecvată atunci când:

datele (conținutul) trebuie separat(e) de formatare
exemplu


                      Use XML

   XML poate fi o soluție adecvată atunci când:

datele trebuie partajate între aplicații, organizații,...
exemplu
exemplu


                  Use XML

 XML poate fi o soluție adecvată atunci când:

           reprezentarea resurselor
   trebuie să poată fi înțeleasă și de oameni
exemplu


                    Use XML

   XML poate fi o soluție adecvată atunci când:

reprezentarea trebuie procesată facil de calculator,
      independent de platformă și de limbaj
exemplu


         Short Understandable Names

     numele marcajelor (elemente și atribute)
trebuie să fie scurte și ușor de înțeles atât de autori,
         cât și de dezvoltatorii software-ului
          care va procesa documentul XML
exemplu


        Short Understandable Names

     numele prea scurte sunt dificil de înțeles,
       dar reduc lungimea documentelor



<DescriereaEchipamentului CodulEchipamentului="…" />
                versus <desec c="…" />
        <b> <ul> versus <video /> <table> <title>
exemplu


      Short Understandable Names

           convenții de numire:

              <nume_tag>
              <NumeTag>
              <numeTag>
exemplu


               Content Element

    problemă: numeroase elemente care apar
pe același nivel în document și care pot fi divizate
                în grupuri distincte

un container grupează elemente (copil) înrudite
exemplu


               Content Element

        adaugă un nivel de abstractizare,
gruparea elementelor oferind informații semantice
   suplimentare – e.g., asocierea de meta-date
             unui grup de elemente
exemplu


          Content Element

          șabloane înrudite:
              Head-Body
          Collection Element
exemplu


                     Content Element
                              <config>
<config>                         <hardware>
  <ram>4096</ram>                   <ram>4096</ram>
  <hdd tip="...">500</hdd>          <hdd tip="...">500</hdd>
                                 </hardware>
  <parser limbaj="Java">
                                 <software>
     Xerces</parser>                <parser limbaj="Java">
  <editor>vim</editor>                Xerces</parser>
  <parser limbaj="Perl">            <parser limbaj="Perl">
    Expat</parser>                    Expat</parser>
</config>                           <editor>vim</editor>
                                 </software>
                              </config>
exemplu


                   Envelope

oferă un tip de document care va desemna un „plic”
   în care se vor putea stoca date XML arbitrare
exemplu


                       Envelope

oferă un tip de document care va desemna un „plic”
   în care se vor putea stoca date XML arbitrare

     problemă: diferite seturi de date trebuie livrate
        unui sistem, într-o manieră consistentă

    context: structura datelor din „plic” poate varia și
    nu este cunoscută la momentul creării sistemului
exemplu


                    Envelope

permite separarea diferitelor tipuri de conținuturi,
oferindu-se un mecanism de livrare a datelor XML

„plicul” nu interferează cu conținutul propriu-zis
               al mesajului transmis
exemplu


                 Envelope

         exemplu tipic de utilizare:
protocolul SOAP folosit la vehicularea datelor
        dintre servicii Web și clienți
exemplu


          Envelope
exemplu


               Role Attribute

                   problemă:
     unui element îi trebuie precizat rolul
        (i.e. caracteristica definitorie)
exemplu


               Role Attribute

                   problemă:
     unui element îi trebuie precizat rolul
        (i.e. caracteristica definitorie)

                    soluție:
  se poate folosi un atribut specificând rolul
exemplu


                 Role Attribute

valorile atributului trebuie să fie mutual exclusive



        pentru un element XML, nu pot apărea
     de mai multe ori atribute având același nume

  <departament rol="cercetare">…</departament>
exemplu


               Role Attribute

exemple de utilizare în cadrul microformatelor

           www.microformats.org




   vezi direcția POSH (Plain Old Semantic HTML)
Alte șabloane

reutilizarea tipurilor de documente existente:
            Reuse Document Type
Alte șabloane

alegerea elementului/elementelor rădăcină:
        Multiple Document Types
       Multi Root Document Types
Alte șabloane

          referențierea unor construcții:
             Declare Before First Use
referențierea aceleiași informații în locuri multiple:
                     Flyweight
           arbore (ierarhie) versus graf:
                   Marketplace

  facilitează organizarea structurii documentului XML
Alte șabloane

   facilitarea extinderii:
    Catch-All Element
      Role Attribute
Extensible Content Model
Alte șabloane

asigurarea consistenței:
  Common Attributes
Consistent Element Set
Alte șabloane

   asocierea de meta-date:
  Separate Metadata & Data
Metadata in Separate Document
          Head-Body
       Metadata First
studiu de caz


Modelarea datelor (de la implicit la explicit)

      specificarea preferințelor utilizatorului
          în contextul navigării pe Web
studiu de caz


 Modelarea datelor (de la implicit la explicit)

       specificarea preferințelor utilizatorului
           în contextul navigării pe Web

<preferinte
     tema="aqua"
     rezolutie="1024x768"
     browser="Firefox 3.6"
/>
studiu de caz


 Modelarea datelor (de la implicit la explicit)

       specificarea preferințelor utilizatorului
           în contextul navigării pe Web

<preferinte
     tema="aqua"                 convenții de reprezentare
                                 ce nu pot fi deduse explicit
     rezolutie="1024x768"
     browser="Firefox 3.6"
/>
studiu de caz


 Modelarea datelor (de la implicit la explicit)

       specificarea preferințelor utilizatorului
           în contextul navigării pe Web

<preferinte
     tema="aqua"
     rezolutie="1024x768"
     browser="Firefox 3.6"         dacă trebuie stocată
                                  o listă de navigatoare?
/>
studiu de caz


 Modelarea datelor (de la implicit la explicit)
     recurgând la șabloaneo soluție mai bună
<preferinte>
  <tema>aqua</tema>
  <rezolutie>
    <latime unit="px">1024</latime>
    <lungime unit="px">768</lungime>
  </rezolutie>
  <browser versiune="3.6">Firefox</browser>
</preferinte>
Resurse bibliografice

        S. Buraga, Tehnologii XML, Polirom, 2006

S. Buraga (coord.), Programarea în Web 2.0, Polirom, 2007

   B. Daum, U. Merten, System Architecture with XML,
                Elsevier Science, 2003
Situri Web de interes

             Consorțiul Web: www.w3.org

 Șabloane de proiectare XML: www.XMLPatterns.com

               XML.org: www.XML.org

Instrumente XML open source oferite de fundația Apache:
                  xml.apache.org
Ă

Contenu connexe

Similaire à Modelarea datelor via XML. Design patterns in contextul specificarii documentelor XML

Fii linked data
Fii linked dataFii linked data
Fii linked data
teodora001
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
teodora001
 
Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
ionut_ignatescu
 

Similaire à Modelarea datelor via XML. Design patterns in contextul specificarii documentelor XML (20)

WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
WADe 2014—2015 (06/12): Semantic Web—Managementul datelor RDF. Interogarea da...
 
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQLWADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
WADe 2017-2018 (6/12) RDF Data Management. Accessing RDF Data via SPARQL
 
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de numeWeb 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
Web 2016 (06/13) Modelarea datelor. Familia XML + spații de nume
 
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
 
O lectie de anatomie Web. Disectia unui document HTML
O lectie de anatomie Web. Disectia unui document HTMLO lectie de anatomie Web. Disectia unui document HTML
O lectie de anatomie Web. Disectia unui document HTML
 
XML Design Patterns
XML Design PatternsXML Design Patterns
XML Design Patterns
 
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
Dezvoltarea aplicațiilor Web (6/12): Managementul datelor RDF. Interogarea da...
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni WebWeb 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
Web 2016 (02/13) Programare Web – Protocolul HTTP. Cookie-uri. Sesiuni Web
 
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
WADe 2017-2018 (5/12) Data Modeling in RDF (Resource Description Framework)
 
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
 
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (1/12) Web Application Development: Concepts & VisionWADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
WADe 2017-2018 (1/12) Web Application Development: Concepts & Vision
 
Modele de colectare si gestiune digitala
Modele de colectare si gestiune digitalaModele de colectare si gestiune digitala
Modele de colectare si gestiune digitala
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
 
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
Web 2016 (07/13) Modelarea datelor. Extragerea datelor cu XPath. Validări XML...
 
Flori x
Flori xFlori x
Flori x
 
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFa
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFaWADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFa
WADe 2014—2015 (supliment): Modelarea datelor în HTML: aserţiuni RDFa
 
Date structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked dataDate structurate, aplicarea modelului linked data
Date structurate, aplicarea modelului linked data
 

Plus de Sabin Buraga

Plus 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 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)
 
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
STAW 10/12: Programare Web. API-uri JavaScript în contextul HTML5 (II)
 

Modelarea datelor via XML. Design patterns in contextul specificarii documentelor XML

  • 1. Dr. Sabin-Corneliu Buraga Facultatea de Informatică Universitatea “Alexandru Ioan Cuza” – Iași, România www.purl.org/net/busaco @busaco
  • 2. „Lucrurile nu sunt grele de făcut, ceea ce este greu este să fim în stare să le facem!” Constantin Brâncuși
  • 3.
  • 5. datele: mai importante decât aplicațiile Procesare Date proprietare Publicarea Modelare Modelare (programe) (baze de date, datelor (semi) conceptuală suite de birou) pe Web structurată (RDF, OWL) (HTML) (XML) “Data is less “Data is as “Data is more important important important than code” as code” than code” 1945 -1970 1970 - 1994 1994 - 2000 2000 - 2003 2003 - evoluția conceptului de “dată” (Daconta et al., 2003)
  • 6. datele: mai importante decât aplicațiile Procesare Date proprietare Publicarea Modelare Modelare (programe) (baze de date, datelor (semi) conceptuală suite de birou) pe Web structurată (RDF, OWL) (HTML) (XML) “Data is less “Data is as “Data is more important important important than code” as code” than code” 1945 -1970 1970 - 1994 1994 - 2000 2000 - 2003 2003 - evoluția conceptului de “dată” (Daconta et al., 2003)
  • 7. Ce model de reprezentare a datelor alegem pentru… stocarea datelor eterogene, provenind din surse multiple?
  • 8. Ce model de reprezentare a datelor alegem pentru… informații care evoluează rapid?
  • 9. Ce model de reprezentare a datelor alegem pentru… reprezentarea limbajului natural?
  • 10. Dorim să modelăm și să procesăm date privitoare la… antologii de poezii, cataloage de produse ale unui e-shop, depozite de rețete gastronomice, chestionare, rețele sociale etc.
  • 11. o soluție Folosim HTML pentru modelarea datelor și – eventual – CSS pentru prezentarea lor
  • 12. o soluție Folosim HTML pentru modelarea datelor și – eventual – CSS pentru prezentarea lor <p><strong>Prietenii mei:</strong></p> <ul> <li><a href="http://twitter.com/pinguinulvesel"> Dragoș</a></li> <li><a href="mailto:tux@pinguin.info"> Tux</a></li> </ul>
  • 13.
  • 14. Nu putem defini propriile noastre marcaje!?
  • 15. Necesitate: un limbaj de marcare explicită a datelor
  • 16. Necesitate: un limbaj de marcare explicită a datelor datele modelate pot fi practic nelimitate (unbound) și necunoscute
  • 17. Necesitate: un limbaj de marcare explicită a datelor ar fi de dorit ca datele să se poată „explica” pe ele însele (self-explanatory)
  • 18. Necesitate: un limbaj de marcare explicită a datelor ar fi de dorit ca datele să se poată „explica” pe ele însele (self-explanatory) ce reprezintă triplul ("Sabin", "Buraga", 33)?
  • 19. Necesitate: modelul adoptat să se preteze arhitecturilor navigaționale actuale, bazate pe hipertext suport pentru specificarea adreselor Web – URI-uri
  • 20. Am putea recurge la sau specifica un nou format de document?
  • 21. Documente: formate particulare (proprietare) versus formate generice (deschise, standardizate)
  • 22. definiție Marcaj – adnotare, codare, mark-up orice actiune de a interpreta explicit o porțiune de text (conținut)
  • 23. definiție Marcaj – adnotare, codare, mark-up orice actiune de a interpreta explicit o porțiune de text (conținut) exemple: semnele de punctuație pentru limbile scrise, deliminatorii folosiți în codul-sursă
  • 24.
  • 25. definiție Limbaj de specificare (de adnotare, de marcare) set de convenții de marcare utilizate pentru codificarea datelor
  • 26. definiție Limbaj de specificare (de adnotare, de marcare) set de convenții de marcare utilizate pentru codificarea datelor specifică mulțimea de marcaje obligatorii, modul de identificare și de structurare a marcajelor
  • 27. Extensible Markup Language meta-limbaj de marcare permite definirea de limbaje
  • 28. Extensible Markup Language descendent simplificat al SGML destinat utilizării în Internet (1996–prezent)
  • 29. Extensible Markup Language standard al Consorțiului Web (W3C) www.w3.org/TR/REC-xml
  • 30. Extensible Markup Language o tehnologie + o familie de limbaje www.w3.org/XML/
  • 31. Asigură inter-operabilitatea la nivel de date are suport pe orice platformă hardware/software, inclusiv în cadrul navigatoarelor Web
  • 32. Asigură inter-operabilitatea la nivel de date procesoarele XML sunt implementate în toate limbajele de programare
  • 33. Asigură inter-operabilitatea la nivel de date procesoarele XML sunt implementate în toate limbajele de programare metode uzuale de procesare obiectuală: DOM (Document Object Model) secvențială bazată pe evenimente: SAX (Simple API for XML) simplificată: Simple XML
  • 34. Asigură inter-operabilitatea la nivel de date recurge la Unicode – independent de codificare
  • 35. Soluție pentru reprezentarea conținutului resurselor Web identificate de URI/IRI
  • 36. exemplu Reprezentarea unei antologii de poezii <?xml version="1.0" ?> <antologie> <poem> <titlu>...</titlu> <strofa> <vers>...</vers> <vers>...</vers> ... </strofa> </poem> <!-- mai multe poeme… (acesta e un comentariu) --> </antologie>
  • 37. exemplu Specificarea unui catalog de produse <produse> <produs tip="promo"> <nume>Ping Uinix</nume> <ofertant>http://www.pinguin.info</ofertant> </produs> <produs> <!-- un soi de portocale albastre --> <nume>Blue Ory</nume> <descriere /> <!-- un element având conținut vid --> </produs> <produs>…</produs> </produse>
  • 38. exemplu Specificarea unui catalog de produse <produse> <produs tip="promo"> <nume>Ping Uinix</nume> <ofertant>http://www.pinguin.info</ofertant> </produs> <produs> <!-- un soi de portocale albastre --> <nume>Blue Ory</nume> <descriere /> <!-- un element având conținut vid --> </produs> <produs>…</produs> </produse>
  • 39. exemplu Specificarea unui catalog de produse <produse> <produs tip="promo"> <nume>Ping Uinix</nume> <ofertant>http://www.pinguin.info</ofertant> </produs> <produs> <!-- un soi de portocale albastre --> <nume>Blue Ory</nume> <descriere /> <!-- un element având conținut vid --> </produs> <produs>…</produs> </produse> date semi-structurate
  • 40. exemplu Informații despre o persoană via vocabularul FOAF (Friend Of A Friend) <foaf:Person rdf:ID="busaco"> <foaf:name>Sabin Buraga</foaf:name> <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/> <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/> </foaf:Person>
  • 41. exemplu Informații despre o persoană via vocabularul FOAF (Friend Of A Friend) <foaf:Person rdf:ID="busaco"> <foaf:name>Sabin Buraga</foaf:name> <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/> <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/> </foaf:Person> <foaf:Image rdf:about="http://www.flickr.com/.../foto.jpg"> <dc:date rdf:datatype="xsd:date">2010-05-12</dc:date> <dc:title xml:lang="ro">Prezentare la Summer Web 2010</dc:title> <foaf:depicts rdf:resource="#busaco"/> <foaf:maker rdf:resource="#tux"/> </foaf:Image>
  • 42. exemplu Informații despre o persoană via vocabularul FOAF (Friend Of A Friend) <foaf:Person rdf:ID="busaco"> <foaf:name>Sabin Buraga</foaf:name> <foaf:mbox rdf:resource="mailto:busaco@infoiasi.ro"/> <foaf:homepage rdf:resource="http://www.purl.org/net/busaco"/> </foaf:Person> <foaf:Image rdf:about="http://www.flickr.com/.../foto.jpg"> <dc:date rdf:datatype="xsd:date">2010-05-12</dc:date> <dc:title xml:lang="ro">Prezentare la Summer Web 2010</dc:title> <foaf:depicts rdf:resource="#busaco"/> <foaf:maker rdf:resource="#tux"/> </foaf:Image> spații de nume
  • 43. sintaxa XML (Extensible Markup Language) modelul de date XML (abstract) XML Information Set – Infoset transformări/prezentări de date XSL (Extensible Stylesheet Language) interogarea datelor XQuery – împreună cu XPath
  • 44. Structurarea/formatarea conținutului (formate de prezentare a datelor) în navigatorul Web: (X)HTML – Extensible HTML formulare electronice: XForms grafică vectorială: SVG (Scalable Vector Graphics) lumi tridimensionale: X3D (Extensible 3D Graphics) în medii fără fir: XHTML-MP (Mobile Profile), Tiny SVG
  • 45. Reprezentarea diferitelor tipuri de conținut expresii matematice: MathML multimedia sincronizată: SMIL (Synchronized Multimedia Integration Language) informații vocale: VoiceXML componente ale interfeței-utilizator: XUL (Extensible User-interface Language) informații cartografice: KML (Keyhole Markup Language)
  • 46. Reprezentarea diferitelor tipuri de conținut documentații: DocBook (Documentation Book) informații prelucrate de suite de birou – e.g., Open Office: ODF (Open Document Format) mediatizare (syndication) – fluxuri de știri: RSS (Really Simple Syndication), Atom reguli de specificare a proceselor de afaceri: BRML (Business Rules Markup Language)
  • 47. Multe alte limbaje la http://xml.coverpages.org/
  • 48. Așadar, până la urmă, ce este XML?
  • 49. XML unifică tehnologii privind: procesarea documentelor stocarea și prelucrarea tradițională a datelor accesul la Internet (Web)
  • 50. Internet XML Baze Docu- de date mente
  • 51. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate
  • 52. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate sistemele tradiționale (e.g., bazele de date relaționale) necesită specificarea unei scheme rigide în vederea stocării/accesării datelor
  • 53. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate sistemele tradiționale (e.g., bazele de date relaționale) necesită specificarea unei scheme rigide în vederea stocării/accesării datelor …un punct de vedere în general centralizat
  • 54. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate datele de pe Web sunt descentralizate, eterogene și pot fi, deseori, accesate – chiar modificate – de către oricine
  • 55. XML se pretează pentru stocarea (reprezentarea) datelor semi-structurate datele de pe Web sunt descentralizate, eterogene și pot fi, deseori, accesate – chiar modificate – de către oricine resursele disponibile la un moment dat nu sunt cunoscute a-priori
  • 56.
  • 58. Direcții de interes: comunicatii și interacțiune person-to-person instant messaging – e.g., Jabber via XMPP micro-blogging – exemplu: Twitter
  • 59. Direcții de interes: comunicatii și interacțiune computer-to-person syndication – via RSS/Atom recomandare de conținut – e.g., Zemanta integrare de sisteme sociale
  • 60.
  • 61. Direcții de interes: comunicatii și interacțiune computer-to-computer servicii Webaplicații hibride (mash-up-uri)
  • 62. Twitter + Google EarthTwittEarth
  • 63. Direcții de interes: publicare deschisă a datelor
  • 64. Direcții de interes: publicare deschisă a datelor modelare (semi)structurată utilizare de formate/vocabulare standardizate DCMI (Dublin Core Metadata Initiative), FOAF (Friend Of A Friend), DOAP (Description Of A Project), …
  • 65.
  • 66. Direcții de interes: publicare deschisă a datelor procesare independentă de platformă/limbaj
  • 67. Direcții de interes: publicare deschisă a datelor prezentări multiple ale conținutului, în diverse formate, pe sisteme eterogene
  • 68.
  • 69. Direcții de interes: modelarea proceselor (de afaceri, mai ales)
  • 70. Direcții de interes: modelarea proceselor (de afaceri, mai ales) dataflow/workflow BRML (Business Rules Markup Language), BPEL4WS (Business Process Execution Language for Web Services)
  • 71. Analizoare (procesoare, parsers) Apache Xerces, Expat, libxml,… Vizualizatoare și editoare structurale Firefox, Open Office, 4Suite, <oXygen />, Serna etc. Formatatoare – e.g., procesoare XSLT/XSL-FO Apache FOP, libxslt, Saxon,…
  • 72. Firefinder – folosirea interogărilor XPath în cadrul Firebug
  • 73. Instrumente de convertire Tidy Instrumente de arhivare XMill Sisteme de gestiune a bazelor de date XML Berkeley DB XML, eXist, Sedna etc.
  • 74.
  • 75. Există bune practici privind utilizarea și/sau modelarea documentelor XML?
  • 76. Cum trebuie structurat un document XML pentru a modela (stoca) anumite date sau meta-date?
  • 77. Recurgerea la șabloane de proiectare (design patterns)
  • 78. definiție Pattern (șablon) regulă ce exprimă o relație dintre un context, o problemă și o soluție Christopher Alexander, 1979
  • 79. Uzual, pattern-urile sunt utilizate în proiectarea de aplicații (object-oriented software design) pattern  “mind sized” chunk of information lucrarea de referință: E. Gamma et al., Design Patterns, Addison-Wesley, 1995
  • 80. Șabloanele de proiectare au fost folosite, ulterior, în cadrul interacțiunii om-calculator context: IA – Information Architecture resurse esențiale: J. Tidwell, Designing Interfaces, O’Reilly, 2005 www.hcipatterns.org www.welie.com/patterns
  • 81. folosirea șabloanelor de interacțiune
  • 82. Un șablon 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ă
  • 83. Un șablon nu reprezintă o regulă fermă uneori nu trebuie aplicatanti-patterns
  • 84. Este necesară adoptarea unui vocabular comun corespunzător domeniului problemei pattern language
  • 85. Șabloane privitoare la: proiectare arhitectură analiză dezvoltare structură comportament
  • 86. Ne interesează modelarea datelor pe baza familiei XML
  • 87. Recurgerea la șabloane structurale pentru proiectarea structurii unui document XML: lungimea documentului ușurința folosirii marcajelor ușurința procesării flexibilitatea consistența gradul de abstractizare
  • 88. exemplu Use XML determină situația în care XML este soluția viabilă de reprezentare a informațiilor (semi-)structurate
  • 89. exemplu Use XML reprezentări multiple: binar, CSV (Comma-Separated Values), HTML, baze de date relaționale, obiecte serializate, XML,…
  • 90. exemplu Use XML XML poate fi o soluție adecvată atunci când: datele (conținutul) trebuie separat(e) de formatare
  • 91. exemplu Use XML XML poate fi o soluție adecvată atunci când: datele trebuie partajate între aplicații, organizații,...
  • 93. exemplu Use XML XML poate fi o soluție adecvată atunci când: reprezentarea resurselor trebuie să poată fi înțeleasă și de oameni
  • 94. exemplu Use XML XML poate fi o soluție adecvată atunci când: reprezentarea trebuie procesată facil de calculator, independent de platformă și de limbaj
  • 95. exemplu Short Understandable Names numele marcajelor (elemente și atribute) trebuie să fie scurte și ușor de înțeles atât de autori, cât și de dezvoltatorii software-ului care va procesa documentul XML
  • 96. exemplu Short Understandable Names numele prea scurte sunt dificil de înțeles, dar reduc lungimea documentelor <DescriereaEchipamentului CodulEchipamentului="…" /> versus <desec c="…" /> <b> <ul> versus <video /> <table> <title>
  • 97. exemplu Short Understandable Names convenții de numire: <nume_tag> <NumeTag> <numeTag>
  • 98. exemplu Content Element problemă: numeroase elemente care apar pe același nivel în document și care pot fi divizate în grupuri distincte un container grupează elemente (copil) înrudite
  • 99. exemplu Content Element adaugă un nivel de abstractizare, gruparea elementelor oferind informații semantice suplimentare – e.g., asocierea de meta-date unui grup de elemente
  • 100. exemplu Content Element șabloane înrudite: Head-Body Collection Element
  • 101. exemplu Content Element <config> <config> <hardware> <ram>4096</ram> <ram>4096</ram> <hdd tip="...">500</hdd> <hdd tip="...">500</hdd> </hardware> <parser limbaj="Java"> <software> Xerces</parser> <parser limbaj="Java"> <editor>vim</editor> Xerces</parser> <parser limbaj="Perl"> <parser limbaj="Perl"> Expat</parser> Expat</parser> </config> <editor>vim</editor> </software> </config>
  • 102. exemplu Envelope oferă un tip de document care va desemna un „plic” în care se vor putea stoca date XML arbitrare
  • 103. exemplu Envelope oferă un tip de document care va desemna un „plic” în care se vor putea stoca date XML arbitrare problemă: diferite seturi de date trebuie livrate unui sistem, într-o manieră consistentă context: structura datelor din „plic” poate varia și nu este cunoscută la momentul creării sistemului
  • 104. exemplu Envelope permite separarea diferitelor tipuri de conținuturi, oferindu-se un mecanism de livrare a datelor XML „plicul” nu interferează cu conținutul propriu-zis al mesajului transmis
  • 105. exemplu Envelope exemplu tipic de utilizare: protocolul SOAP folosit la vehicularea datelor dintre servicii Web și clienți
  • 106. exemplu Envelope
  • 107. exemplu Role Attribute problemă: unui element îi trebuie precizat rolul (i.e. caracteristica definitorie)
  • 108. exemplu Role Attribute problemă: unui element îi trebuie precizat rolul (i.e. caracteristica definitorie) soluție: se poate folosi un atribut specificând rolul
  • 109. exemplu Role Attribute valorile atributului trebuie să fie mutual exclusive pentru un element XML, nu pot apărea de mai multe ori atribute având același nume <departament rol="cercetare">…</departament>
  • 110. exemplu Role Attribute exemple de utilizare în cadrul microformatelor www.microformats.org vezi direcția POSH (Plain Old Semantic HTML)
  • 111. Alte șabloane reutilizarea tipurilor de documente existente: Reuse Document Type
  • 112. Alte șabloane alegerea elementului/elementelor rădăcină: Multiple Document Types Multi Root Document Types
  • 113. Alte șabloane referențierea unor construcții: Declare Before First Use referențierea aceleiași informații în locuri multiple: Flyweight arbore (ierarhie) versus graf: Marketplace facilitează organizarea structurii documentului XML
  • 114. Alte șabloane facilitarea extinderii: Catch-All Element Role Attribute Extensible Content Model
  • 115. Alte șabloane asigurarea consistenței: Common Attributes Consistent Element Set
  • 116. Alte șabloane asocierea de meta-date: Separate Metadata & Data Metadata in Separate Document Head-Body Metadata First
  • 117. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web
  • 118. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web <preferinte tema="aqua" rezolutie="1024x768" browser="Firefox 3.6" />
  • 119. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web <preferinte tema="aqua" convenții de reprezentare ce nu pot fi deduse explicit rezolutie="1024x768" browser="Firefox 3.6" />
  • 120. studiu de caz Modelarea datelor (de la implicit la explicit) specificarea preferințelor utilizatorului în contextul navigării pe Web <preferinte tema="aqua" rezolutie="1024x768" browser="Firefox 3.6" dacă trebuie stocată o listă de navigatoare? />
  • 121. studiu de caz Modelarea datelor (de la implicit la explicit) recurgând la șabloaneo soluție mai bună <preferinte> <tema>aqua</tema> <rezolutie> <latime unit="px">1024</latime> <lungime unit="px">768</lungime> </rezolutie> <browser versiune="3.6">Firefox</browser> </preferinte>
  • 122.
  • 123. Resurse bibliografice S. Buraga, Tehnologii XML, Polirom, 2006 S. Buraga (coord.), Programarea în Web 2.0, Polirom, 2007 B. Daum, U. Merten, System Architecture with XML, Elsevier Science, 2003
  • 124. Situri Web de interes Consorțiul Web: www.w3.org Șabloane de proiectare XML: www.XMLPatterns.com XML.org: www.XML.org Instrumente XML open source oferite de fundația Apache: xml.apache.org
  • 125. Ă