Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.

Slides:



Advertisements
Presentazioni simili
I Namespace Mario Arrigoni Neri.
Advertisements

Introduzione all’HTML
WWW XML-Namespace Fabio Vitali. WWW Fabio Vitali2 Introduzione Qui esaminiamo: u Lesigenza e il funzionamento dei Namespace in XML.
Il linguaggio HTML I documenti HTML vanno racchiusi dentro una coppia di TAG (marcatori): apertura e chiusura. ……………………………… …………………………… ……………….
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.
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
PHP.
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
G. Mecca – – Università della Basilicata Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
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.
Lezione 5 Attributi, Entità, Parametri e Namespaces.
DTD, Entità, Parametri, Namespace
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.
XML per documenti e applicazioni transazionali su Internet Alessio Saltarin Progetto XML Factory.
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... XML Elaborazione di Franco Grivet Chin.
Corso di PHP.
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
1 XPath. 2 What is XPath? XPath is a syntax for defining parts of an XML document XPath uses paths to define XML elements XPath defines a library of standard.
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.
I fogli di stile XSL – 2 –. Selezioni multiple : serve per applicare una regola in modo ricorsivo a nodi figli dellelemento contestuale. Attributo select.
Linguaggi di codifica.
HyperText Markup Language 17-23/6/08 Informatica applicata B Cristina Bosco.
2a Lezione: Martedì 6 Febbraio – HTML Comandi base
Creare pagine web Xhtlm. Struttura di una pagina.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Il linguaggio HTML Antonella Schiavon – settembre 2008 rev. 1 – aprile 2011.
HTML HyperText Markup Language Linguaggio per marcare un’Ipertesto
XPATH.
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.
Alberatura cartelle sito
Corso Web CSV – Andiamo on-line 1 Andiamo on-line Corso di formazione Elementi base per la costruzione di un sito web.
Roma, 16 giugno 2005 AZALEA Un sistema di conoscenza in oncologia a disposizione di pazienti e cittadini Gli aspetti informatici.
XHTML Corso linguaggi per il web a.s. 2011/2012 ITIS A. Righi – Corsico Relatore – Aldo Guastafierro.
Lezione 3 Struttura lessicale del linguaggio
Laboratorio di XHTML a.s – 2012 Prof. Aldo Guastafierro.
CORSO Di WEB DESIGN prof. Leonardo Moriello
Creazione di pagine per Internet Brevi note a cura di Emanuele Lana
Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi  Lezione 02: 06/03martedi  Lezione 03: 13/03martedi  Lezione 04:
I collegamenti ipertestuali. I collegamenti ipertestuali si creano associando l'indirizzo (percorso/nome file) del nodo di destinazione ad un elemento.
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 
WWW XSLT Ing. Michele Vindigni. WWW 2 Introduzione Oggi esaminiamo in breve: u XSLT, ovvero il linguaggio trasformazione per documenti XML con sintassi.
Introduzione alle Griglie computazionali - aa Introduzione alle griglie computazionali Introduzione alle griglie computazionali Università degli.
A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language.
Fondamenti di Markup Languages: Richiami di HTML © 2005 Stefano Clemente Stefano Clemente
Cenni Su SGML, HTML, XML SGML (Standard Generalized Markup Language) è il padre di tutti i linguaggi "Markup" – Lo svantaggio è la "pesantezza" dei suoi.
I fogli di stile XSL.
Documenti XML ben formati Altre componenti di un documento XML – Struttura dei documenti XML.
16 Maggio - Lezione 9POLETTINI NICOLA1 Programma delle lezioni LABORATORIO B  Lezione 1: 14 marzomartedi  Lezione 2: 21 marzomartedi  Lezione.
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.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
HTML. Pagina HTML Struttura Titolo Hello World! Paragrafo apre il documento html contiene informazioni come il titolo della pagina, i meta tags, la codifica.
Transcript della presentazione:

Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL

Lezione 6 SOMMARIO 1. Ripasso: XML 2. Ripasso: DTD 3. Ripasso: validare per imparare 4. XSL (XPath, XSLT, XSL-FO) 5. XML Namespace 6. XPath 7. XSLT 8. Esempi

Un documento XML è composto da tre parti  XML (eXtensible Markup Language) i dati (struttura fisica - document istance) Quale informazione e' contenuta nel file?  DTD (Document Type Definition) lo schema dei dati (struttura logica) Quali tag posso usare? Dove? Come?  XSL (eXtensible Stylesheet Language) la presentazione dei dati (stylesheet) Come visualizzo questi dati? Ripasso XML

