CORSO ITP Informatica Gestionale Modulo – Rappresentazione dei dati

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

I Namespace Mario Arrigoni Neri.
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
HTML+XML= XHTML Il ritorno al futuro del WEB A cura di Barbara Lotti.
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
Introduzione ai CSS. Cosa è successo allHTML Perché usare i CSS Introduzione ai CSS Fondamenti.
PHP.
06/01/2014 M.C. De Vivo Laboratorio informatico Banche dati off line Tatoo Banche dati off line Richiamare il programma cliccando.
CORSO ITP Informatica Gestionale Modulo – Le basi di dati
XSLT (eXtensible Stylesheet Language Transformation) Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis
XSLT UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
Query OQL e XQUERY a confronto
Numerico-Vespignani, Informatica per le scienze umanistiche, Il Mulino, La rappresentazione dellinformazione testuale e i linguaggi di codifica.
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
TW Analisi dei documenti n Classificazione dei componenti n Selezione dei componenti, costruzione della gerarchia, dei blocchi informativi e degli elementi.
Laboratorio di Applicazioni Informatiche II mod. A
Iterazione enumerativa (for)
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
XML e XSL. XSL - eXtensible Stylesheet Language XSL è un linguaggio di annotazione che serve a "trasformare" la struttura di un documento in formato XML.
XML e DTD. –il "PROLOG contiene: dichiarazione della versione di XML; commenti (facoltativi); dichiarazione del DOCUMENT TYPE. –il "DOCUMENT INSTANCE.
Basi di Dati II Sara Romano
Un’introduzione a HTML (I)
Introduzione e nozioni fondamentali di sintassi
Linguaggi di markup1 LINGUAGGI DI MARKUP. Linguaggi di markup2 Documenti su Internet Internet permette (tra laltro) di accedere a documenti remoti In.
Il linguaggio ASP Lezione 4 Manipolare i database con ASP Lutilizzo dei FORM per laggiunta dei dati.
Lezione 2 Programmare in ASP
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... XML Elaborazione di Franco Grivet Chin.
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
Namespace Spazio dei nomi Ing. Luca Sabatucci. Scopo I Namespace servono a: I Namespace servono a: distinguere tra elementi e attributi con lo stesso.
Informatica Umanistica A.A. 2009/2010 eXtensible Markup Language (XML)
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.
Linguaggi di codifica.
1 IsaPress. 2 Obiettivo Realizzare uno strumento di facile uso per estrarre il contenuto da documenti binari di vario tipo in un formato utile per l'impaginazione.
1 IsaPress. 2 Obiettivo Realizzare uno strumento di facile uso per estrarre il contenuto da documenti binari di vario tipo in un formato utile per l'impaginazione.
HyperText Markup Language 17-23/6/08 Informatica applicata B Cristina Bosco.
CORSO avanzato INFORMATICA
CORSO AVANZATO INFORMATICA
Il metalinguaggio XML: la nuova frontiera per la codifica dellinformazione Relatore: Ing. Marco Porta Tesi di Laurea di: Andrea Mocchi ANNO ACCADEMICO.
Creare pagine web Xhtlm. Struttura di una pagina.
HTML Lezione 3 Stili.
Introduzione alla programmazione web
Il linguaggio HTML Antonella Schiavon – settembre 2008 rev. 1 – aprile 2011.
HTML HyperText Markup Language Linguaggio per marcare un’Ipertesto
Programma di Informatica Classi Prime
Introduzione a XML applicazioni in open archives Azalea III Incontro di Formazione, Roma 2-3 febbraio 2004.
INTRODUZIONE A JAVASCRIPT
Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi  Lezione 02: 06/03martedi  Lezione 03: 13/03martedi  Lezione 04:
Informatica Umanistica A.A. 2007/2008 LEZIONE 4 eXtensible Markup Language (XML) INTRODUZIONE.
XHTML Corso linguaggi per il web a.s. 2011/2012 ITIS A. Righi – Corsico Relatore – Aldo Guastafierro.
CORSO Di WEB DESIGN prof. Leonardo Moriello
Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi  Lezione 02: 06/03martedi  Lezione 03: 13/03martedi  Lezione 04:
Impostare i caratteri. Le prime versioni del linguaggio HTML così come le prime versioni dei browser consentivano unicamente la scelta tra due tipi di.
Internet e HTML Diffusione di informazioni mediante la rete Internet.
Introduzione a Javascript
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language.
Carluccio Antonio Carluccio Alessandra Caricola Giovanni Vizzino Anna Università degli Studi di Bari.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Cenni Su SGML, HTML, XML SGML (Standard Generalized Markup Language) è il padre di tutti i linguaggi "Markup" – Lo svantaggio è la "pesantezza" dei suoi.
Ingegneria del software Modulo 3 -Tecniche di implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
2 Indice Un esempio Che cosa è A cosa serve Confronto con HTML Punti di forza La sua struttura.
Il linguaggio XML per la rappresentazione dei dati Lo Extensible Markup Language o XML è stato concepito da un gruppo di lavoro del World Wide Web Consortium.
1 Il linguaggio XML per la rappresentazione dei dati Lo Extensible Markup Language o XML è stato concepito da un gruppo di lavoro del World Wide Web Consortium.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

