SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
Corso di Basi di Dati e Laboratorio




                       PHP e XML
              Alfio Ferrara - Stefano Montanelli




 A.A. 2005/2006             Basi di Dati e Laboratorio   1




Introduzione
L’eXtensible Markup Language è un meta
linguaggio di marcatura che costituisce un
sottoinsieme proprio di SGML
 SGML
                                XML




                                              XHTML
                  HTML
                                                  …
 A.A. 2005/2006             Basi di Dati e Laboratorio   2




Esempio
<?xml version=“1.0” encoding=“UTF-8”>
<!–- XML document about books -->
<bookstore>
  <book genre=quot;autobiographyquot;>
     <title>
         The Autobiography of Benjamin Franklin
     </title>
     <author>
         <first-name>Benjamin</first-name>
         <last-name>Franklin</last-name>
     </author>
     <price coin=“USDollar”>8.99</price>
  </book>
  <book genre=quot;novel”>
     <title>The Confidence Man</title>
     …
  </book>
</bookstore>
 A.A. 2005/2006             Basi di Dati e Laboratorio   3




                                                             1
Vantaggi
•    Definizione formale della struttura del documento
•    Convalida della struttura
•    Flessibilità nel layout
•    Indipendenza dalla piattaforma
•    Definizione parziale della semantica del documento
•    Definizione di una base di dati semi-strutturata




Riferimento:
World Wide Web Consortium (W3C)
http://www.w3.org
    A.A. 2005/2006              Basi di Dati e Laboratorio              4




Sintassi XML
Dal punto di vista sintattico un documento
XML ben formato:
•    E’ composto da tag chiusi
•    I tag non sono sovrapposti
•    E’ presente la dichiarazione XML
•    Il documento ha una struttura ad albero
     composta da nodi dotati di una sola radice

Non è obbligatorio un DTD esplicito

    A.A. 2005/2006              Basi di Dati e Laboratorio              5




Sintassi XML – tag e attributi
      <?xml version=“1.0” encoding=“UTF-8”>

      <!–- XML document about books -->                           dichiarazione
      <bookstore>           attributo                        commento

            <book genre=quot;autobiographyquot;>                         apertura
                     <title>
                            The Autobiography of
        elemento                                                 contenuto
                            Benjamin Franklin
                     </title>
            </book>                                              chiusura
radice
      </bookstore>
    A.A. 2005/2006              Basi di Dati e Laboratorio              6




                                                                                  2
Sintassi XML– struttura del documento

La struttura di un documento XML è definita dal suo
DTD ed è costituita dalle relazioni fra gli elementi
Essi devono dare origine ad una struttura ad albero
ben formata:

                          radice


              nodo                         nodo


             foglia                foglia                   foglia


  A.A. 2005/2006            Basi di Dati e Laboratorio               7




Sintassi XML– esempio di struttura

La struttura di un documento XML è definita dal suo
DTD ed è costituita dalle relazioni fra gli elementi
Essi devono dare origine ad una struttura ad albero
ben formata:

                        bookstore


              book                         book


               title                 title               author


  A.A. 2005/2006            Basi di Dati e Laboratorio               8




Sintassi XML – tipologie di errore

Errori di struttura
                       radice


       nodo                       nodo                       nodo


                                                   foglia
      foglia


Errori di sintassi
<E1>testo<E2>testo</E2>
<E1>testo<E2>testo</E1></E2>
  A.A. 2005/2006            Basi di Dati e Laboratorio               9




                                                                         3
DTD – struttura logica
I DTD (Document Type Definition) consistono in
una grammatica formale attraverso la quale è
possibile definire:
• Elementi
    contenuto                         La gerarchia fra elementi viene
                                             definita ricorsivamente,
    occorrenze                              ponendo gli elementi figli
                                               come contenuto degli
• Attributi                                         elementi genitore
     tipo
     valori possibili
     opzionalità

     A.A. 2005/2006          Basi di Dati e Laboratorio          10




DTD – sintassi

 Le definizioni ammesse sono:
 •    Elementi            <!ELEMENT …>
 •    Attributi           <!ATTLIST …>
 •    Notazioni           <!NOTATION …>
 •    Entità              <!ENTITY …>

 Una notazione è un qualunque dato che non
 può essere interpretato (o non si vuole
 venga interpretato) dal processore XML.
 Può trattarsi sia di dati binari che di testo
     A.A. 2005/2006          Basi di Dati e Laboratorio          11




DTD – elementi compositi
Esempio:
<!ELEMENT book(title, author+, price?)>


 Elementi compositi       Elenco dei sotto-elementi


<!ELEMENT author(first-name+, last-name)>

Documento conforme                                        Occorrenze
<book >
  <title>Obsession</title>            Fattori di ripetizione
  <author>                            ?       Zero o più occorrenze
    <first-name>Henry</first-name>    +       Una o più occorrenze
    <first-name>James</first-name>    *       Zero o più occorrenze
    <last-name>York</last-name>       (a|b) a o b, ma non entrambi
  </author>                           (a,b) a e b in sequenza
</book>
     A.A. 2005/2006          Basi di Dati e Laboratorio          12




                                                                         4
DTD – elementi semplici
Esempi:
                                                         Testo
<!ELEMENT title(#PCDATA)>
                                                         Vuoto
<!ELEMENT image EMPTY>
                                                         Qualsiasi dato
<!ELEMENT comment ANY>

<!ELEMENT chapter(#PCDATA|section)+>



Un elemento può contenere sia dati semplici che sotto-
elementi


  A.A. 2005/2006            Basi di Dati e Laboratorio           13




DTD – attributi

 Esempi:
 <!ATTLIST image file NMTOKEN #IMPLIED
                   size CDATA “1MB”>
 <!ATTLIST book genre (autobiography|novel)
                   ISBN ID #REQUIRED
                   references IDREFS>
 <!ATTLIST chapter name CDATA #REQUIRED>




           Elemento Attributo Tipo Vincolo

  A.A. 2005/2006            Basi di Dati e Laboratorio           14




DTD – notazioni
Esempi:

<!NOTATION jpeg SYSTEM “C:APPSSHOWJPEG.EXE”>
<!NOTATION tiff SYSTEM “C:APPSSHOWTIFF.EXE”>
...
<!ELEMENT image EMPTY)>
<!ATTLIST image format NOTATION (jpeg | tiff)>




  A.A. 2005/2006            Basi di Dati e Laboratorio           15




                                                                          5
DTD – entità
Nel DTD:
<!ENTITY xml “eXtensible Markup Language”)>
...