XML – DTD – XSL Nel file XML c’è il contenuto “vero e proprio” semanticamente strutturato La DTD (o lo Schema) definiscono la sintassi dell’XML Il file XSL definisce la visualizzazione Ripasso XML

XML – HTML XML, come HTML è un dialetto di SGML orientato al web, ma non è un’alternativa a HTML. Il file XML viene trasformato da un programma in un altro linguaggio, tipicamente HTML ma non solo (testo, PDF,..., qualsiasi formato) Ripasso XML

La dichiarazione XML  La dichiarazione XML è obbligatoria e deve essere posta all’immediato inizio del documento (ovvero come primo carattere! Niente spazi prima!):  Gli attributi sono: version: (obbligatorio) la versione di XML usata. encoding: (opzionale) nome della codifica dei caratteri usata nel documento (default: Unicode UTF-8 o 16) standalone: (opzionale) (default: no)  standalone=yes  il file non fa riferimento ad altri file esterni, ovvero il solo file XML contiene dati e DTD Noi useremo sempre standalone="yes"  standalone=no  e' necessario un file esterno (che contiere il DTD) Ripasso XML

Piccolo esempio (2) Caro Beatrice, ti scrivo per comunicarti… cari saluti, Dante Ripasso XML

Riassumendo I documenti XML si possono considerare formati da cinque blocchi (building blocks):  Commenti  Elementi  Attributi (con i loro valori)  Entità  CDATA  PCDATA Ripasso XML

Commenti  I documenti di markup possono contenere commenti, ovvero note da un autore all’altro, da un editore all’altro, ecc.  Queste note non fanno parte del contenuto del documento, e le applicazioni di markup li ignorano.  Sono molto comodi per passare informazioni tra un autore e l’altro, o per trattenere informazioni per se stessi, nel caso le dimenticassimo. Ripasso XML

Elementi - Sintassi  Il tag di apertura di un elemento ha la forma seguente: nome è il nome dell’elemento. attributi è una lista di attributi per l’elemento (che può anche non apparire).  Il tag di chiusura corrispondente ha la forma seguente: nome è lo stesso identificatore usato nell’apertura.  Alcuni elementi possono essere privi di contenuto; in questo caso è possibile omettere il tag di chiusura scrivendo quello di apertura nel modo seguente (empty tag): Ripasso XML

Elementi – Regole per documenti ben formati  I nomi degli elementi sono case-sensitive (devono coincidere in apertura e chiusura).  Ogni elemento aperto deve essere chiuso entro la fine del documento.  Gli elementi possono essere nidificati, e in tal caso vanno chiusi esattamente nell’ordine inverso a quello di apertura.  Un documento XML deve avere un unico elemento “radice”, in cui tutti gli altri sono nidificati  I valori si racchiudono tra singoli ( ' ' ) o doppi ( " " ) apici  Gli elementi non devono avere due attributi con lo stesso nome  I nomi degli elementi e degli attributi non devono contenere caratteri speciali (&,...)  I nomi degli elementi non devono contenere spazi Ripasso XML

Attributi - Sintassi  Sintassi di base da usare all’interno dei tag di apertura:  Una lista di attributi si ottiene elencando più attributi separati da uno o più spazi:  Per includere virgolette nel valore, è necessario usare un tipo diverso da quello usato per delimitare il valore stesso:  Si possono includere riferimenti a entità nel valore: Ripasso XML

Attributi  Gli elementi possono contenere uno o più attributi, che sono termini aggiuntivi che definiscono con più precisione l’elemento, es. (qual è l’attributo?)  Il valore degli attributi è racchiuso tra virgolette (singole: 'uno', o doppie: "uno " ). N.B. Le virgolette devono essere entrambe singole o entrambe doppie.  Un attributo non può essere usato due volte all’interno dello stesso elemento.  Un elemento può contenere più di un attributo. … Capitolo primo Ripasso XML

Attributi - Regole  I nomi degli attributi sono case-sensitive (c’è differenza tra maiuscole e minuscole).  Lo stesso tag non può contenere due attributi con lo stesso nome.  Non sono ammessi attributi senza valore (solo nome, es. ).  Il valore degli attributi deve essere specificato tra virgolette semplici o doppie.  Il valore può contenere riferimenti ad entità (es. è).  Il valore non può contenere markup, sezioni CDATA (character DATA) o virgolette uguali a quelle iniziali. Ripasso XML

