Programma delle lezioni LABORATORIO B Lezione 01: 27/02martedi 10-12 Lezione 02: 06/03martedi...

41
Programma delle lezioni LABORATORIO B Lezione 01: 27/02martedi 10-12 Lezione 02: 06/03martedi 10-12 Lezione 03: 13/03martedi 10-12 Lezione 04: 20/03martedi 10-12 Lezione 05: 27/03martedi 10-12 Lezione 06: 03/04 martedi 10-12 Lezione 07: 17/04 martedi 10-12 Lezione 08: 24/04 martedi 10-12 Lezione 09: 04/05 venerdi 10-12 Lezione 10: 08/05martedi 10-12 Dove? "laboratorio multimediale"

Transcript of Programma delle lezioni LABORATORIO B Lezione 01: 27/02martedi 10-12 Lezione 02: 06/03martedi...

Page 1: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Programma delle lezioniLABORATORIO B

Lezione 01: 27/02 martedi 10-12 Lezione 02: 06/03 martedi 10-12 Lezione 03: 13/03 martedi 10-12 Lezione 04: 20/03 martedi 10-12 Lezione 05: 27/03 martedi 10-12 Lezione 06: 03/04 martedi 10-12 Lezione 07: 17/04 martedi 10-12 Lezione 08: 24/04 martedi 10-12 Lezione 09: 04/05 venerdi 10-12 Lezione 10: 08/05 martedi 10-12

Dove? "laboratorio multimediale"

Page 2: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Informatica Umanistica A.A. 2005/2006

LEZIONE 6

Ripasso XML – DTDIntroduzione a XSL

Page 3: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Lezione 6SOMMARIO

1. Ripasso XML e concetti DTD2. Validare per imparare3. Ripasso di alcuni esempi4. Primi passi con XSL5. Primi esempi con XSL

Page 4: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

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

Page 5: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Breve riassunto progetto

PAGINA .XML (contenuto)

PAGINA .DTD (struttura - almeno 3 livelli)

PAGINA .XSL (visualizzazione)

VALIDATORE:http://validator.w3.org/

Page 6: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Un esempio più completo - File: lettera.xml

<?xml version="1.0" encoding="UTF-8" standalone=“yes" ?>

