Your SlideShare is downloading. ×
0
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

875

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
875
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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

×