Entità Abbiamo visto che le entità sono sequenze di caratteri speciali dalla forma &nome; : XML permette di definire le proprie entità utilizzando la dichiarazione  A cosa servono? Per dichiarare dei testi o delle iscrizioni fisse che vengono inserite ripetutamente all’interno dei documenti. Esempio. Se devo scrivere “HyperText Markup Language” molte volte all’interno del mio documento XML (lungo!) lo posso sostituire con un’entità (breve): In questo modo quando nel file XML userò l’entità &html; questa verrà sostituita con l’intera stringa Ripasso XML

Sezioni CDATA (Character DATA)  A volte gli elementi da sostituire con entità possono essere molti. Es.: un blocco di testo che illustra il codice XML:  Qui, invece di sostituire tutti i caratteri speciali con entità, utilizziamo una sezione CDATA: <![CDATA[ ]]> Ciò che sta all’interno di una sezione CDATA verrà sempre considerato come testo, anche se contiene codice XML ( = non verrà analizzato) Ripasso XML

PCDATA (Parsed Character DATA)  È il testo che si trova tra il tag di apertura e il tag di chiusura di un elemento (il contenuto vero e proprio del documento)  Esso corrisponde alle parole, gli spazi e la punteggiatura che costituiscono il testo.  Viene anche detto PCDATA (Parsed Character DATA) perché a differenza dei CDATA (character data, il cui contenuto testuale non viene analizzato) quello degli elementi è soggetto ad azione di parsing (= analisi, per lo più per identificare le entità e sostituirle). <![CDATA[ ]]> Oggi è una bella giornata. Ripasso XML

Documenti ben formati  I nomi degli elementi sono case-sensitive (devono coincidere in apertura e chiusura).  Ogni elemento aperto deve essere chiuso entro la fine del documento.  Gli elementi possono essere nidificati, e in tal caso vanno chiusi esattamente nell’ordine inverso a quello di apertura.  Un documento XML deve avere un unico elemento “radice”, in cui tutti gli altri sono nidificati  I valori si racchiudono tra singoli ( ' ) o doppi ( " " ) apici  Gli elementi non devono avere due attributi con lo stesso nome  I nomi degli elementi e degli attributi non devono contenere caratteri speciali (&,...)  I nomi degli elementi non devono contenere spazi Ripasso XML

Ma che succede se il mio documento XML non è ben formato?  Quando cercherò di aprirlo il parser individuerà l’errore!  Significa che...  In generale la pagina non verrà visualizzata; verrà invece indicato il numero di riga in cui è stato trovato l’errore. Ripasso XML

 Abbiamo visto che con XML possiamo definire i tag a piacimento  Ma è necessario definire una grammatica: un insieme di regole che indicano quali vocaboli (elementi) possiamo usare per formare le frasi (documenti)  questa grammatica si definisce con il DTD – Document Type Definition  Un documento XML è valido se è ben formato e rispetta le regole del DTD associato.  Cosa e' un DTD? Lo vediamo tra poco...  Come si validano i documenti? Lo vediamo tra poco...  Un documento ben formato può non essere valido?  Un documento valido può non essere ben formato? Documenti ben formati e anche validi Ripasso XML/DTD

DTD – Document Type Definition  Un DTD è un documento che descrive i tag utilizzabili in un documento XML, la loro struttura nel documento e altre informazioni sugli attributi dei tag (ed eventualmente sulle entità, se ce ne sono).  Quali tag posso usare? Quante volte? Un tag puo' contenere un altro tag? Quale?  Queste e altre cose si specificano nel DTD (Document Type Definition). Ripasso DTD

Due modi per collegare un documento XML con il suo DTD Un DTD definisce la grammatica per il markup del nostro documento XML. Dobbiamo quindi mettere in relazione il documento XML con il suo DTD (in modo che il parser possa verificare la validità del documento XML) Esistono due modi per fare questo (noi usiamo il primo): 1. Scriviamo il DTD all’interno del documento XML 2. Il DTD è in un file esterno, e nel documento XML è presente un riferimento a tale file es. URL del DTD definito in articolo.dtdNome del documento Ripasso DTD

La dichiarazione XML  Abbiamo già visto che la dichiarazione XML è obbligatoria e deve essere posta all’immediato inizio del documento (ovvero come primo carattere! Niente spazi prima!):  Gli attributi sono: version: (obbligatorio) la versione di XML usata. encoding: (opzionale) nome della codifica dei caratteri usata nel documento (default: Unicode UTF-8 o 16) standalone: (opzionale) (default: no)  standalone=yes  il file non fa riferimento ad altri file esterni, ovvero il solo file XML contiene dati e DTD Noi useremo sempre standalone="yes"  standalone=no  e' necessario un file esterno (che contiere il DTD) Ripasso DTD

Dopo la dichiarazione XML: la dichiarazione DOCTYPE  Il DTD (Document Type Definition) definisce gli elementi e gli attributi consentiti, e la struttura del documento.  Un DTD può essere interno o esterno al documento XML: noi useremo la dichiarazione interna (dichiarazione DOCTYPE)  Se il DTD è dichiarato all’interno del documento XML, viene inserito in una dichiarazione DOCTYPE. Idealmente la sintassi è:  ElementoRadice (obbligatorio) è il nome dell’elemento radice del documento.  Definizioni del DTD (opzionale) è un DTD specificato inline al documento. Ripasso DTD

Come scrivo il DTD per il mio XML: sintassi La sintassi di un DTD si basa principalmente su due dichiarazioni:  Definisce gli elementi utilizzabili nel documento XML e la struttura del documento  Definisce la lista di attributi per ciascun elemento Ripasso DTD

DTD per la rubrica ]> Ripasso DTD