Nel documento XML:
<chapter>
 <section>
   <name> related technologies </name>
       <paragraph> &xml; technology comprises ...
       </paragraph>
   ...
 </section>
</chapter>
  A.A. 2005/2006             Basi di Dati e Laboratorio            16




DTD – entità
Nel DTD:
<!ENTITY structure “(paragraph|list|table)”>
...
<!ELEMENT section (name, (%structure;)*>

Nel documento XML:
<chapter>
 <section>
   <name> related technologies </name>
       <paragraph> &xml; technology comprises ...
       </paragraph>
   ...
 </section>
</chapter>
  A.A. 2005/2006             Basi di Dati e Laboratorio            17




Dal DTD al documento XML
                                      <!DOCTYPE bookstore SYSTEM “books.dtd”>
Books.dtd                             <bookstore>
<!ENTITY structure                    <book genre=“technical” ISBN=“01”>
“(paragraph|list|table)”>
                                          <title> XML Companion </title>
<!ELEMENT bookstore(book+)>
<!ELEMENT book(title, author+,            <author>
chapter+)>                                  <first-name> Neil</first-name>
<!ATTLIST book genre (technical |           <last-name> Bradley</last-name>
fiction)
               ISBN ID #REQUIRED
                                          </author>
               references IDREFS>         <chapter name=“Introduction”>
<!ELEMENT title(#PCDATA)>                     XML raises as a standard ...
<!ELEMENT author(first-name+,
                                            <section>
last-name)>
<!ELEMENT first-name(#PCDATA)>                 <name> XML Technology </name>
<!ELEMENT last-name(#PCDATA)>                  ...
<!ELEMENT                                   </section>
chapter(#PCDATA|section)+>
<!ATTLIST chapter name CDATA
                                          </chapter>
#REQUIRED>                                ...
<!ELEMENT section (name,              </book>
(%structure;)*>                       ...
                                      </bookstore>
  A.A. 2005/2006             Basi di Dati e Laboratorio            18




                                                                                6
DTD – principi di progettazione

La definizione di un DTD per un insieme di
documenti XML può avere lo scopo di:
• Rappresentare documenti XML esistenti
• Definire uno standard per la
  documentazione in un dato contesto
• Rappresentare schemi di basi di dati
  esistenti



  A.A. 2005/2006       Basi di Dati e Laboratorio     19




DTD regole di definizione

La definizione di un DTD richiede una fase di
analisi del materiale documentale e dei dati
esistenti:
• per ogni elemento di un documento occorre chiedersi se
  può essere ripetuto o generalizzato, quale rapporto abbia
  con altri elementi, etc
• Definire lo scopo della marcatura, di carattere sintattico,
  strutturale o semantico
• Definire elementi e attributi possibili in un documento




  A.A. 2005/2006       Basi di Dati e Laboratorio     20




DTD regole di definizione

Si passa dunque a progettare il DTD
decidendo:
• Nomi semanticamente ricchi e brevi per
  i tag
• La struttura del documento (albero)
• Caratteristiche e vincoli per entità e
  attributi
• Gli elementi nell’ordine: notazioni,
  entità, elementi, attributi

  A.A. 2005/2006       Basi di Dati e Laboratorio     21




                                                                7
XML Schema – caratteristiche

 • Standard per la progettazione logica
 • Descrive la struttura di documenti XML
 • Utilizza la sintassi XML (è processabile da
   un parser XML)
 • Presenta alcune nuove caratteristiche
   rispetto ai DTD (tipi dei dati etc.)




  A.A. 2005/2006        Basi di Dati e Laboratorio       22




XML Schema – esempio
<schema>
 <complexType name=quot;tBookquot;>
   <element name=”titlequot; type=quot;string”
     minOccurs=’1' maxOccurs='1'/>
   <element name=”pages” type=quot;Integerquot;
     minOccurs='0' maxOccurs='1'/>
   <element name=”author” type=“tAuthorquot;
     minOccurs=‘1' maxOccurs=‘unbounded'/>
 </complexType>
 <element name=”bookquot; type=quot;tbookquot;/>
 <complexType name=“tTechnicalBook” base=“tBook”
        derivedBy=“extension”>
   <element name=”areaquot; type=quot;stringquot;
     minOccurs=’1' maxOccurs=’unbounded'/>
 </complexType>
 ...
</schema>
  A.A. 2005/2006        Basi di Dati e Laboratorio       23




Il modello DOM
 La struttura di un documento XML richiede che gli elementi
 e gli attributi che la compongono siano visibili ed accessibili
 per applicazioni esterne (ad esempio per le operazioni di
 parsing)
 Nasce il problema di una interfaccia (API) fra XML e le
 applicazioni esterne (a prescindere dal linguaggio in cui
 sono scritte)


 Per poter implementare nei diversi linguaggi delle interfacce
 verso XML occorre poter fare riferimento ad un protocollo
 univoco
 Nasce lo standard W3C DOM (Document Object Model)

  A.A. 2005/2006        Basi di Dati e Laboratorio       24




                                                                   8
DOM – caratteristiche
Modello ad oggetti di documenti XML

L’idea è quella che i diversi linguaggi (Java, C++,
Python, php etc.) mettano a disposizione dello
sviluppatore classi di oggetti utili a manipolare e
creare elementi e attributi XML




  A.A. 2005/2006                Basi di Dati e Laboratorio           25




DOM – modello di rappresentazione

Il DOM definisce una struttura ad albero per ogni
oggetto, allo scopo di rappresentarne le
caratteristiche:           <book type=“technical” ISBN=“01”>
                                              <title> XML Companion </title>
                                              <author>
                                               <first-name>Neil</first-name>
                      <book>                   <last-name>Bradley</last-name>
  Type =                                      </author>
“technical”                                   ...
                                             </book>

                   <title>       <author>
   ISBN =
    “01”
                                                   Sono previsti metodi
XML Companion         <first-name>                 per creare, manipolare,
                               <last-name>         avere informazioni da e
                                                   aggiornare i diversi
               Neil
                                 Bradley           oggetti
  A.A. 2005/2006                Basi di Dati e Laboratorio           26




XPATH – caratteristiche

Il linguaggio XPATH è nato per
rappresentare la posizione delle entità entro
la struttura di un documento XML. Tale
posizione è rappresentata da un percorso
che permette di individuare l’elemento
XPATH è utilizzato da altri linguaggi della
famiglia XML (XSLT ed altri) per fare
riferimento agli elementi del documento XML


  A.A. 2005/2006                Basi di Dati e Laboratorio           27




                                                                                9
XPATH – espressioni
 Un elemento può essere indicato da:
 percorsi assoluti                                     root
   /
                                                book      article
   /book/title
                                         title

 percorsi relativi
                                I percorsi relativi fanno riferimento
   title
                                al path che è necessario percorrere
   author/first-name            a partire dal contesto nel quali si è
   ../title                     collocati

 Una espressione XPATH indica un elemento se esiste un
 elemento del documento che la soddisfa
  A.A. 2005/2006          Basi di Dati e Laboratorio                28




XPATH – caratteri speciali
Sono disponibili caratteri speciali che indicano in astratto
parti dei percorsi

book/*/section                    (* indica un elemento qualsiasi)
                                  book/chapter/section

book//section        (indica il percorso fra book e section)
                         book/chapter/part/section


.//section                 (. indica la attuale posizione)




  A.A. 2005/2006          Basi di Dati e Laboratorio                29




XPATH – espressioni di ricerca

elementi alternativi
book/*/first-name | book/*/last-name




ricerca degli attributi
book@genre




  A.A. 2005/2006          Basi di Dati e Laboratorio                30




                                                                         10
XPATH – predicati
book[title = quot;XML Companionquot;]

book[@genre = quot;technicalquot;]

book/chapter[name=“help” | name=“Support”]

book/chapter[position() = 1]

book[count(chapter) < 10]

book[title contains(text(), quot;XMLquot;)]



  A.A. 2005/2006       Basi di Dati e Laboratorio       31




XSL – XML Style Sheet Language

Secondo lo stesso principio dei CSS i fogli di stile
XSL appongono una formattazione ad un
documento XML
Un processore XSL si occupa di mostrare il
documento XML secondo un layout coerente a
quello definito attraverso l’XSL
Le istruzioni XSL possono risiedere sia nel
documento XML che in un file esterno



  A.A. 2005/2006       Basi di Dati e Laboratorio       32




XSLT – XSL transformation
L’XSLT è lo standard proposto per la trasformazione di
documenti XML in altri formati (o in XML formattato)
attraverso l’uso di fogli di stile
Si prevede di usare un processore (xsltproc, 4XSLT, etc.)
che filtra il documento XML attraverso il foglio di stile XSL e,
sequenzialmente, produce in output il documento originale
ad eccezione delle parti su cui l’XSL definisce delle regole
di trasformazione
Queste ultime risultano trasformate nell’output




  A.A. 2005/2006       Basi di Dati e Laboratorio       33




                                                                   11
XSLT – processore XSLT
      input                                                   output


      XSLT
      Doc

                             XSL(T)                            text
                            Processor                          doc

                                                           oppure
      XML                                                  - XML
      Doc                                                  - HTML
                                                           - XML + XSL
                                                           - TeX
                                                           - ...

      A.A. 2005/2006        Basi di Dati e Laboratorio             34




XSLT – regole di trasformazione
<stylesheet xmlns = quot;http://www.w3.org/XSL/Transform/1.0quot;>


            Elemento root                         Namespace di default



<template match = quot;book/authorquot;>
...
</template>
                                           Indica l’elemento su cui va
...                                       Applicata la trasformazione
                                        (l’elemento viene individuato
<template match = quot;book/titlequot;>
...                                                     attraverso una
</template>                                       espressione XPATH)

</stylesheet>
                         Regola di
                         trasformazione

      A.A. 2005/2006        Basi di Dati e Laboratorio             35




XSLT – regole di trasformazione

                                       Processamento ricorsivo
<template match = quot;bookstorequot;>
<html>
<head><title> Technical Books </title></head>
 <apply-templates/>
</html>
</template>             Processamento anche dei nodi figli

                       Trasformazione basata su predicati
<template match = quot;bookquot;>
 <apply-template
     select=quot;book[@genre=quot;technicalquot;]quot;/>
 ...                                     Predicato XPath
</template>                              Che seleziona
                                                          i nodi figli
      A.A. 2005/2006        Basi di Dati e Laboratorio             36




                                                                         12
XSLT – regole di trasformazione

                             dichiarazione                      Variables

<variable name = quot;alignmentquot;> justify
</variable>
...                                   Valore della variabile
<template match = “sectionquot;>
  <block text-align = quot;{$alignment}quot;>
       <value-of select = quot;.quot;>
  </block>
</template>
                      Inserisce il contenuto dell’elemento


     L’XSLT prevede anche l’uso di elementi
     procedurali, controlli di flusso etc.
   A.A. 2005/2006            Basi di Dati e Laboratorio             37




XSLT – esempio di trasformazione
<testo>
 <autore>N. Bradley</autore>
 <titolo>Tutorial</titolo>
 <sottotitolo>XML</sottotitolo>                           Frammento XML
 <s1>…</s1>
</testo>
<xsl:stylesheet version=quot;1.0“ xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot;
<xsl:output    method=“htmlquot;  indent=quot;yesquot;   encoding=quot;ISO-8859-1quot;/>
<xsl:template match=quot;/quot;>
<html><head><title><xsl:value-of select=quot;titolo”></head>
<body><div>
<h1><xsl:value-of select=quot;//testo/titolo“/></h1>
<h2><xsl:value-of select=quot;//testo/sottotitolo“/></h2>
<span>di <i><xsl:value-of select=quot;//testo/autore“/></i></span></div> …
<xsl:for-each select=quot;//s1quot;>
<div><xsl:apply-templates/></div>
</xsl:for-each>
</body></html>
</xsl:template>                                           Frammento XSL
<xsl:template match=“s1quot;>… </xsl:template>
…
</xsl:stylesheet>
   A.A. 2005/2006            Basi di Dati e Laboratorio             38




XSLT – esempio di trasformazione

                                               Frammento di output
 <html>
 <head>
   <title>Tutorial</title>
 </head>
 <body>
   <div>
     <h1>Tutorial</h1>
     <h2>XML</h2>
     <span>di <i>N. Bradley</i></span>
   </div>
   <div>
   …
   </div>
 …
 </body></html>

   A.A. 2005/2006            Basi di Dati e Laboratorio             39




                                                                                 13
Corso di Basi di Dati e Laboratorio




                     XML con PHP
           Lettura e creazione di documenti XML




  A.A. 2005/2006             Basi di Dati e Laboratorio                          40




Parsing di XML

• SAX (Simple API for XML)
    – Il parser scorre il documento XML attivando
      degli eventi in corrispondenza dell’apertura e
      chiusura dei tag. Il programma si occupa di
      gestire gli eventi sollevati dal parser
• DOM (Document Object Model)
    – Il parser analizza l’intero documento e ne
      genera una rappresentazione ad albero in
      memoria. A quel punto il programma si occupa
      di navigare l’albero che rappresenta il
      documento

  A.A. 2005/2006             Basi di Dati e Laboratorio                          41




SAX e DOM
                                                                esempio
                                                                    a
                                                                        b

                         SAX                                            testo1
                                                                    a
<?xml version=“1.0” encoding=“ISO-8859-1” ?>                            b
<esempio>
         <a>                                                            testo2
                 <b>testo1</b>                                          c
         </a>
         <a>                                                            testo3
                 <b>testo2</b>
                 <c>testo3</c>
         </a>                                                 esempio
</esempio>
                        DOM                               a                 a

                                                          b        b                    c

                                                    testo1       testo2               testo3


  A.A. 2005/2006             Basi di Dati e Laboratorio                          42




                                                                                               14
Soluzioni PHP

• Librerie native
   – SAX
   – DOM
• SimpleXML
• PEAR




 A.A. 2005/2006      Basi di Dati e Laboratorio    43




SAX
• Creazione di un handle al parser XML
   – $xml = xml_parser_create(‘UTF-8’);
• Inizializzazione degli handler per gli eventi SAX
   – xml_set_element_handler($xml, ’opentag’,’closetag’);
   – xml_set_character_data_handler($xml, ’content’);
• Prima di eseguire il parsing occorre
  implementare gli handler specificati in
  precedenza
• Il parser ha delle opzioni, come ad esempio il
  folding
   – xml_parser_set_option($xml,
     XML_OPTION_CASE_FOLDING, false)

 A.A. 2005/2006      Basi di Dati e Laboratorio    44




Handler

• Esempio di implementazione degli handler
   – function opentag($xml,$tag,$attr){…}
   – function closetag($xml,$tag){…}
   – function content($xml,$data){…}




 A.A. 2005/2006      Basi di Dati e Laboratorio    45




                                                            15
DOM

• Inizializzazione di un nuovo oggetto DOM
   – $dom = new DomDocument();
   – $dom->load(‘file’);
• Individuazione del nodo radice
   – $root = $dom->documentElement;
• Individuazione dei nodi figli
   – $root->childNodes;
• Individuazione del tipo di nodo
   – $node->nodeType;

 A.A. 2005/2006   Basi di Dati e Laboratorio   46




Tipi di nodo

• I possibili tipi di nodo sono
   – XML_TEXT_NODE
   – XML_ELEMENT_NODE
• Altri metodi utili del nodo
   – nodeName
   – getAttributeNode
• Altri metodi della classe
   – getElementsByTagName


 A.A. 2005/2006   Basi di Dati e Laboratorio   47




Uso di XPath

• Un nodo può essere ricercato anche per
  mezzo di espressioni XPath
   – $x = new DomXPath($dom);
   – $nodes = $x->query(“interrogazione xpath”,
     $dom->documentElement);




 A.A. 2005/2006   Basi di Dati e Laboratorio   48




                                                    16
Creazione di documenti
• Creazione dell’elemento radice
   – $root->createElement(‘nome’);
   – $dom->appendChild($root);
• Creazione degli attributi
   – $node->setAttribute(“nome”, “valore”);
• Inserimento dei nodi
   – $node->appendChild($nuovo_nodo);
• Inserimento di nodi di testo
   – $nuovo_nodo->appendChild($dom->
     createTextNode(“contenuto”));
• Salvataggio
   – $dom->saveXML();
 A.A. 2005/2006       Basi di Dati e Laboratorio   49




Altre librerie di supporto

• Oltre alle principali PHP offre anche altre
  librerie di supporto
• Si ricordano in particolare:
   – SimpleXML
   – PEAR::XML_Tree e PEAR::XML_RSS
   – PEAR::XML_Transformer (alternativo a XSLT)
   – PEAR::SOAP




 A.A. 2005/2006       Basi di Dati e Laboratorio   50




                                                        17

Más contenido relacionado

Similar a Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L

Web base-01-html
Web base-01-htmlWeb base-01-html
Web base-01-htmlStudiabo
 
Presentazione Tesi Marco Ventura
Presentazione Tesi Marco VenturaPresentazione Tesi Marco Ventura
Presentazione Tesi Marco Venturaguest335584
 
Html base - classi prime - multimedia
Html base - classi prime - multimediaHtml base - classi prime - multimedia
Html base - classi prime - multimediaMatteo Ziviani
 
DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)Alessandro Giorgetti
 
Open web programming
Open web programmingOpen web programming
Open web programmingnois3lab
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
 
Tradurre e scrivere per il web (prima parte)
Tradurre e scrivere per il web (prima parte)Tradurre e scrivere per il web (prima parte)
Tradurre e scrivere per il web (prima parte)Andrea Spila
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerMatteo Magni
 
XML, TEI e codifica dei testi
XML, TEI e codifica dei testiXML, TEI e codifica dei testi
XML, TEI e codifica dei testiMarco Marcellini
 
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...KEA s.r.l.
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROIDPaolo Tosato
 
Progetto e sviluppo di un'applicazione per dispositivi mobili per la visualiz...
Progetto e sviluppo di un'applicazione per dispositivi mobili per la visualiz...Progetto e sviluppo di un'applicazione per dispositivi mobili per la visualiz...
Progetto e sviluppo di un'applicazione per dispositivi mobili per la visualiz...paolabassi91
 
Presentazione Corso - Parte 1
Presentazione Corso - Parte 1Presentazione Corso - Parte 1
Presentazione Corso - Parte 1Giorgio Carpoca
 
PostgreSQL : Architettura di storage
PostgreSQL : Architettura di storagePostgreSQL : Architettura di storage
PostgreSQL : Architettura di storageEnrico Pirozzi
 

Similar a Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L (20)

Web base-01-html
Web base-01-htmlWeb base-01-html
Web base-01-html
 
Presentazione Tesi Marco Ventura
Presentazione Tesi Marco VenturaPresentazione Tesi Marco Ventura
Presentazione Tesi Marco Ventura
 
Html base - classi prime - multimedia
Html base - classi prime - multimediaHtml base - classi prime - multimedia
Html base - classi prime - multimedia
 
DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)
 
Excel development e sql 2.1
Excel development e sql   2.1Excel development e sql   2.1
Excel development e sql 2.1
 
Open web programming
Open web programmingOpen web programming
Open web programming
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
 
Tradurre e scrivere per il web (prima parte)
Tradurre e scrivere per il web (prima parte)Tradurre e scrivere per il web (prima parte)
Tradurre e scrivere per il web (prima parte)
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 
XML, TEI e codifica dei testi
XML, TEI e codifica dei testiXML, TEI e codifica dei testi
XML, TEI e codifica dei testi
 
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...
Argo CMS: Get Started! - Guida rapida a come realizzare manuali, help online ...
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Progetto e sviluppo di un'applicazione per dispositivi mobili per la visualiz...
Progetto e sviluppo di un'applicazione per dispositivi mobili per la visualiz...Progetto e sviluppo di un'applicazione per dispositivi mobili per la visualiz...
Progetto e sviluppo di un'applicazione per dispositivi mobili per la visualiz...
 
Presentazione Corso - Parte 1
Presentazione Corso - Parte 1Presentazione Corso - Parte 1
Presentazione Corso - Parte 1
 
Oai Data Adapter
Oai Data AdapterOai Data Adapter
Oai Data Adapter
 
XML
XMLXML
XML
 
Basi Di Dati 01
Basi Di Dati 01Basi Di Dati 01
Basi Di Dati 01
 
PostgreSQL : Architettura di storage
PostgreSQL : Architettura di storagePostgreSQL : Architettura di storage
PostgreSQL : Architettura di storage
 
XSLT
XSLT XSLT
XSLT
 

Más de guestbe916c

Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H Pguestbe916c
 
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apacheguestbe916c
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M Sguestbe916c
 
Laboratorio Di Basi Di Dati 01 Introduzione
Laboratorio Di  Basi Di  Dati 01 IntroduzioneLaboratorio Di  Basi Di  Dati 01 Introduzione
Laboratorio Di Basi Di Dati 01 Introduzioneguestbe916c
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioniguestbe916c
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controlloguestbe916c
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Serverguestbe916c
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Clientguestbe916c
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionaleguestbe916c
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioniguestbe916c
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q Lguestbe916c
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazioneguestbe916c
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logicaguestbe916c
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M Lguestbe916c
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Queryguestbe916c
 

Más de guestbe916c (20)

Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
 
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
 
Laboratorio Di Basi Di Dati 01 Introduzione
Laboratorio Di  Basi Di  Dati 01 IntroduzioneLaboratorio Di  Basi Di  Dati 01 Introduzione
Laboratorio Di Basi Di Dati 01 Introduzione
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controllo
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioni
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettuale
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazione
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M L
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Query
 
Algebra
AlgebraAlgebra
Algebra
 

Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L

  • 1. Corso di Basi di Dati e Laboratorio PHP e XML Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Introduzione L’eXtensible Markup Language è un meta linguaggio di marcatura che costituisce un sottoinsieme proprio di SGML SGML XML XHTML HTML … A.A. 2005/2006 Basi di Dati e Laboratorio 2 Esempio <?xml version=“1.0” encoding=“UTF-8”> <!–- XML document about books --> <bookstore> <book genre=quot;autobiographyquot;> <title> The Autobiography of Benjamin Franklin </title> <author> <first-name>Benjamin</first-name> <last-name>Franklin</last-name> </author> <price coin=“USDollar”>8.99</price> </book> <book genre=quot;novel”> <title>The Confidence Man</title> … </book> </bookstore> A.A. 2005/2006 Basi di Dati e Laboratorio 3 1
  • 2. Vantaggi • Definizione formale della struttura del documento • Convalida della struttura • Flessibilità nel layout • Indipendenza dalla piattaforma • Definizione parziale della semantica del documento • Definizione di una base di dati semi-strutturata Riferimento: World Wide Web Consortium (W3C) http://www.w3.org A.A. 2005/2006 Basi di Dati e Laboratorio 4 Sintassi XML Dal punto di vista sintattico un documento XML ben formato: • E’ composto da tag chiusi • I tag non sono sovrapposti • E’ presente la dichiarazione XML • Il documento ha una struttura ad albero composta da nodi dotati di una sola radice Non è obbligatorio un DTD esplicito A.A. 2005/2006 Basi di Dati e Laboratorio 5 Sintassi XML – tag e attributi <?xml version=“1.0” encoding=“UTF-8”> <!–- XML document about books --> dichiarazione <bookstore> attributo commento <book genre=quot;autobiographyquot;> apertura <title> The Autobiography of elemento contenuto Benjamin Franklin </title> </book> chiusura radice </bookstore> A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  • 3. Sintassi XML– struttura del documento La struttura di un documento XML è definita dal suo DTD ed è costituita dalle relazioni fra gli elementi Essi devono dare origine ad una struttura ad albero ben formata: radice nodo nodo foglia foglia foglia A.A. 2005/2006 Basi di Dati e Laboratorio 7 Sintassi XML– esempio di struttura La struttura di un documento XML è definita dal suo DTD ed è costituita dalle relazioni fra gli elementi Essi devono dare origine ad una struttura ad albero ben formata: bookstore book book title title author A.A. 2005/2006 Basi di Dati e Laboratorio 8 Sintassi XML – tipologie di errore Errori di struttura radice nodo nodo nodo foglia foglia Errori di sintassi <E1>testo<E2>testo</E2> <E1>testo<E2>testo</E1></E2> A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  • 4. DTD – struttura logica I DTD (Document Type Definition) consistono in una grammatica formale attraverso la quale è possibile definire: • Elementi contenuto La gerarchia fra elementi viene definita ricorsivamente, occorrenze ponendo gli elementi figli come contenuto degli • Attributi elementi genitore tipo valori possibili opzionalità A.A. 2005/2006 Basi di Dati e Laboratorio 10 DTD – sintassi Le definizioni ammesse sono: • Elementi <!ELEMENT …> • Attributi <!ATTLIST …> • Notazioni <!NOTATION …> • Entità <!ENTITY …> Una notazione è un qualunque dato che non può essere interpretato (o non si vuole venga interpretato) dal processore XML. Può trattarsi sia di dati binari che di testo A.A. 2005/2006 Basi di Dati e Laboratorio 11 DTD – elementi compositi Esempio: <!ELEMENT book(title, author+, price?)> Elementi compositi Elenco dei sotto-elementi <!ELEMENT author(first-name+, last-name)> Documento conforme Occorrenze <book > <title>Obsession</title> Fattori di ripetizione <author> ? Zero o più occorrenze <first-name>Henry</first-name> + Una o più occorrenze <first-name>James</first-name> * Zero o più occorrenze <last-name>York</last-name> (a|b) a o b, ma non entrambi </author> (a,b) a e b in sequenza </book> A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  • 5. DTD – elementi semplici Esempi: Testo <!ELEMENT title(#PCDATA)> Vuoto <!ELEMENT image EMPTY> Qualsiasi dato <!ELEMENT comment ANY> <!ELEMENT chapter(#PCDATA|section)+> Un elemento può contenere sia dati semplici che sotto- elementi A.A. 2005/2006 Basi di Dati e Laboratorio 13 DTD – attributi Esempi: <!ATTLIST image file NMTOKEN #IMPLIED size CDATA “1MB”> <!ATTLIST book genre (autobiography|novel) ISBN ID #REQUIRED references IDREFS> <!ATTLIST chapter name CDATA #REQUIRED> Elemento Attributo Tipo Vincolo A.A. 2005/2006 Basi di Dati e Laboratorio 14 DTD – notazioni Esempi: <!NOTATION jpeg SYSTEM “C:APPSSHOWJPEG.EXE”> <!NOTATION tiff SYSTEM “C:APPSSHOWTIFF.EXE”> ... <!ELEMENT image EMPTY)> <!ATTLIST image format NOTATION (jpeg | tiff)> A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  • 6. DTD – entità Nel DTD: <!ENTITY xml “eXtensible Markup Language”)> ... Nel documento XML: <chapter> <section> <name> related technologies </name> <paragraph> &xml; technology comprises ... </paragraph> ... </section> </chapter> A.A. 2005/2006 Basi di Dati e Laboratorio 16 DTD – entità Nel DTD: <!ENTITY structure “(paragraph|list|table)”> ... <!ELEMENT section (name, (%structure;)*> Nel documento XML: <chapter> <section> <name> related technologies </name> <paragraph> &xml; technology comprises ... </paragraph> ... </section> </chapter> A.A. 2005/2006 Basi di Dati e Laboratorio 17 Dal DTD al documento XML <!DOCTYPE bookstore SYSTEM “books.dtd”> Books.dtd <bookstore> <!ENTITY structure <book genre=“technical” ISBN=“01”> “(paragraph|list|table)”> <title> XML Companion </title> <!ELEMENT bookstore(book+)> <!ELEMENT book(title, author+, <author> chapter+)> <first-name> Neil</first-name> <!ATTLIST book genre (technical | <last-name> Bradley</last-name> fiction) ISBN ID #REQUIRED </author> references IDREFS> <chapter name=“Introduction”> <!ELEMENT title(#PCDATA)> XML raises as a standard ... <!ELEMENT author(first-name+, <section> last-name)> <!ELEMENT first-name(#PCDATA)> <name> XML Technology </name> <!ELEMENT last-name(#PCDATA)> ... <!ELEMENT </section> chapter(#PCDATA|section)+> <!ATTLIST chapter name CDATA </chapter> #REQUIRED> ... <!ELEMENT section (name, </book> (%structure;)*> ... </bookstore> A.A. 2005/2006 Basi di Dati e Laboratorio 18 6
  • 7. DTD – principi di progettazione La definizione di un DTD per un insieme di documenti XML può avere lo scopo di: • Rappresentare documenti XML esistenti • Definire uno standard per la documentazione in un dato contesto • Rappresentare schemi di basi di dati esistenti A.A. 2005/2006 Basi di Dati e Laboratorio 19 DTD regole di definizione La definizione di un DTD richiede una fase di analisi del materiale documentale e dei dati esistenti: • per ogni elemento di un documento occorre chiedersi se può essere ripetuto o generalizzato, quale rapporto abbia con altri elementi, etc • Definire lo scopo della marcatura, di carattere sintattico, strutturale o semantico • Definire elementi e attributi possibili in un documento A.A. 2005/2006 Basi di Dati e Laboratorio 20 DTD regole di definizione Si passa dunque a progettare il DTD decidendo: • Nomi semanticamente ricchi e brevi per i tag • La struttura del documento (albero) • Caratteristiche e vincoli per entità e attributi • Gli elementi nell’ordine: notazioni, entità, elementi, attributi A.A. 2005/2006 Basi di Dati e Laboratorio 21 7
  • 8. XML Schema – caratteristiche • Standard per la progettazione logica • Descrive la struttura di documenti XML • Utilizza la sintassi XML (è processabile da un parser XML) • Presenta alcune nuove caratteristiche rispetto ai DTD (tipi dei dati etc.) A.A. 2005/2006 Basi di Dati e Laboratorio 22 XML Schema – esempio <schema> <complexType name=quot;tBookquot;> <element name=”titlequot; type=quot;string” minOccurs=’1' maxOccurs='1'/> <element name=”pages” type=quot;Integerquot; minOccurs='0' maxOccurs='1'/> <element name=”author” type=“tAuthorquot; minOccurs=‘1' maxOccurs=‘unbounded'/> </complexType> <element name=”bookquot; type=quot;tbookquot;/> <complexType name=“tTechnicalBook” base=“tBook” derivedBy=“extension”> <element name=”areaquot; type=quot;stringquot; minOccurs=’1' maxOccurs=’unbounded'/> </complexType> ... </schema> A.A. 2005/2006 Basi di Dati e Laboratorio 23 Il modello DOM La struttura di un documento XML richiede che gli elementi e gli attributi che la compongono siano visibili ed accessibili per applicazioni esterne (ad esempio per le operazioni di parsing) Nasce il problema di una interfaccia (API) fra XML e le applicazioni esterne (a prescindere dal linguaggio in cui sono scritte) Per poter implementare nei diversi linguaggi delle interfacce verso XML occorre poter fare riferimento ad un protocollo univoco Nasce lo standard W3C DOM (Document Object Model) A.A. 2005/2006 Basi di Dati e Laboratorio 24 8
  • 9. DOM – caratteristiche Modello ad oggetti di documenti XML L’idea è quella che i diversi linguaggi (Java, C++, Python, php etc.) mettano a disposizione dello sviluppatore classi di oggetti utili a manipolare e creare elementi e attributi XML A.A. 2005/2006 Basi di Dati e Laboratorio 25 DOM – modello di rappresentazione Il DOM definisce una struttura ad albero per ogni oggetto, allo scopo di rappresentarne le caratteristiche: <book type=“technical” ISBN=“01”> <title> XML Companion </title> <author> <first-name>Neil</first-name> <book> <last-name>Bradley</last-name> Type = </author> “technical” ... </book> <title> <author> ISBN = “01” Sono previsti metodi XML Companion <first-name> per creare, manipolare, <last-name> avere informazioni da e aggiornare i diversi Neil Bradley oggetti A.A. 2005/2006 Basi di Dati e Laboratorio 26 XPATH – caratteristiche Il linguaggio XPATH è nato per rappresentare la posizione delle entità entro la struttura di un documento XML. Tale posizione è rappresentata da un percorso che permette di individuare l’elemento XPATH è utilizzato da altri linguaggi della famiglia XML (XSLT ed altri) per fare riferimento agli elementi del documento XML A.A. 2005/2006 Basi di Dati e Laboratorio 27 9
  • 10. XPATH – espressioni Un elemento può essere indicato da: percorsi assoluti root / book article /book/title title percorsi relativi I percorsi relativi fanno riferimento title al path che è necessario percorrere author/first-name a partire dal contesto nel quali si è ../title collocati Una espressione XPATH indica un elemento se esiste un elemento del documento che la soddisfa A.A. 2005/2006 Basi di Dati e Laboratorio 28 XPATH – caratteri speciali Sono disponibili caratteri speciali che indicano in astratto parti dei percorsi book/*/section (* indica un elemento qualsiasi) book/chapter/section book//section (indica il percorso fra book e section) book/chapter/part/section .//section (. indica la attuale posizione) A.A. 2005/2006 Basi di Dati e Laboratorio 29 XPATH – espressioni di ricerca elementi alternativi book/*/first-name | book/*/last-name ricerca degli attributi book@genre A.A. 2005/2006 Basi di Dati e Laboratorio 30 10
  • 11. XPATH – predicati book[title = quot;XML Companionquot;] book[@genre = quot;technicalquot;] book/chapter[name=“help” | name=“Support”] book/chapter[position() = 1] book[count(chapter) < 10] book[title contains(text(), quot;XMLquot;)] A.A. 2005/2006 Basi di Dati e Laboratorio 31 XSL – XML Style Sheet Language Secondo lo stesso principio dei CSS i fogli di stile XSL appongono una formattazione ad un documento XML Un processore XSL si occupa di mostrare il documento XML secondo un layout coerente a quello definito attraverso l’XSL Le istruzioni XSL possono risiedere sia nel documento XML che in un file esterno A.A. 2005/2006 Basi di Dati e Laboratorio 32 XSLT – XSL transformation L’XSLT è lo standard proposto per la trasformazione di documenti XML in altri formati (o in XML formattato) attraverso l’uso di fogli di stile Si prevede di usare un processore (xsltproc, 4XSLT, etc.) che filtra il documento XML attraverso il foglio di stile XSL e, sequenzialmente, produce in output il documento originale ad eccezione delle parti su cui l’XSL definisce delle regole di trasformazione Queste ultime risultano trasformate nell’output A.A. 2005/2006 Basi di Dati e Laboratorio 33 11
  • 12. XSLT – processore XSLT input output XSLT Doc XSL(T) text Processor doc oppure XML - XML Doc - HTML - XML + XSL - TeX - ... A.A. 2005/2006 Basi di Dati e Laboratorio 34 XSLT – regole di trasformazione <stylesheet xmlns = quot;http://www.w3.org/XSL/Transform/1.0quot;> Elemento root Namespace di default <template match = quot;book/authorquot;> ... </template> Indica l’elemento su cui va ... Applicata la trasformazione (l’elemento viene individuato <template match = quot;book/titlequot;> ... attraverso una </template> espressione XPATH) </stylesheet> Regola di trasformazione A.A. 2005/2006 Basi di Dati e Laboratorio 35 XSLT – regole di trasformazione Processamento ricorsivo <template match = quot;bookstorequot;> <html> <head><title> Technical Books </title></head> <apply-templates/> </html> </template> Processamento anche dei nodi figli Trasformazione basata su predicati <template match = quot;bookquot;> <apply-template select=quot;book[@genre=quot;technicalquot;]quot;/> ... Predicato XPath </template> Che seleziona i nodi figli A.A. 2005/2006 Basi di Dati e Laboratorio 36 12
  • 13. XSLT – regole di trasformazione dichiarazione Variables <variable name = quot;alignmentquot;> justify </variable> ... Valore della variabile <template match = “sectionquot;> <block text-align = quot;{$alignment}quot;> <value-of select = quot;.quot;> </block> </template> Inserisce il contenuto dell’elemento L’XSLT prevede anche l’uso di elementi procedurali, controlli di flusso etc. A.A. 2005/2006 Basi di Dati e Laboratorio 37 XSLT – esempio di trasformazione <testo> <autore>N. Bradley</autore> <titolo>Tutorial</titolo> <sottotitolo>XML</sottotitolo> Frammento XML <s1>…</s1> </testo> <xsl:stylesheet version=quot;1.0“ xmlns:xsl=quot;http://www.w3.org/1999/XSL/Transformquot; <xsl:output method=“htmlquot; indent=quot;yesquot; encoding=quot;ISO-8859-1quot;/> <xsl:template match=quot;/quot;> <html><head><title><xsl:value-of select=quot;titolo”></head> <body><div> <h1><xsl:value-of select=quot;//testo/titolo“/></h1> <h2><xsl:value-of select=quot;//testo/sottotitolo“/></h2> <span>di <i><xsl:value-of select=quot;//testo/autore“/></i></span></div> … <xsl:for-each select=quot;//s1quot;> <div><xsl:apply-templates/></div> </xsl:for-each> </body></html> </xsl:template> Frammento XSL <xsl:template match=“s1quot;>… </xsl:template> … </xsl:stylesheet> A.A. 2005/2006 Basi di Dati e Laboratorio 38 XSLT – esempio di trasformazione Frammento di output <html> <head> <title>Tutorial</title> </head> <body> <div> <h1>Tutorial</h1> <h2>XML</h2> <span>di <i>N. Bradley</i></span> </div> <div> … </div> … </body></html> A.A. 2005/2006 Basi di Dati e Laboratorio 39 13
  • 14. Corso di Basi di Dati e Laboratorio XML con PHP Lettura e creazione di documenti XML A.A. 2005/2006 Basi di Dati e Laboratorio 40 Parsing di XML • SAX (Simple API for XML) – Il parser scorre il documento XML attivando degli eventi in corrispondenza dell’apertura e chiusura dei tag. Il programma si occupa di gestire gli eventi sollevati dal parser • DOM (Document Object Model) – Il parser analizza l’intero documento e ne genera una rappresentazione ad albero in memoria. A quel punto il programma si occupa di navigare l’albero che rappresenta il documento A.A. 2005/2006 Basi di Dati e Laboratorio 41 SAX e DOM esempio a b SAX testo1 a <?xml version=“1.0” encoding=“ISO-8859-1” ?> b <esempio> <a> testo2 <b>testo1</b> c </a> <a> testo3 <b>testo2</b> <c>testo3</c> </a> esempio </esempio> DOM a a b b c testo1 testo2 testo3 A.A. 2005/2006 Basi di Dati e Laboratorio 42 14
  • 15. Soluzioni PHP • Librerie native – SAX – DOM • SimpleXML • PEAR A.A. 2005/2006 Basi di Dati e Laboratorio 43 SAX • Creazione di un handle al parser XML – $xml = xml_parser_create(‘UTF-8’); • Inizializzazione degli handler per gli eventi SAX – xml_set_element_handler($xml, ’opentag’,’closetag’); – xml_set_character_data_handler($xml, ’content’); • Prima di eseguire il parsing occorre implementare gli handler specificati in precedenza • Il parser ha delle opzioni, come ad esempio il folding – xml_parser_set_option($xml, XML_OPTION_CASE_FOLDING, false) A.A. 2005/2006 Basi di Dati e Laboratorio 44 Handler • Esempio di implementazione degli handler – function opentag($xml,$tag,$attr){…} – function closetag($xml,$tag){…} – function content($xml,$data){…} A.A. 2005/2006 Basi di Dati e Laboratorio 45 15
  • 16. DOM • Inizializzazione di un nuovo oggetto DOM – $dom = new DomDocument(); – $dom->load(‘file’); • Individuazione del nodo radice – $root = $dom->documentElement; • Individuazione dei nodi figli – $root->childNodes; • Individuazione del tipo di nodo – $node->nodeType; A.A. 2005/2006 Basi di Dati e Laboratorio 46 Tipi di nodo • I possibili tipi di nodo sono – XML_TEXT_NODE – XML_ELEMENT_NODE • Altri metodi utili del nodo – nodeName – getAttributeNode • Altri metodi della classe – getElementsByTagName A.A. 2005/2006 Basi di Dati e Laboratorio 47 Uso di XPath • Un nodo può essere ricercato anche per mezzo di espressioni XPath – $x = new DomXPath($dom); – $nodes = $x->query(“interrogazione xpath”, $dom->documentElement); A.A. 2005/2006 Basi di Dati e Laboratorio 48 16
  • 17. Creazione di documenti • Creazione dell’elemento radice – $root->createElement(‘nome’); – $dom->appendChild($root); • Creazione degli attributi – $node->setAttribute(“nome”, “valore”); • Inserimento dei nodi – $node->appendChild($nuovo_nodo); • Inserimento di nodi di testo – $nuovo_nodo->appendChild($dom-> createTextNode(“contenuto”)); • Salvataggio – $dom->saveXML(); A.A. 2005/2006 Basi di Dati e Laboratorio 49 Altre librerie di supporto • Oltre alle principali PHP offre anche altre librerie di supporto • Si ricordano in particolare: – SimpleXML – PEAR::XML_Tree e PEAR::XML_RSS – PEAR::XML_Transformer (alternativo a XSLT) – PEAR::SOAP A.A. 2005/2006 Basi di Dati e Laboratorio 50 17