CORSO ITP Informatica Gestionale Modulo – Rappresentazione dei dati Romeo Pruno University of Camerino romeo.pruno@unicam.it https://unicam.it/~romeo.pruno http://blogs.devleap.com/romeopruno

Dott. Romeo Pruno – romeo.pruno@unicam.it Agenda Introduzione Storia ed applicazioni di XML Un po’ di storia Il mondo di XML: XHTML ed oltre Documenti dati e rappresentazioni Struttura dei documenti XML Documenti ben formati Documenti validi Definizione ed applicazione di grammatiche DTD XML Schema Namespace Modelli di presentazione di documenti XML XML & CSS XSL eXtendible Stylesheet Language XPath Fogli di stile XSLT Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Dott. Romeo Pruno – romeo.pruno@unicam.it Introduzione L’eXtensible Markup Language (XML) non è l’ennesimo linguaggio di markup né l’evoluzione dell’ormai vecchio, ma sempre vivo, HTML. Esso è un meta-linguaggio di markup, cioè un linguaggio che permette di definire altri linguaggi di markup. A differenza di HTML, XML non ha tag predefiniti e non serve per definire pagine Web né per programmare. Esso serve esclusivamente per definire altri linguaggi. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Dott. Romeo Pruno – romeo.pruno@unicam.it Introduzione In realtà, XML di per sé non è altro che un insieme standard di regole sintattiche per modellare la struttura di documenti e dati. Questo insieme di regole, dette più propriamente specifiche, definiscono le modalità secondo cui è possibile crearsi un proprio linguaggio di markup. Le specifiche ufficiali sono state definite dal W3C (Worl Wide Web Consortium) e sono consultabili a partire dall’indirizzo http://www.w3.org/XML Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Dott. Romeo Pruno – romeo.pruno@unicam.it Introduzione Ma perché si sente tanto parlare di XML? Perché tutti ne parlano quasi come una rivoluzione in ambito informatico? Cosa è possibile fare con questo meta-linguaggio? Come è possibile definire ed utilizzare un proprio linguaggio di markup? Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Dott. Romeo Pruno – romeo.pruno@unicam.it Agenda Introduzione Storia ed applicazioni di XML Un po’ di storia Il mondo di XML: XHTML ed oltre Documenti dati e rappresentazioni Struttura dei documenti XML Documenti ben formati Documenti validi Definizione ed applicazione di grammatiche DTD XML Schema Namespace Modelli di presentazione di documenti XML XML & CSS XSL eXtendible Stylesheet Language XPath Fogli di stile XSLT Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Storia ed applicazioni di XML SGML (Standard Generalized Markup Language), un meta-linguaggio per la definizione di linguaggi di markup. Questo linguaggio risultava però troppo complesso per gli scopi della ricerca e pertanto fu snellito da alcune caratteristiche e semplificato in alcuni punti per renderlo adatto allo scopo. Nel dicembre ’97 le specifiche di XML venivano pubblicate come Proposed Recommendation. Tuttavia, anche se gli obiettivi iniziali della nascita di XML erano rivolti alla soluzione di un problema di standard per il Web, ben presto ci si accorse che XML non era limitato al solo contesto Web. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Storia ed applicazioni di XML Esso risulta essere abbastanza generale per poter essere utilizzato nei più disparati contesti: definizione della struttura di documenti scambio di informazioni tra sistemi diversi rappresentazione di immagini definizione di formati di dati Questo aspetto rappresentava una rivoluzione. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Storia ed applicazioni di XML A questo punto, dopo aver conosciuto la storia dell’origine di XML, la domanda che generalmente viene fatta è: allora XML sostituirà l’HTML? Anche se il dubbio risulta legittimo, possiamo dire che XML e HTML non sono in diretta concorrenza. tutti i tag e i loro attributi sono espressi in minuscolo è obbligatorio inserire il tag di chiusura (ad esempio, se usiamo <p> dobbiamo chiudere con </p>) i valori degli attributi devono essere specificati tra doppi apici o singoli apici (ad esempio, <table width="30%">) i tag vuoti seguono la cosiddetta sintassi minimizzata (per esempio, il tag <br> diventa <br/>) utilizzare l'attributo id al posto di name per identificare gli elementi di un documento Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Storia ed applicazioni di XML Abbiamo detto all’inizio che XML è un insieme standard di regole sintattiche per modellare la struttura di documenti e dati. Due parole di questa definizione sono di fondamentale importanza: standard e struttura. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Storia ed applicazioni di XML Standard Le regole in questione sono standard e questo garantisce l’indipendenza da una specifica piattaforma hardware e software o da uno specifico produttore. Pertanto, se definiamo un nostro linguaggio di markup tramite XML possiamo stare sicuri che esistono già strumenti per le diverse piattaforme in grado di comprendere ed elaborare correttamente il nostro linguaggio. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Storia ed applicazioni di XML Regole Le regole di XML consentono di definire la struttura di documenti e dati, ma non altre caratteristiche come il tipo o la presentazione dei dati o documenti. Questo compito non è di XML ma è delegato ad altre tecnologie, alcune delle quali sono basate sullo stesso XML, a dimostrarne la flessibilità ed universalità. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Storia ed applicazioni di XML Regole Viene fuori quindi che intorno ad XML ruotano una serie di tecnologie e linguaggi che supportano l’uso di questo meta-linguaggio e lo rendono affidabile e flessibile per gli usi più disparati. DTD e XML Schema possiamo creare grammatiche che definiscono formalmente la struttura dei dati e ne consentono di verificare la correttezza CSS, XSL, XSL-FO possiamo controllare la presentazione dei dati e la loro trasformazione in altri formati; XLink e XPointer possiamo collegare documenti XML mentre con XQuery e XQL possiamo estrarre informazioni secondo determinati criteri. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Dott. Romeo Pruno – romeo.pruno@unicam.it Agenda Introduzione Storia ed applicazioni di XML Un po’ di storia Il mondo di XML: XHTML ed oltre Documenti dati e rappresentazioni Struttura dei documenti XML Documenti ben formati Documenti validi Definizione ed applicazione di grammatiche DTD XML Schema Namespace Modelli di presentazione di documenti XML XML & CSS XSL eXtendible Stylesheet Language XPath Fogli di stile XSLT Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni Concretamente, un documento XML è un file di testo che contiene una serie di tag, attributi e testo secondo regole sintattiche ben definite. Un documento XML è intrinsecamente caratterizzato da una struttura gerarchica. Esso è composto da componenti denominati elementi. Ciascun elemento rappresenta un componente logico del documento e può contenere altri elementi (sottoelementi) o del testo. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni Gli elementi possono avere associate altre informazioni che ne descrivono le proprietà. Queste informazioni sono chiamate attributi. L’organizzazione degli elementi segue un ordine gerarchico o arboreo che prevede un elemento principale, chiamato root element o semplicemente root o radice. La radice contiene l’insieme degli altri elementi del documento. Possiamo rappresentare graficamente la struttura di un documento XML tramite un albero, generalmente noto come document tree. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni Per fissare le idee prendiamo in considerazione la rappresentazione di un generico articolo a carattere tecnico e proviamo a rappresentarlo secondo il modello XML, come mostrato in figura. titolo articolo titolo titolo titolo paragrafo paragrafo paragrafo testo testo testo file immagine codice Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni <?xml version="1.0" ?> <articolo titolo="Titolo dell’articolo"> <paragrafo titolo="Titolo del primo paragrafo"> <testo> Blocco di testo del primo paragrafo </testo> <immagine file="immagine1.jpg"> </immagine> </paragrafo> <paragrafo titolo="Titolo del secondo paragrafo"> Blocco di testo del secondo paragrafo <codice> Esempio di codice </codice> Altro blocco di testo <paragrafo tipo="bibliografia"> Riferimento ad un articolo </articolo> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni <?xml version="1.0" ?> Il corpo vero e proprio del documento segue questa prima riga, rappresentando gli elementi tramite tag, cioè sequenze di caratteri delimitate dai segni '<' e '>' proprio come avviene per l’HTML. A differenza dell’HTML in cui i tag sono predefiniti, XML ci lascia liberi di definire i tag che vogliamo. Per specificare un attributo per un elemento inseriamo il nome dell’attributo con il relativo valore all’interno del tag di apertura dell’elemento. L’organizzazione gerarchica degli elementi viene rappresentata in XML tramite il loro annidamento. Alcuni elementi possono essere vuoti, cioè possono essere privi di contenuto testuale. A differenza di quanto avviene per l’HTML, che consente l’utilizzo di elementi senza tag di chiusura, XML prevede che vengano sempre specificati i tag di apertura e chiusura. E’ questo il caso del tag immagine. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni <immagine file="immagine1.jpg" /> Tuttavia, XML prevede una sintassi abbreviata per gli elementi vuoti che evita di dover specificare il tag di chiusura. E’ infatti sufficiente terminare il tag di apertura con la sequenza di caratteri "/>", come nel seguente esempio: Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni XML richiede un certo rigore sugli aspetti sintattici. Abbiamo visto nel paragrafo precedente che un tag vuoto deve necessariamente prevedere il tag di chiusura o in alternativa la versione abbreviata del tag. Ogni documento XML deve contenere un unico elemento di massimo livello (root) che contenga tutti gli altri elementi del documento. Le sole parti di XML che possono stare all’esterno di questo elemento sono i commenti e le direttive di elaborazione (per esempio, la dichiarazione della versione di XML) Ogni elemento deve avere un tag di chiusura o, se vuoti, possono prevedere la forma abbreviata (/>) Gli elementi devono essere opportunamente nidificati, cioè i tag di chiusura devono seguire l’ordine inverso dei rispettivi tag di apertura XML fa distinzione tra maiuscole e minuscole, per cui i nomi dei tag e degli attributi devono coincidere nei tag di apertura e chiusura anche in relazione a questo aspetto I valori degli attributi devono sempre essere racchiusi tra singoli o doppi apici Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni La violazione di una qualsiasi di queste regole fa in modo che il documento risultante non venga considerato ben formato. Anche se queste regole possono sembrare semplici, occorre prestarvi molta attenzione se si usa un semplice editor di testo. Soprattutto se si è abituati a lavorare con HTML. Codice del tipo <articolo titolo=test> ... </Articolo> darà qualche problema, e lo stesso dicasi per situazioni analoghe alla seguente: <paragrafo> <testo>abcdefghi... </paragrafo> </testo> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni Anche la scelta dei nomi dei tag deve seguire alcune regole. Un tag può iniziare con un lettera o un underscore (_) e può contenere lettere, numeri, il punto, l’underscore (_) o il trattino (-). Non sono ammessi spazi o altri caratteri. XML è sensibile all’uso di maiuscolo e minuscolo, quindi i tag <prova> e <Prova> sono considerati diversi. Potrebbe essere necessario inserire in un documento XML dei caratteri particolari che potrebbero renderlo non ben formato. Ad esempio, se dobbiamo inserire del testo che contiene il simbolo <, corriamo il rischio che possa venire interpretato come l’inizio di un nuovo tag, come nel seguente esempio: <testo> il simbolo < indica minore di </testo> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni Per evitare situazioni di questo tipo, XML prevede degli oggetti speciali detti entità che consentono di sostituire altri caratteri. Cinque entità sono predefinite e consentono l’uso di altrettanti caratteri riservati all’interno di un documento: & definisce il carattere & < definisce il carattere < > definisce il carattere > " definisce il carattere " &apos; definisce il carattere ‘ Sfruttando le entità, l’esempio precedente diventa: <testo> il simbolo &lt indica minore di </testo> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni In determinate situazioni gli elementi da sostituire con le entità possono essere molti, il che rischia di rendere illeggibile il testo ad essere umano. Si consideri il caso in cui un blocco di testo illustri proprio del codice XML: <codice> <libro> <capitolo> </capitolo> </libro> </codice> In questo caso, al posto di sostituire tutte le occorrenze dei simboli speciali con le corrispondenti entità è possibile utilizzare una sezione CDATA. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni Una sezione CDATA (Character DATA) è un blocco di testo che viene considerato sempre come testo, anche se contiene codice XML o altri caratteri speciali. Per indicare una sezione CDATA è sufficiente racchiuderla tra le sequenze di caratteri <![CDATA[ e ]]>. Il nostro esempio diventerà come segue: <codice> <![CDATA[ <libro> <capitolo> </capitolo> </libro> ]]> </codice> In certe situazioni non si conosce a priori il contenuto che può essere inserito in un blocco di testo e pertanto l’utilizzo delle sezioni CDATA risulta obbligatorio. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni Come si definisce una grammatica per descrivere un linguaggio di markup? Attualmente due sono gli approcci più diffusi alla creazione di grammatiche per documenti XML: DTD - Document Type Definition e XML Schema. Questi argomenti saranno affrontati in seguito. Un documento XML può essere all’origine di diversi tipi di elaborazione: generazione di altri documenti, eventualmente in formati diversi, controllo delle impostazioni di programmi, rappresentazione di immagini, ecc. Tutti i possibili impieghi di XML, però, si fondano su due tipi di elaborazione preliminare: la verifica che un documento sia ben formato e la sua validità rispetto ad una grammatica. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Documenti dati e rappresentazioni I software che si occupano di queste elaborazioni sono detti parser e sono degli strumenti standard disponibili sulle diverse piattaforme. Possiamo suddividere i parser in due categorie (talvolta può essere lo stesso parser che assume due ruoli): parser non validante è un parser che verifica soltanto se un documento è ben formato parser validante è un parser che, oltre a verificare che un documento è ben formato, verifica se è corretto rispetto ad una data grammatica La maggior parte degli editor XML più recenti hanno un parser integrato o si appoggiano su parser esterni per effettuare la convalida dei documenti. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Dott. Romeo Pruno – romeo.pruno@unicam.it Agenda Introduzione Storia ed applicazioni di XML Un po’ di storia Il mondo di XML: XHTML ed oltre Documenti dati e rappresentazioni Struttura dei documenti XML Documenti ben formati Documenti validi Definizione ed applicazione di grammatiche DTD XML Schema Namespace Modelli di presentazione di documenti XML XML & CSS XSL eXtendible Stylesheet Language XPath Fogli di stile XSLT Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Da un punto di vista cronologico, il primo approccio per la definizione di grammatiche per documenti XML è rappresentato dai Document Type Definition (DTD). Un DTD è un documento che descrive i tag utilizzabili in un documento XML, la loro reciproca relazione nei confronti della struttura del documento e altre informazioni sugli attributi di ciascun tag. La sintassi di un DTD si basa principalmente sulla presenza di due dichiarazioni: <!ELEMENT> e <!ATTLIST>. La prima definisce gli elementi utilizzabili nel documento e la struttura del documento stesso, la seconda definisce la lista di attributi per ciascun elemento. Ad esempio, la dichiarazione <!ELEMENT articolo(paragrafo+)> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Il carattere '+', dopo il nome del sottoelemento, indica il relativo numero di occorrenze. Un insieme di caratteri speciali ha appunto lo scopo di indicare il numero di occorrenze di un elemento. In particolare: + indica che l’elemento è presente una o più volte * indica che l’elemento è presente zero o più volte ? indica che l’elemento è presente zero o una sola volta Per esempio, la definizione indica che l’elemento <paragrafo> contiene la sequenza di elementi <immagine> e <testo>. L’elemento <immagine> può essere presente zero o più volte, mentre <testo> deve essere presente almeno una volta. <!ELEMENT paragrafo(immagine*, testo+)> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Il seguente codice riporta il DTD completo per un documento che descrive un articolo analogo a quello visto negli esempi: <!ELEMENT articolo(paragrafo+)> <!ELEMENT paragrafo (immagine*, testo+, codice*)> <!ELEMENT immagine EMPTY> <!ELEMENT testo (#PCDATA)> <!ELEMENT codice (#PCDATA)> <!ATTLIST articolo titolo CDATA #REQUIRED> <!ATTLIST paragrafo titolo CDATA #IMPLIED tipo (abstract|bibliografia|note) #IMPLIED > <!ATTLIST immagine file CDATA #REQUIRED> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Utilizzando i DTD, abbiamo un maggior controllo sulla struttura e sull’uso dei tag in un documento XML, evitando che la libertà nella definizione dei tag possa far perdere il controllo sui contenuti. Tuttavia l’uso dei DTD per definire la grammatica di un linguaggio di markup non sempre è del tutto soddisfacente. A parte il fatto che la sintassi utilizzata per definire un DTD non segue le regole stesse di XML, i DTD non consentono di specificare un tipo di dato per il valore degli attributi, né di specificare il numero minimo o massimo di occorrenze di un tag in un documento o altre caratteristiche che in determinati contesti consentirebbero di ottenere un controllo ancora più accurato sulla validità di un documento XML. Queste limitazioni hanno spinto alla definizione di approcci alternativi per definire grammatiche per documenti XML. Tra questi approcci il più noto è XML Schema. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche XML Schema introduce il concetto di tipo di dato semplice per definire gli elementi che non possono contenere altri elementi e non prevedono attributi. Si possono usare tipi di dato semplici predefiniti oppure è possibile personalizzarli. Sono previsti numerosi tipi di dato predefiniti, alcuni dei quali sono riportati nella seguente tabella: Tipo di dato Descrizione xs:string Stringa di caratteri xs:integer Numero intero xs:decimal Numero decimale xs:boolean Valore booleano xs:date Data xs:time Ora xs:uriReference URL Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Ad esempio, la seguente dichiarazione: permette l’utilizzo dell’elemento quantita in un documento XML consentendo soltanto un contenuto di tipo intero. In altre parole, sarà considerato valido l’elemento <quantita>123</quantita> mentre non lo sarà l’elemento <quantita>uno</quantita>. XML Schema prevede anche la possibilità di definire tipi di dato semplici personalizzati come derivazione di quelli predefiniti. Se, ad esempio, abbiamo bisogno di limitare il valore che può essere assegnato all’elemento <quantita> possiamo definirlo nel seguente modo: In altre parole, la dichiarazione indica che l’elemento è di tipo semplice e prevede una restrizione sul tipo di dato intero predefinito accettando valori compresi tra 1 e 100. <xs:element name="quantita" type="xs:integer" /> <xs:element name="quantita" > <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="1" /> <xs:maxInclusive value="100" /> </xs:restriction> </xs:simpleType> </xs:element> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Se l’elemento può contenere altri elementi possiamo definire la sequenza di elementi che possono stare al suo interno utilizzando uno dei costruttori di tipi complessi previsti: <xs:sequence> Consente di definire una sequenza ordinata di sottoelementi <xs:choice> Consente di definire un elenco di sottoelementi alternativi <xs:all> Consente di definire una sequenza non ordinata di sottoelementi Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Per ciascuno di questi costruttori e per ciascun elemento è possibile definire il numero di occorrenze previste utilizzando gli attributi minOccurs e maxOccurs. Ad esempio, se l’elemento testo può essere presente una o infinite volte all’interno di un paragrafo possiamo esprimere questa condizione nel seguente modo: <xs:element name="paragrafo"> <xs:complexType> <xs:element name="testo" minOccurs="1" maxOccurs="unbounded"/> </xs:complexType> </xs:element> In questo caso il valore unbounded indica che non è stablito un massimo numero di elementi testo che possono stare all’interno di un paragrafo. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Per ciascuno di questi costruttori e per ciascun elemento è possibile definire il numero di occorrenze previste utilizzando gli attributi minOccurs e maxOccurs. Ad esempio, se l’elemento testo può essere presente una o infinite volte all’interno di un paragrafo possiamo esprimere questa condizione nel seguente modo: <xs:element name="paragrafo"> <xs:complexType> <xs:element name="testo" minOccurs="1" maxOccurs="unbounded"/> </xs:complexType> </xs:element> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="articolo"> <xs:complexType> <xs:sequence> <xs:element name="paragrafo" maxOccurs="unbounded"> <xs:all maxOccurs="unbounded"> <xs:element name="immagine" minOccurs="0"> <xs:attribute name="file" use="required"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="testo"/> <xs:element name="codice" minOccurs="0"/> </xs:all> <xs:attribute name="titolo" type="xs:string" use="optional"/> <xs:attribute name="tipo" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="abstract"/> <xs:enumeration value="bibliografia"/> <xs:enumeration value="note"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:sequence> use="required"/> </xs:schema> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche XML document – WellFormed ? <?xml version="1.0"?> <Lesson id=‘3"> <titolo>XML – Intro</titolo> <data>26/11/2005</data> <agenda> <argomento>What’s XML?</argomento> <argomento>Document well-formed e valid document </argomento> <argomento>Namespace XML</argomento> <argomento>XML InfoSet</argomento> <argomento>DTD e Xml Schema Definition <argomento>XML Document Object Model (DOM)</argomento></argomento> <argomento>Presentare XML: CSS, XSL, XSLT e XPath, XSL-FO</argomento> <argomento>XML: XQuery </Agenda></argomento> </webCast> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche XML document – WellFormed ? <?xml version="1.0"?> <Lesson id=‘3"> <titolo>XML - Intro</titolo> <data>03/08/2005</data> <agenda> <argomento>What’s XML?</argomento> <argomento>Document well-formed e valid document </argomento> <argomento>Namespace XML</argomento> <argomento>XML InfoSet</argomento> <argomento>DTD e Xml Schema Definition <argomento>XML Document Object Model (DOM)</argomento></argomento> <argomento>Presentare XML: CSS, XSL, XSLT e XPath, XSL-FO</argomento> <argomento>XML: XQuery </Agenda></argomento> </Lesson> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche XML document – WellFormed ? <?xml version="1.0" encoding="ISO-8859-1"?> <lesson id=“3"> <titolo>XML - Intro</titolo> <data>03/08/2005</data> <agenda> <argomento>What’s XML?</argomento> <argomento>Document well-formed andvalid document </argomento> <argomento>Namespace XML</argomento> <argomento>XML InfoSet</argomento> <argomento>DTD e Xml Schema Definition</argomento> <argomento>XML Document Object Model (DOM)</argomento> <argomento>Presentare XML: CSS, XSL, XSLT e XPath, XSL-FO</argomento> <argomento>XML and XQuery</argomento> </agenda> </lesson> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Namespace XML Ma se possiamo inventarci i nomi dei TAG a piacere e possiamo costruire i documenti XML secondo le nostre esigenze nel solo rispetto delle regole sintattiche (Well-Formed) come facciamo a capirci ? Cioè: come distinguo <codice>88-8331-129-9</codice> (Codice ISBN) <codice>PLRPLA75L03B157T</codice> (Codice Fiscale) Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Namespace XML Possiamo utilizzare nomi di TAG uguali con significati diversi È sufficiente indicare nel documento XML quale significato stiamo dando ai nomi degli elementi e degli attributi Questo si ottiene tramite i Namespace I Namespace definiscono grammatiche Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Definire i Namespace Per definire un Namespace in un documento XML dobbiamo usare la parola chiave xmlns. Se dobbiamo usare più Namespace nel nostro documento ne avremo uno di default e potremo indicarne di opzionali. <elemento xmlns=“URI”> <elemento xmlns=“URI” xmlns:due=“URI2”> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Esempio Namespace <?xml version="1.0"?> <ordine xmlns:prodotto=“http://www.azienda.com/” xmlns:cliente=“http://www.cliente.com/”> <prodotto:codice>1321</prodotto:codice> <cliente:codice>PP2301</cliente:codice> </ordine> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche XML Infoset Pensiamo al documento XML come ad una gerarchia di nodi (attributi, elementi, testo, ecc.) Pensiamo a trattare la gerarchia in memoria e non preoccupiamoci della sua natura fisica (file, stream, foglio di carta  ...) XML InfoSet 1.0 (e dal 4/2/2004 anche 1.1) è una Recommendation del W3C Per pensare ad XML come albero di nodi informativi E non più soltanto come file di testo con tag Possiamo creare dei nostri formati (compressi, criptati, ecc.) che in memoria siano InfoSet ... Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Ricapitolando…. E’ simile a HTML ? Sì Possiamo scrivere HTML come XML ? Sì anche se non è proprio HTML … HTML XML Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche DOM Document Object Model DOM (Document Object Model) modello ad oggetti definito dal W3C per navigare e creare contenuti XML è indipendente dalla piattaforma esistono diverse implementazioni del DOM (Microsoft, IBM, Oracle, ecc.) Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche DOM Document Object Model Livello 1 Raccomandazione W3C del 1-Oct-1998 Implementato da Microsoft, IBM e altri Livello 2 Raccomandazione W3C del 13-Nov-2000 Implementato da: MSXML 4.0 e .NET Framework Livello 3 Proposed Recommendation 05-Feb-2004 … Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche In-Memory tree lesson <?xml version=“1.0”?> <lesson id=“3”> <titolo>XML - Intro</titolo> <data>03/08/2005</data> <agenda> <argomento>XML Schema</argomento> </agenda> </lesson> @id titolo data agenda argomento argomento Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche DOM Document Object Model Legenda tipologie di Nodo Documento documentElement Elemento Attributo Text Testo ... Text Text Text E molti altri ... tutti che ereditano dall’interfaccia Node. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche Demo dom/… XML DOM: Document Document Molti { Processing Instruction Processing Instruction Comment Comment Solo 1 { Document Type root document.documentElement document.doctype Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Definizione ed app. di grammatiche parentNode XML DOM: Node nodeType = Element nodeName = customer nodeValue = null hasChildNodes = true previousSibling nextSibling firstChild NamedNodeMap ... attributes ... NodeList childNodes lastChild Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Dott. Romeo Pruno – romeo.pruno@unicam.it Agenda Introduzione Storia ed applicazioni di XML Un po’ di storia Il mondo di XML: XHTML ed oltre Documenti dati e rappresentazioni Struttura dei documenti XML Documenti ben formati Documenti validi Definizione ed applicazione di grammatiche DTD XML Schema Namespace Modelli di presentazione di documenti XML XML & CSS XSL eXtendible Stylesheet Language XPath Fogli di stile XSLT Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Caso pratico del blog blog.html News.xml La struttura tipo di un post per X-blog è molto semplice. Ciascuno di essi avrà: un titolo la data di invio un testo eventuali link nel testo Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Presentare XML Il documento "news.xml" non contiene alcuna informazione su come verrà presentato. Non è una limitazione. E' così che deve essere. Per effettuare la formattazione di un documento XML in vista della sua presentazione si possono seguire due metodi. CSS XSL un linguaggio ben più potente dei semplici CSS in grado di trasformare qualunque documento XML in vari formati: testo semplice, HTML, XHTML, persino PDF. <?xml version="1.0" ?> <?xml-stylesheet type="text/css" href="news.css" ?> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc DOM Document Object Model Livello 1 Raccomandazione W3C del 1-Oct-1998 Implementato da Microsoft, IBM e altri Livello 2 Raccomandazione W3C del 13-Nov-2000 Implementato da: MSXML 4.0 e .NET Framework Livello 3 Proposed Recommendation 05-Feb-2004 … Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc XSL XSL è certamente uno dei più importanti linguaggi standard del W3C. Esso risulta composto di tre parti, ciascuna delle quali rientra nella specifica XSL 1.0, pubblicata nell'ottobre 2001: XSLT: è un linguaggio che consente di trasformare documenti XML in altri formati Xpath: definisce espressioni e metodi per accedere ai nodi di un documento XML XSL FO (Formatting object): usato per formattare in maniera precisa un oggetto trasformato Per questa lezione si farà riferimento solo a XSLT e Xpath. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Cosa fa un foglio XSL? Un foglio di stile XSLT è un documento XML valido e ben formato. Fornisce un meccanismo per trasformare un documento XML in un altro. Dal punto di vista del web design e per la nostra applicazione la trasformazione che ci interessa è quella da XML in XHTML. Documento finale XSL XML Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc CSS e XSL Innanzitutto, XSL è di gran lunga più potente. Un foglio di stile CSS, infatti, può contenere principalmente le regole che definiscono lo stile dei vari elementi di una pagina. E’ anche possibile stabilire importanti caratteristiche del layout, come posizione e dimensioni, ma tutte le regole devono poggiare su una struttura definita altrove (in genere in un documento XHTML). aggiungere nuovi elementi alla struttura creare nuovi contenuti filtrare e ordinare dati generare documenti con diversi gradi di compatibilità usare complesse espressioni condizionali Si può intuire che si tratta di operazioni che sono tipiche più di linguaggi come ASP che di CSS. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Trasformazioni XML: XSL in opera il prologo l'elemento radice <?xml version="1.0"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> .................................... </xsl:stylesheet> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Scegliere il metodo di output Prima della definizione delle regole di trasformazione è possibile specificare il formato del documento finale. Ciò avviene tramite la dichiarazione <xsl:output>. All'interno di tale dichiarazione si possono specificare vari attributi. Il più importante è certamente method, con cui si può impostare il formato di output scegliendo tra xml, html e text: <xsl:output method="html"/> Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Regole e templates l'elemento radice gli attributi e i loro valori i commenti gli elementi i namespace le istruzioni di elaborazione il testo contenuto in un nodo Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Output Ora, in un foglio XSLT è necessario specificare delle regole per trasformare i singoli nodi. Ogni regola viene definita in un template. Quando si crea un template è come se si dicesse: caro processore XSL, quando incontri il nodo x esegui questa trasformazione. Esempio. Supponiamo di voler trasformare "news.xml" in XHTML e che l'elemento <testo> con il suo contenuto debba essere racchiuso in un paragrafo. In XSL creeremo questo template: <xsl:template match="post"> <p><xsl:value-of select="testo"/></p> </xsl:template> Il processore percorrerà tutto l'albero del documento. Quando incontrerà l'elemento <post>, verificherà che <testo> sia presente come elemento figlio, trasformerà il testo in un paragrafo. Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc news.xsl Elementi principali xsl:apply-templates Applica le regole definite in un tamplate. xsl:attribute Crea un attributo per un elemento. xsl:comment Genera un commento nel documento finale xsl:element Crea un nuovo elemento xsl:for-each Stabilisce una struttura ciclica ripetendo un template tutte le volte che un dato nodo viene incontrato. xsl:if Usato per impostare semplici strutture condizionali. xsl:include Include un foglio XSL esterno xsl:sort Ordina un insieme di nodi in bse ai parametri forniti. xsl:stylesheet Elemento radice di un documento XSL xsl:template Genera un template. xsl:text Genera nuovo testo nel documento di output xsl:value-of Restituisce il valore di un elemento o di un attributo. xsl:when Usato per espressioni condizionali complesse Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc demo Notate differenze tra blog.html e default.asp ?? Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Analisi di news.xsl Dichiarazioni preliminari Output del documento Parte statica del documento Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Modelli di presentazione di XML doc Analisi di news.xsl Gestione dei post Gestione dei link Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it

Dott. Romeo Pruno – romeo.pruno@unicam.it Question and Answer Camerino, 26/11/2005 Dott. Romeo Pruno – romeo.pruno@unicam.it