Altri tipi di dichiarazioni EMPTY e ANY Elementi vuoti:  Elementi che contengono qualsiasi combinazione di dati:  Es: Ripasso DTD

Altri tipi di dichiarazioni #PCDATA Elementi che contengono Parsed Character Data (PCDATA):  Elementi che contengono solo una sequenza di sotto-elementi (come nell’esempio della rubrica):  Anche i sotto-elementi vanno dichiarati nel DTD: Ripasso DTD

Altri tipi di dichiarazioni solo un sotto-elemento Elementi che contengono 1 unico sotto-elemento  Elementi che contengono minimo 1 occorrenza di un sotto- elemento  Elementi che contengono 0 o 1 occorrenza di un sotto-elemento  Elementi che contengono 1 solo tra una lista di sotto-elementi  Ripasso DTD

Altri tipi di dichiarazioni contenuto misto Elementi che hanno un contenuto misto, cioè dati oppure sottoelementi:  Esempio: Ripasso DTD

Riassunto simboli + L’elemento cui si applica il simbolo può essere presente una o più volte. ? L’elemento cui si applica il simbolo può essere presente zero o una sola volta. * L’elemento cui si applica il simbolo può essere presente zero o più volte. | (shift + |) Simbolo “OR”: può essere presente solo uno degli elementi in una lista. Ripasso DTD

<!ATTLIST nome-elemento nome-attributo tipo-attributo valore-di-default> Sintassi Esempio: In XML diventa: Ripasso DTD

Sintassi <!ATTLIST nome-elemento nome-attributo tipo-attributo  i due più usati sono: CDATA: il valore dell’attributo può essere una qualsiasi combinazione di caratteri (questo | quello): il valore dell'attributo può assumere solo uno dei valori nella lista fra parentesi (divisi dal simbolo |) quindi o "questo" o "quello" o "..." valore-di-default > Ripasso DTD

Sintassi <!ATTLIST nome-elemento nome-attributo tipo-attributo valore-di-default  può essere uno dei seguenti: "valore-di-default" : valore che l’attributo assume se non ne è specificato un altro #REQUIRED : l'attributo deve essere sempre dichiarato #IMPLIED : l'attributo può anche non essere dichiarato #FIXED valore : l'attributo è sempre presente e deve essere dichiarato con il valore fisso: "valore" > Ripasso DTD

Validare per imparare  Per validare l'HTML  Per validare l'XML Lo apriamo col browser che ci dice se e' valido oppure Ripasso XML/DTD

Informatica Umanistica A.A. 2005/2006 LEZIONE 6 XSL - XSLT

Come gestiamo la presentazione dei documenti XML?  Con XSL - eXtensible Stylesheet Language  Ma perché non usare i CSS?  i CSS sono pensati solo per il Web  non hanno alcune caratteristiche necessarie per la presentazione su supporti diversi dal Web  il W3C ha definito un insieme di specifiche per gestire in modo flessibile la presentazione di documenti XML: l'XSL

XSL  XSL sta per eXtensible Stylesheet Language.  Il W3C ha sviluppato l'XSL perché si avvertiva la necessità di avere un linguaggio di stile basato sull'XML.