<!DOCTYPE lettera [<!ELEMENT lettera (to, from, intestazione, corpo_domanda)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT intestazione (#PCDATA)><!ELEMENT corpo_domanda (#PCDATA)>

]>

<lettera><to>Pippo</to><from>Nicola</from><intestazione>Domanda: </intestazione><corpo_domanda>Cosa fai stasera? </corpo_domanda>

</lettera>

DTD

Contenuto XML

Page 7: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Validare per imparare

http://validator.w3.org/

Page 8: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Riassunto:Definizione ELEMENTI

Gli elementi possono essere dichiarati con la sintassi:

<!ELEMENT nome-elemento tipo> nel caso di elemento che non ha figli.

<!ELEMENT nome-elemento (figli)> per un elemento con figli: i nomi dei figli vengono dichiarati all’interno delle parentesi.

Le virgole, separano gli elementi (figlio1, figlio2) indicano un ordine di successione obbligatorio.

Page 9: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Riassunto: Tipi di ELEMENTI

Gli elementi vuoti vengono dichiarati con la sintassi:<!ELEMENT nome-elemento EMPTY>

Gli elementi di tipo carattere sono dichiarati con la sintassi:<!ELEMENT nome-elemento (#PCDATA)>

Gli elementi di tipo misto sono dichiarati con la sintassi:<!ELEMENT nome-elemento ANY>

Page 10: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Riassunto:Cardinalità ELEMENTI

Elementi obbligatori, ma presenti una sola volta:<!ELEMENT nome-elemento (figlio)>

Obbligatori, e presenti almeno una volta:<!ELEMENT nome-elemento (figlio+)>

Facoltativi e presenti diverse volte:<!ELEMENT nome-elemento (figlio*)>

Facoltativi e, se presenti, una volta sola:<!ELEMENT nome-elemento (figlio?)>

Per dichiarare due elementi presenti in alternativa:<!ELEMENT TIPO (cassetta|disco)>

Page 11: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

ATTRIBUTI degli ELEMENTI

Gli attributi aggiungono informazioni extra sugli elementi. ESEMPIO HTML?

SINTASSI: <!ATTLIST nome-elemento nome-attributo tipo-attributo “valore-standard”>

ESEMPIO XML: <PAGAMENTO tipo="CHECK">10.000</PAGAMENTO> ESEMPIO DTD:<!ATTLIST PAGAMENTO TIPO CDATA "CHECK">

ESEMPIO XML: <contatto fax="555-667788" /> ESEMPIO DTD:

<!ATTLIST contatto fax CDATA #IMPLIED>

Page 12: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Attributi degli ELEMENTI (2)

Per ogni elemento possono essere indicati una serie di attributi (ATTLIST), definiti in base alla obbligatorietà o meno della loro presenza. Diversi tipi di presenza:

#REQUIRED, la presenza dell'attributo è obbligatorio

#FIXED, il valore dell'attributo è fisso #IMPLIED, l'attributo è previsto ma non

obbligatorio e non ha un valore di default.

Page 13: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Lista ATTRIBUTI

Sintassi: <!ATTLIST nome-elemento nome-attributo

(el1 | el2 |..) “valore-standard”> ESEMPIO DTD: <!ATTLIST pagamento tipo (check|

cash) "cash"> Il valore puo' essere o cash o check e cash e'

quello di default (se non viene specificato)

ESEMPIO XML: 1. <pagamento tipo="cash" />2. <pagamento tipo="check" />

Page 14: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Ripasso ENTITA’

Le entità servono per dichiarare dei testi o delle iscrizioni fisse che vengono inserite ripetutamente all’ interno dei documenti. Possono essere interne o esterne.

Sintassi:<!ENTITY nome-entità “valore">

DTD:<!ENTITY nome “Mario Rossi">

XML: (nb: l’entità costituisce parte dell’elemento email)

<email> &nome;@ditta.it </email>

Page 15: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

XSL (eXtensible Stylesheet Language)

XSL = eXtensible Stylesheet Language

anche detto “foglio di stile”

Noooo, un altro linguaggio!?! Ma a che serve l'XSL???

Page 16: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

XSL per immagini

immagine a http://www.cmswatch.com/images/XSL-transform-final.gif

Page 17: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

XSL per immagini

immagine a http://www.intranetjournal.com/articles/200010/tmk0900-3b.gif

Page 18: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

XSL per immagini

immagine a http://www.intranetjournal.com/articles/200104/wireless_files/Wireless6.gif

Page 19: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

XSL per immagini

immagine a http://architag.com/tag/images/fig14060102-1.gif

Page 20: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Basi dell’XSL

Un file XSL è formato da una serie di template (modelli) che contengono le regole di trasformazione dei tag del documento XML. Questi template vengono applicati ai tag corrispondenti nel file XML.

NB: nel nostro caso, le notazioni saranno in formato HTML

Esempio intuitivo. con il file XSL potro' dire:

l'elemento “cognome” del file XML trasformalo in un elemento “H3” dell'HTML

Page 21: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Per applicare una formattazione ad un documento XML è necessario richiamare il documento XSL dal file XML.

Richiamare il file XSL dal documento XML

Jkfaslfd

Dkl;fsakl fdksjl

Fdsjflsdf

fsdjlsfjls

Documento rubrica.xml

Documento rubrica.xsl

Jkfaslfd

Dkl;fsakl fdksjl

Fdsjflsdf

fsdjlsfjls

Pagina web

Page 22: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Per applicare una formattazione ad un documento XML è necessario richiamare il documento XSL dal file XML.

Ok, ma come e dove? Seconda riga, cosi':

<?xml version="1.0" encoding="UTF-8" standalone=”yes" ?><?xml-stylesheet type="text/xsl" href="./rubrica.xsl"?>

<!DOCTYPE RUBRICA [<!ELEMENT RUBRICA (PERSONA)*><!ELEMENT PERSONA (DATI_ANAGRAFICI, TELEFONO)><!ELEMENT DATI_ANAGRAFICI (NOME*, COGNOME*, INDIRIZZO?)>

Richiamare il file XSL dal documento XML

Page 23: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

E ora?

Ora vedremo a livello teorico i principali costrutti dell'XSL

Chi se la sente puo' provare ad applicare quanto vede (velocemente!) ad uno dei file XML (RSS) che appaiono a http://www.repubblica.it/servizi/rss/index.html

in modo da farlo apparire come la homepage di corriere.it

Salvatevi il file in locale. Facile? Noooooooooooo

Page 24: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Le basi dei template

In un file XSL le regole di trasformazione sono contenute all'interno degli elementi template

<xsl:template>...</xsl:template>

Tramite l'attributo match possiamo specificare il tag a cui si riferiscono queste regole.

<xsl:template match="RUBRICA">

Nel nostro esempio vedremo che il template contiene le regole di trasformazione dell'elemento root del file XML (l'elemento <rubrica>).

Page 25: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Esempio template

<xsl:template match="RUBRICA"><HTML> <HEAD> <TITLE>Rubrica di esempio</TITLE> </HEAD> <BODY BGCOLOR="#559cd7"> ………………..</HTML>

</xsl:template>

Page 26: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

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!)

Page 27: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Elementi principali per cercare elementi nel documento XML

1. Estrazione semplice dei valori 2. Estrazione condizionata3. Estrazione con if

Page 28: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

ESTRAZIONE ELEMENTI SEMPLICE: for-each e value-of

SINTASSI:

<xsl:for-each select="nome-elemento">

<xsl:value-of select="./nome-elemento"/>

</xsl:for-each>NB: attenzione al percorso

Page 29: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

ESTRAZIONE ELEMENTI SEMPLICE: for-each e value-of

SINTASSI:

<xsl:for-each select="nome-elemento">

<xsl:value-of select="./nome-elemento"/>

</xsl:for-each>- <xsl:....> 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

Page 30: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

ESTRAZIONE CONDIZIONATA DI ELEMENTI: test con []

SINTASSI:<xsl:for-each select=“nome-elemento">

<xsl:for-each select="./[nome-elemento='valore-

elemento']">

</xsl:for-each></xsl:for-each>

Page 31: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

ESTRAZIONE CONDIZIONATA DI ATTRIBUTI: test con []

SINTASSI:<xsl:for-each select=“nome-elemento">

<xsl:for-each select="./*[@nome-attributo=‘valore-

attributo']">

</xsl:for-each></xsl:for-each>

Page 32: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

ESTRAZIONE CONDIZIONATA: test con if

<xsl:for-each select="nome-attributo">

<xsl:if test="./nome-elemento= 'valore-attributo' ">

</xsl:if>

</xsl:for-each>

Page 33: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Primo file XSL

Cosa facciamo ora?

Creiamo un foglio di stile (XSL) per rubrica.xml

Istruzioni a

http://moloko.itc.it/paoloblog/a.html

ATTENZIONE!!! Al fine di modificare i file con un editor sotto Windows, ci conviene dare estensione .xml ai file XSL. Useremo quindi la seguente convenzione

File XML: rubrica_dati.xml

File XSL: rubrica_stile_001.xml

Applicheremo diversi fogli di stile allo stesso XML cambiando la seconda riga, quella che definisce il foglio di stile da usare

Page 34: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Esempio completo – Rubrica.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><?xml-stylesheet type="text/xsl" href="./rubrica_stile_001.xml"?>

<!DOCTYPE RUBRICA [<!ELEMENT RUBRICA (PERSONA)*><!ELEMENT PERSONA (DATI_ANAGRAFICI, TELEFONO)><!ELEMENT DATI_ANAGRAFICI (NOME*, COGNOME*, INDIRIZZO?)><!ELEMENT TELEFONO (FISSO?, MOBILE?)><!ELEMENT NOME (#PCDATA)><!ELEMENT COGNOME (#PCDATA)><!ELEMENT FISSO (NUMERO+)><!ELEMENT MOBILE (NUMERO+)><!ELEMENT NUMERO (#PCDATA)><!ELEMENT INDIRIZZO ((PIAZZA | VIA)?, N_CIVICO?, CITTA?, CAP?)><!ELEMENT PIAZZA (#PCDATA)><!ELEMENT VIA (#PCDATA)><!ELEMENT N_CIVICO (#PCDATA)><!ELEMENT CITTA (#PCDATA)><!ELEMENT CAP (#PCDATA)><!ATTLIST NUMERO prefisso CDATA #IMPLIED compagnia (wind | vodafone | tim | tre )

#IMPLIED>]>

Page 35: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Esempio completo – Rubrica.xml

<RUBRICA> <PERSONA>

<DATI_ANAGRAFICI><NOME>Giulio</NOME><COGNOME>Cesare</COGNOME><INDIRIZZO>

<PIAZZA>Bruto</PIAZZA><N_CIVICO>10</N_CIVICO><CITTA>Roma</CITTA><CAP>10100</CAP>

</INDIRIZZO></DATI_ANAGRAFICI><TELEFONO>

<FISSO><NUMERO prefisso="06">321654</NUMERO>

</FISSO><MOBILE>

<NUMERO compagnia="wind">32557684785</NUMERO></MOBILE>

</TELEFONO></PERSONA>

<PERSONA>

………………………………….

</PERSONA></RUBRICA>

Page 36: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Esempio completo – rubrica_stile_001.xml (e' un XSL!)

<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html><head>

<title>Rubrica</title></head><body>

<font face="Verdana,Arial"><center><h1>Rubrica</h1>Qui si usa la sintassi per visualizzare il contenuto del file rubrica.xml.Si possono usare immagini, link e altro codice HTML come ad esempio:<a href="http://www.google.it"><strong> Il motore di Ricerca google </strong></a>Oppure visualizzare tutto il contenuto xml:<h5>Rubrica:</h5>

<xsl:apply-templates/>

<strong>Per non vederlo cosi la prossima volta si spieghera' la sintassi XSL: Lezione 6-7 </strong></center></font>

</body></html>

</xsl:template></xsl:stylesheet>

Page 37: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Esercizio finale

Modificare sintassi rubrica.xsl

Page 38: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

XSLT – esempio1: people.xml

<?xml version="1.0" ?><?xml-stylesheet href="people.xsl" type="text/xsl" ?><people>

<person><name>

<first_name>Alan</first_name><last_name>Turing</last_name>

</name><born>1912</born><died>1954</died><profession>computer scientist</profession><profession>mathematician</profession><profession>cryptographer</profession>

</person>… (altre persone)

</people>

Page 39: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

XSLT – esempio1: people.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" version="1.0">

<xsl:template>

<xsl:apply-templates/>

</xsl:template>

<xsl:template match="people"><html>

<body bgcolor="#995588" text="white"><center><h1>Scienziati famosi</h1></center> <hr/><table border="1">

<xsl:for-each select="person"><tr bgcolor=“silver">

<td colspan=“4"><xsl:value-of select="name"/></td>

</tr>

Page 40: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Continua…

<tr>

<td>Anno di nascita: </td><td><xsl:value-of select="born"/></td>

<td>Anno di morte: </td><td><xsl:value-of select="died"/></td>

</tr>

</xsl:for-each></table>

</body></html>

</xsl:template>

</xsl:stylesheet>

Page 41: Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi 10-12  Lezione 02: 06/03martedi 10-12  Lezione 03: 13/03martedi 10-12  Lezione 04:

Esercizio

1. Costruire la DTD per people.xml2. Validare people.xml3. Inserire l’entità autore4. Richiamare l’entità autore nel file xsl

usando il costrutto<xsl:value-of select=“…..