CSS e XSL a confronto  fogli di stile per l'HTML  fogli di stile per l'XML  HTML usa dei tag predefiniti dal W3C: significa che ogni tag ha delle caratteristiche di visualizzazione  es. il tag definisce una tabella: il browser sa come visualizzarla  XML non usa dei tag predefiniti dal W3c: i tag sono definiti da chi scrive il codice (noi): significa che i tag non hanno caratteristiche di visualizzazione.  es. un tag in XML potrebbe significare una tabella, ma anche qualsiasi altra cosa: il browser non sa come visualizzare il tag in XML CSSXSL

XSL - più di un linguaggio di stile XSL è in realtà un insieme di 3 linguaggi:  XPath individua gli elementi e gli attributi di un documento XML cui applicare le operazioni di formattazione  XSLT (XSL Tranformation) controlla l'elaborazione dei dati e come presentarli  XSL-FO (XSL Formatting Objects) definisce un insieme di tag di formattazione Questa suddivisione dei compiti è il punto di forza dell'XSL e lo rende altamente flessibile.

XSLT (XSL Transformations)  linguaggio XML che ci permette di elaborare i dati di un documento XML e trasformarli in un altro documento XML, o in un altro formato riconoscibile da un browser (es. HTML)  nel nostro caso, presenteremo i dati dei nostri documenti XML in formato HTML. Tutorial W3C:

Caratteristiche di XSLT  XSLT sta per XSL Transformations  è definito dal W3C  è la parte più importante dell'XSL  trasforma i documenti XML in altri formati  utilizza il linguaggio XPath per navigare all'interno dei documenti XML. Che significa? Abbiamo visto che XPath individua gli elementi e gli attributi di un documento XML cui applicare le operazioni di formattazione XSLT utilizza il linguaggio XPath per individuare gli elementi da trasformare

Esempio file.xsl Dichiarazione XML Riferimento a un namespace Codice XSLT Codice HTML Espressioni XPath

Cosa bisognerebbe sapere per usare XSLT  HTML  XML  XML Namespace (lo vediamo ora)  XPath (vediamo la sintassi necessaria ai nostri scopi)

XML Namespace  Quando si crea un nuovo linguaggio può essere utile integrare elementi derivanti da grammatiche diverse.  In questo modo è possibile riutilizzare parti di grammatiche già definite da altri (senza rifarne il lavoro).  Per fare questo in XML possiamo utilizzare i namespace: insiemi di nomi di elementi e nomi di attributi identificati univocamente da un identificatore.  Questo identificatore univoco individua un insieme di nomi di elementi e attributi, distinguendoli da eventuali omonimie in altri namespace. Tutorial W3C:

XML Namespace Esempio: nomi in conflitto  In XML i nomi degli elementi sono definiti dal programmatore.  Codice XML che descrive una tabella HTML: Mele Banane  Codice XML che descrive un tavolo: Tavolo da giardino  Entrambi i frammenti XML contengono un elemento, ma questo ha diversi significati e contenuti nei due casi.  Se questi frammenti fossero uniti nello stesso documento XML, ci sarebbe un conflitto, perché il parser non saprebbe come gestirli.

XML Namespace prefissi  Per risolvere questo problema, possiamo usare un sistema di prefissi. Esempio: assegno "h:" per indicare "html", e "m:" per "mobili"  Tabella HTML: Mele Banane  Tavolo: Tavolo da giardino  Ora che abbiamo associato ad ogni elemento un prefisso "h:" (html) o "m:" (mobili), dobbiamo definire un namespace per questi prefissi.

XML Namespace Come definisco un namespace? Assegnando l'attributo xmlns al tag di apertura di un elemento, così:  NB: quando definisco un namespace per un elemento, tutti i nodi "figli" con lo stesso prefisso saranno associati con quell'elemento. Esempi: 

Mele Banane Tavolo da giardino XML Namespace L'esempio di prima diventa: L'attributo xmlns nel tag assegna ai prefissi h: e m: dei namespace.

XML Namespace dichiarazione del namespace nell’elemento radice <radice xmlns:h=" xmlns:m=" Mele Banane Tavolo da giardino

XML Namespace Namespaces di default  Definire un namespace di default per un certo elemento ci risparmia l'uso dei prefissi per tutti gli elementi figli. La sintassi è: 

XML Namespace Gli esempi di prima diventano:  Tabella HTML: Mele Banane  Tavolo: Tavolo da giardino

Ma nella realtà? Namespace e XSLT <xsl:stylesheet version="1.0" xmlns:xsl=" My CD Collection Title Artist Abbiamo visto che XSLT è un linguaggio XML usato per trasformare documenti XML in altri formati, come l'HTML. In questo documento XSLT, la maggior parte dei tag sono tag dell'HTML, ma non tutti. I tag che NON sono tag dell'HTML hanno un prefisso xsl:, identificato dal namespace xmlns:xsl=" 999/XSL/Transform"

XSL XSL è un insieme di 3 linguaggi:  XPath individua gli elementi e gli attributi di un documento XML cui applicare le operazioni di formattazione  XSLT (XSL Tranformation) controlla l'elaborazione dei dati e come presentarli  XSL-FO (XSL Formatting Objects) definisce un insieme di tag di formattazione Tutorial W3C:

XPath  XPath individua gli elementi e gli attributi di un documento XML cui applicare le operazioni di formattazione Esiste un’analogia con HTML/CSS? Che cosa in CSS ha il compito di individuare gli elementi cui applicare una certa formattazione? Il selettore = elemento sintattico di una regola CSS che individua gli elementi da formattare. es. h1 {color: #000000;}  In XSL questo ruolo è svolto da XPath, che è più potente e flessibile

Xpath Sintassi  Il linguaggio XPath tratta i documenti XML come alberi composti da nodi (ricordate la struttura gerarchica ad albero di un documento XML?):  Attraverso delle espressioni dichiarative individua e seleziona i vari nodi (o insiemi di nodi) dell'albero, seguendo dei "sentieri" o "passi".  Ai nodi (o agli insiemi di nodi) individuati saranno poi applicate delle regole!  La sintassi di XPath è molto compatta: assomiglia alle espressioni usate per individuare i percorsi di file e cartelle su un file system (ricordate gli URI relativi?)

Xpath Sintassi nome_elemento Seleziona tutti i figli dell’elemento nome_elemento / Seleziona l’elemento radice // Seleziona tutti i nodi discendenti a partire dal nodo corrente (non importa a che livello sono). Seleziona il nodo corrente.. Seleziona il genitore del nodo Seleziona gli attributi

Harry Potter Learning XML Sintassi XPath: esempi libreria.xml

libreriaSeleziona tutti i figli dell’elemento libreria / oppure /libreria Seleziona l’elemento radice libreria libreria/libroSeleziona tutti gli elementi libro figli di libreria //libro Seleziona tutti gli elementi libro (non importa a che livello sono nel documento) libreria//libro Seleziona tutti gli elementi libro discendenti di libreria (non importa a che livello sono sotto libreria) tutti gli attributi lingua Sintassi XPath: esempi libreria.xml

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano Ricordate la rubrica in XML?

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano Come seleziono tutti gli elementi PERSONA figli di RUBRICA? RUBRICA/PERSONA

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano Come seleziono tutti gli elementi CAP? Dove sta CAP? RUBRICA/PERSONA/DATI_ANAGRAFICI /INDIRIZZO/CAP

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano Come seleziono tutti gli elementi NOME? RUBRICA/PERSONA/DATI_ANAGRAFICI /NOME

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano Come seleziono tutti gli elementi COGNOME? RUBRICA/PERSONA/DATI_ANAGRAFICI /COGNOME

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano Come seleziono l’elemento NUMERO di FISSO? RUBRICA/PERSONA/TELEFONO/FISSO/ NUMERO

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano Come seleziono l’attributo prefisso dell’elemento NUMERO di FISSO? RUBRICA/PERSONA SO

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano Come seleziono l’attributo compagnia dell’elemento NUMERO di FISSO? RUBRICA/PERSONA

 RUBRICA/PERSONA  RUBRICA/PERSONA/DATI_ANAGRAFICI/INDIRIZZO/CAP  RUBRICA/PERSONA/DATI_ANAGRAFICI/NOME  RUBRICA/PERSONA/DATI_ANAGRAFICI/COGNOME  RUBRICA/PERSONA /TELEFONO/FISSO/NUMERO  RUBRICA/PERSONA  RUBRICA/PERSONA Xpath Sintassi: esempi

Xpath Sintassi – Predicati e funzioni  Le espressioni viste finora selezionano tutti gli elementi figli o discendenti di un altro elemento  Ma come faccio se voglio selezionare un particolare elemento? O un elemento il cui attributo ha un certo valore? Es. in rubrica.xml, voglio selezionare  Solo la persona n° 2  Solo l’elemento NUMERO il cui attributo prefisso ha come valore “06”  Con i predicati!

Xpath Sintassi – Predicati e funzioni  I predicati si racchiudono sempre tra parentesi quadre: RUBRICA/PERSONA/TELEFONO/FISSO /NUMERO/[predicato]  Dentro le parentesi quadre specifichiamo la condizione che deve essere soddisfatta dall’elemento. Esempio: Seleziona l’elemento NUMERO il cui attributo prefisso ha come valore 06

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano RUBRICA/PERSONA/TELEFONO/FISSO/ Seleziona l’elemento NUMERO il cui attributo prefisso ha come valore 06

Xpath Sintassi – Predicati e funzioni  Per selezionare un elemento specifico è possibile usare delle funzioni predefinite. position() specifica la posizione di un elemento last() specifica l’ultima posizione di una sequenza di elementi count() restituisce il numero di elementi relativi all’espressione passata come argomento. L’argomento è il ciò che sta nelle parentesi.

Xpath Sintassi – Predicati e funzioni: esempi  RUBRICA/PERSONA[position()=2] Indica l’elemento PERSONA che sta in seconda posizione  RUBRICA/PERSONA[last()] Indica l’elemento PERSONA che sta in ultima posizione  count(RUBRICA/PERSONA) Restituirà il numero di elementi PERSONA di RUBRICA

Giulio Cesare Bruto 10 Roma Giovanni Pompeo Catilina 12 Milano RUBRICA/PERSONA[position()=2] Indica l’elemento PERSONA che sta in seconda posizione RUBRICA/PERSONA[last()] Indica l’elemento PERSONA che sta in ultima posizione In questo caso coincidono

RUBRICA PERSONA DATI_ANAGRAFICI TELEFONO NOMECOGNOMEINDIRIZZOFISSOMOBILENOMECOGNOMEINDIRIZZOFISSOMOBILE La rubrica, vista come albero RUBRICA/PERSONA[position()=2] RUBRICA/PERSONA[last()]

Xpath Sintassi – Predicati e funzioni: esempi Cosa indicano le seguenti stringhe?  RUBRICA/PERSONA[position()=2]/DATI_ANAGRAFICI/NOME  RUBRICA/PERSONA[last()]/DATI_ANAGRAFICI/NOME  06]/../../../DATI_ANAGRAFICI/NOME

RUBRICA PERSONA DATI_ANAGRAFICI TELEFONO NOMECOGNOMEINDIRIZZOFISSOMOBILENOMECOGNOMEINDIRIZZOFISSOMOBILE RUBRICA/PERSONA[position()=2]/DATI_ANAGRAFICI/NOME

RUBRICA PERSONA DATI_ANAGRAFICI TELEFONO NOMECOGNOMEINDIRIZZOFISSOMOBILENOMECOGNOMEINDIRIZZOFISSOMOBILE RUBRICA/PERSONA[last()]/DATI_ANAGRAFICI/NOME

RUBRICA PERSONA DATI_ANAGRAFICI TELEFONO NOMECOGNOMEINDIRIZZOFISSOMOBILENOMECOGNOMEINDIRIZZOFISSOMOBILE 06]/../../../DATI_ANAGRAFICI/NOME prefisso=“06”prefisso=“02”

libreria/libro[last()-1] Seleziona il penultimo elemento libro figlio di libreria libreria/libro[position()<3] Seleziona i primi due elementi libro figli di libreria Seleziona tutti gli elementi titolo il cui attributo lingua ha valore inglese libreria/libro[prezzo>35.00] Seleziona tutti gli elementi libro figli di libreria che hanno un elemento prezzo con valore maggiore di /libreria/libro[prezzo>35.00]/titolo Seleziona tutti gli elementi titolo degli elementi libro che hanno un elemento prezzo con valore maggiore di Xpath Sintassi – Altri predicati – libreria.xml

XSLT – XSL Transformations  è la parte più importante dell'XSL  trasforma i documenti XML in altri formati (nel nostro caso HTML)  utilizza XPath per individuare gli elementi da trasformare

 Quando accedo al documento XML, il browser viene indirizzato al file XSL per recuperare le informazioni sulle trasformazioni del documento d’origine XML rubrica001.xsl rubrica.xml “Vai a rubrica001.xsl” XSLT – XSL Transformations

rubrica001.xsl Come specifico l’XSL per il mio XML? rubrica.xml <!DOCTYPE RUBRICA [...dichiarazioni DTD... ]>...dati XML... …trasformazioni XSL…

XSLT – Come avvengono le trasformazioni?  le trasformazioni avvengono in base alle istruzioni contenute nel foglio di stile XSLT e interpretate da un processore XSLT.  Il foglio di stile XSLT è un documento XML che usa dei tag appartenenti alla grammatica XSLT (ricordate i namespace?).  La struttura di un foglio di stile XSLT è la seguente:...template di trasformazione...

XSLT – Come avvengono le trasformazioni? o All'interno dell'elemento radice vengono definite le istruzioni di trasformazione da applicare al documento XML d'origine. o XSLT trasforma ogni elemento del documento XML d'origine in un altro elemento, nel nostro caso in formato HTML. o Nel documento risultante è possibile aggiungere elementi nuovi rispetto al documento XML d'origine, riordinare gli elementi, ecc. o xmlns:xsl=" punta al namespace XSLT ufficiale del W3C....template di trasformazione...

 Nel processo di trasformazione, XSLT si serve di XPath per selezionare gli elementi del documento XML, sui quali verranno applicati dei template di trasformazione. XSLT – Come avvengono le trasformazioni?...definizione dell'output... Ricordate questo simbolo? Indica l’elemento radice in linguaggio XPath.

Esempio template Rubrica di esempio ………………..

Estrapolazione dei dati dal documento XML  All’interno di ogni template e’ possibile effettuare delle ricerche per estrapolare dati e visualizzarli nel browser.  esempio: trova l'elemento “cognome” del file XML e trasformalo in un elemento “H3” dell'HTML  Ai dati viene applicato il linguaggio HTML per apparire su video (nel nostro caso! Altri formati di output sono possibili!)

 Un template XSLT individua un elemento (o un insieme di elementi) di un documento XML utilizzando un’espressione XPath, e vi applica una serie di trasformazioni per ottenere un output.. XSLT – Cos’è un template...definizione dell'output... Riuscite a pensare ad un’analogia con i CSS? Le regole CSS!

 Un template XSLT individua un elemento (o un insieme di elementi) di un documento XML utilizzando un’espressione XPath, e … XSLT – Cos’è un template

 Un template XSLT individua un elemento (o un insieme di elementi) di un documento XML utilizzando un’espressione XPath, e vi applica una serie di trasformazioni per ottenere un output.. XSLT – Cos’è un template

 L'elemento si usa per applicare le trasformazioni. L’attributo match si usa per associare ad un template un elemento XML. Il valore di match è un’espressione XPath: dato che “/” è l’elemento radice, match="/" definisce l’intero documento XML. XSLT – Cos’è un template

 L'elemento contenuto all'interno dell'elemento cattura il valore di un elemento o di un attributo e lo produce come output nel documento HTML risultante. XSLT – Template:

 L'elemento applica una certa regola ad ogni elemento indicato come valore dell’attributo select. XSLT – Template:

XSLT – Template: o L'elemento ordina l’output a seconda dell’espressione indicata come valore dell’attributo select. Va aggiunto all’interno dell’elemento. I cognomi saranno visualizzati in ordine alfabetico

XSLT – Template: o L'elemento applica una certa regola solo agli elementi che soddisfano la condizione espressa nel valore dell’attributo test.

 L'elemento si usa assieme agli elementi e per ottenere diversi output in base a condizioni diverse.  All’interno dell’elemento le condizioni da valutare si esprimono tramite gli elementi.  L’elemento indica l’output da generare nel caso nessuna delle condizioni precedenti sia vera XSLT – Template:,,

 La sintassi è la seguente:... some output some output.... XSLT – Template:,, Scegli: Quando questa condizione è vera, allora dammi questo output Altrimenti, dammi quest’altro output

XSLT – Template:,, '11000'">

XSL per immagini immagine a

XSL per immagini immagine a

ESTRAZIONE ELEMENTI SEMPLICE: for-each e value-of SINTASSI: - sono tag, vanno chiusi, hanno attributi! - di solito for-each viene usato per riempire una struttura ripetitiva (es: TABLE) - di solito con value-of si seleziona un sottoelemento

ESTRAZIONE CONDIZIONATA DI ELEMENTI: test con [] SINTASSI: <xsl:for-each select="./[nome-elemento='valore-elemento']">

ESTRAZIONE CONDIZIONATA DI ATTRIBUTI: test con [] SINTASSI: <xsl:for-each

ESTRAZIONE CONDIZIONATA : test con if