Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.
-
Upload
annunciata-lillo -
Category
Documents
-
view
214 -
download
0
Transcript of Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.
![Page 1: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/1.jpg)
Informatica Umanistica A.A. 2005/2006
LEZIONE 6
Ripasso XML – DTDXSL
![Page 2: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/2.jpg)
Lezione 6SOMMARIO
1. Ripasso: XML2. Ripasso: DTD3. Ripasso: validare per imparare4. XSL (XPath, XSLT, XSL-FO)5. XML Namespace6. XPath7. XSLT8. Esempi
![Page 3: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/3.jpg)
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
![Page 4: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/4.jpg)
XML – DTD – XSLNel 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
![Page 5: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/5.jpg)
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
![Page 6: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/6.jpg)
La dichiarazione XML La dichiarazione XML è obbligatoria e deve essere posta all’immediato
inizio del documento (ovvero come primo carattere! Niente spazi prima!):
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
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
![Page 7: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/7.jpg)
Piccolo esempio (2)
<?xml version="1.0" encoding="UTF-8" standalone="no" ?><lettera>Caro Beatrice, ti scrivo per comunicarti…
<saluti> cari saluti,<firma> Dante </firma>
</saluti></lettera>
Ripasso XML
![Page 8: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/8.jpg)
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
![Page 9: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/9.jpg)
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.
<!-- Questo è ignorato dal parser -->
Ripasso XML
![Page 10: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/10.jpg)
Elementi - Sintassi Il tag di apertura di un elemento ha la forma seguente:
<nome attributi> 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> 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):
<nome attributi />
Ripasso XML
![Page 11: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/11.jpg)
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
![Page 12: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/12.jpg)
Attributi - Sintassi
Sintassi di base da usare all’interno dei tag di apertura:
<nome attributo="valore"> Una lista di attributi si ottiene elencando più attributi separati
da uno o più spazi:
<nome att1="vl1" att2="vl2"> Per includere virgolette nel valore, è necessario usare un tipo
diverso da quello usato per delimitare il valore stesso:
<nome att1=' "virgolette" '> Si possono includere riferimenti a entità nel valore:
<nome att1="" salve "">
Ripasso XML
![Page 13: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/13.jpg)
Attributi Gli elementi possono contenere uno o più attributi, che
sono termini aggiuntivi che definiscono con più precisione l’elemento, es. <section id="uno"> (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.
<romanzo file="Nicola.doc"> …</romanzo>
<capitolo N="1">Capitolo primo</capitolo>
Ripasso XML
![Page 14: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/14.jpg)
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. <section id=""> ).
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
![Page 15: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/15.jpg)
Entità Abbiamo visto che le entità sono sequenze di caratteri speciali dalla forma &nome; : XML permette di definire le proprie entità utilizzando la dichiarazione <!ENTITY>
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):
<!ENTITY html "HyperText Markup Language">
In questo modo quando nel file XML userò l’entità &html; questa verrà sostituita con l’intera stringa
Ripasso XML
![Page 16: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/16.jpg)
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: <codice> <libro><capitolo></capitolo></libro> </codice>
Qui, invece di sostituire tutti i caratteri speciali con entità, utilizziamo una sezione CDATA:
<codice>
<![CDATA[
<libro><capitolo></capitolo></libro>
]]>
</codice>
Ciò che sta all’interno di una sezione CDATA verrà sempre considerato come testo, anche se contiene codice XML ( = non verrà analizzato)
Ripasso XML
![Page 17: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/17.jpg)
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).
<codice> <![CDATA[
<libro><capitolo></capitolo>
</libro>
]]> </codice>
<testo>Oggi è una bella giornata. </testo>
Ripasso XML
![Page 18: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/18.jpg)
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
![Page 19: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/19.jpg)
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
![Page 20: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/20.jpg)
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 validiRipasso XML/DTD
![Page 21: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/21.jpg)
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
![Page 22: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/22.jpg)
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. <?xml version="1.0">
<!DOCTYPE ARTICOLO SYSTEM "articolo.dtd">
URL del DTD definito in articolo.dtdNome del documento
Ripasso DTD
![Page 23: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/23.jpg)
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!):
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
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
![Page 24: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/24.jpg)
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 è:
<!DOCTYPE ElementoRadice [ ...Definizioni del DTD... ]>
ElementoRadice (obbligatorio) è il nome dell’elemento radice del documento.
Definizioni del DTD (opzionale) è un DTD specificato inline al documento.
Ripasso DTD
![Page 25: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/25.jpg)
Come scrivo il DTD per il mio XML: sintassi
La sintassi di un DTD si basa principalmente su due dichiarazioni:
<!ELEMENT>
Definisce gli elementi utilizzabili nel documento XML e la struttura del documento
<!ATTLIST>
Definisce la lista di attributi per ciascun elemento
Ripasso DTD
![Page 26: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/26.jpg)
DTD per la rubrica<?xml version="1.0" standalone="yes" ?><!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 | omnitel | tim | blu ) #IMPLIED>]>
Ripasso DTD
![Page 27: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/27.jpg)
Altri tipi di dichiarazioni <!ELEMENT>EMPTY e ANY
Elementi vuoti:
<!ELEMENT nome_elemento EMPTY>
Elementi che contengono qualsiasi combinazione di dati:
<!ELEMENT nome_elemento ANY>Es: <!ELEMENT note ANY>
Ripasso DTD
![Page 28: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/28.jpg)
Altri tipi di dichiarazioni <!ELEMENT>#PCDATA
Elementi che contengono Parsed Character Data (PCDATA): <!ELEMENT nome_elemento (#PCDATA)>
Elementi che contengono solo una sequenza di sotto-elementi (come nell’esempio della rubrica):
<!ELEMENT nome_elemento (sotto-elemento1, sotto-elemento2)> Anche i sotto-elementi vanno dichiarati nel DTD:
<!ELEMENT PERSONA (DATI_ANAGRAFICI, TELEFONO)><!ELEMENT DATI_ANAGRAFICI (NOME*, COGNOME*, INDIRIZZO?)><!ELEMENT TELEFONO (FISSO?, MOBILE?)>
Ripasso DTD
![Page 29: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/29.jpg)
Altri tipi di dichiarazioni <!ELEMENT>solo un sotto-elemento
Elementi che contengono 1 unico sotto-elemento <!ELEMENT nome_elemento (sotto-elemento)>
Elementi che contengono minimo 1 occorrenza di un sotto-elemento
<!ELEMENT nome_elemento (sotto-elemento+)>
Elementi che contengono 0 o 1 occorrenza di un sotto-elemento <!ELEMENT nome_elemento (sotto-elemento?)>
Elementi che contengono 1 solo tra una lista di sotto-elementi <!ELEMENT nome_elemento (sotto-elemento1 | sotto-
elemento | sotto-elemento3 )>
Ripasso DTD
![Page 30: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/30.jpg)
Altri tipi di dichiarazioni <!ELEMENT>contenuto misto
Elementi che hanno un contenuto misto, cioè dati oppure sottoelementi:
Esempio: <!ELEMENT NOTE (#PCDATA|TO|FROM|HEADER|MESSAGE)*>
Ripasso DTD
![Page 31: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/31.jpg)
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
![Page 32: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/32.jpg)
<!ATTLISTnome-elementonome-attributotipo-attributovalore-di-default>
Sintassi <!ATTLIST>
Esempio:<!ATTLIST pagamento tipo CDATA "assegno">
In XML diventa:<pagamento tipo="assegno" />
Ripasso DTD
![Page 33: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/33.jpg)
Sintassi <!ATTLIST><!ATTLISTnome-elementonome-attributotipo-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
![Page 34: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/34.jpg)
Sintassi <!ATTLIST><!ATTLISTnome-elementonome-attributotipo-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
![Page 35: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/35.jpg)
Validare per imparare
Per validare l'HTMLhttp://validator.w3.org/#validate_by_input
Per validare l'XMLLo apriamo col browser che ci dice se e' valido
oppure http://www.w3schools.com/xml/xml_validator.asp
Ripasso XML/DTD
![Page 36: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/36.jpg)
Informatica Umanistica A.A. 2005/2006
LEZIONE 6
XSL - XSLT
![Page 37: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/37.jpg)
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
![Page 38: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/38.jpg)
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.
![Page 39: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/39.jpg)
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 <table> 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 <table> in XML potrebbe significare una tabella, ma anche qualsiasi altra cosa: il browser non sa come visualizzare il tag <table> in XML
CSS XSL
![Page 40: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/40.jpg)
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.
![Page 41: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/41.jpg)
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: http://www.w3schools.com/xsl/default.asp
![Page 42: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/42.jpg)
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
![Page 43: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/43.jpg)
Esempio file .xsl<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><table><xsl:for-each select="RUBRICA/PERSONA"><tr><td><xsl:value-of select="DATI_ANAGRAFICI/COGNOME"/></td></tr></xsl:for-each></table></xsl:template></xsl:stylesheet>
Dichiarazione XMLRiferimento a un namespaceCodice XSLTCodice HTMLEspressioni XPath
![Page 44: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/44.jpg)
Cosa bisognerebbe sapere per usare XSLT
HTML XML XML Namespace (lo vediamo ora) XPath (vediamo la sintassi necessaria ai
nostri scopi)
![Page 45: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/45.jpg)
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: http://www.w3schools.com/xml/xml_namespaces.asp
![Page 46: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/46.jpg)
XML NamespaceEsempio: nomi in conflitto
In XML i nomi degli elementi sono definiti dal programmatore. Codice XML che descrive
una tabella HTML:<table>
<tr> <td>Mele</td> <td>Banane</td> </tr>
</table>
Codice XML che descrive un tavolo:<table>
<name>Tavolo da giardino</name>
<width>80</width> <length>120</length>
</table>
Entrambi i frammenti XML contengono un elemento <table>, 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.
![Page 47: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/47.jpg)
XML Namespaceprefissi
Per risolvere questo problema, possiamo usare un sistema di prefissi.
Esempio: assegno "h:" per indicare "html", e "m:" per "mobili" Tabella HTML:
<h:table><h:tr>
<h:td>Mele</h:td>
<h:td>Banane</h:td>
</h:tr></h:table>
Tavolo:<m:table>
<m:name>Tavolo da giardino</m:name>
<m:width>80</m:width>
<m:length>120</m:length>
</m:table> Ora che abbiamo associato ad ogni elemento un prefisso "h:" (html) o "m:" (mobili), dobbiamo definire un namespace per questi prefissi.
![Page 48: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/48.jpg)
XML NamespaceCome definisco un namespace?
Assegnando l'attributo xmlns al tag di apertura di un elemento, così:
<prefisso:tag_di_apertura xmlns:prefisso="URI">
NB: quando definisco un namespace per un elemento, tutti i nodi "figli" con lo stesso prefisso saranno associati con quell'elemento.
Esempi: <h:table xmlns:h="http://www.w3.org/TR/html4/"> <m:table xmlns:m="http://www.w3schools.com/mobili">
![Page 49: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/49.jpg)
<radice>
<h:table xmlns:h="http://www.w3.org/TR/html4/"> <h:tr>
<h:td>Mele</h:td>
<h:td>Banane</h:td>
</h:tr>
</h:table>
<m:table xmlns:m="http://www.w3schools.com/mobili"> <m:name>Tavolo da giardino</m:name>
<m:width>80</m:width>
<m:length>120</m:length>
</m:table>
</radice>
XML NamespaceL'esempio di prima diventa:
L'attributo xmlns nel tag <table> assegna ai prefissi h:
e m: dei namespace.
![Page 50: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/50.jpg)
XML Namespacedichiarazione del namespace nell’elemento radice
<radicexmlns:h="http://www.w3.org/TR/html4/"xmlns:m="http://www.w3schools.com/mobili">
<h:table><h:tr>
<h:td>Mele</h:td><h:td>Banane</h:td>
</h:tr></h:table><m:table>
<m:name>Tavolo da giardino</m:name><m:width>80</m:width><m:length>120</m:length>
</m:table></radice>
![Page 51: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/51.jpg)
XML NamespaceNamespaces di default
Definire un namespace di default per un certo elemento ci risparmia l'uso dei prefissi per tutti gli elementi figli.La sintassi è:
<tag_di_apertura xmlns="namespaceURI">
![Page 52: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/52.jpg)
XML NamespaceGli esempi di prima diventano:
Tabella HTML:<table xmlns="http://www.w3.org/TR/html4/"> <tr>
<td>Mele</td><td>Banane</td>
</tr></table>
Tavolo:<table xmlns="http://www.w3schools.com/mobili"> <name>Tavolo da giardino</name>
<width>80</width> <length>120</length></table>
![Page 53: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/53.jpg)
Ma nella realtà? Namespace e
XSLT
<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><html><body> <h2>My CD Collection</h2> <table border="1"> <tr> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table></body></html></xsl:template></xsl:stylesheet>
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="http://www.w3.org/1999/XSL/Transform"
![Page 54: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/54.jpg)
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: http://www.w3schools.com/xpath/default.asp
![Page 55: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/55.jpg)
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
![Page 56: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/56.jpg)
XpathSintassi
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?)
![Page 57: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/57.jpg)
XpathSintassi
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 corrente
@(Ctrl+Alt+@)
Seleziona gli attributi
![Page 58: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/58.jpg)
<?xml version="1.0" encoding="ISO-8859-1"?>
<libreria>
<libro> <titolo lingua="inglese">Harry Potter</titolo> <prezzo>29.99</prezzo>
</libro>
<libro> <titolo lingua="inglese">Learning XML</titolo> <prezzo>39.95</prezzo>
</libro>
</libreria>
Sintassi XPath: esempilibreria.xml
![Page 59: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/59.jpg)
libreria Seleziona tutti i figli dell’elemento libreria/
oppure /libreria Seleziona l’elemento radice libreria
libreria/libro Seleziona tutti gli elementi libro figli di libreria
//libro Seleziona tutti gli elementi libro (non importa a che livello sono nel documento)
libreria//libroSeleziona tutti gli elementi libro discendenti di libreria (non importa a che livello sono sotto libreria)
//@lingua Seleziona tutti gli attributi lingua
Sintassi XPath: esempilibreria.xml
![Page 60: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/60.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
Ricordate la rubrica in XML?
![Page 61: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/61.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
Come seleziono tutti gli elementi PERSONA figli di RUBRICA?
RUBRICA/PERSONA
![Page 62: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/62.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
Come seleziono tutti gli elementi CAP?
Dove sta CAP?
RUBRICA/PERSONA/DATI_ANAGRAFICI/INDIRIZZO/CAP
![Page 63: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/63.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
Come seleziono tutti gli elementi NOME?
RUBRICA/PERSONA/DATI_ANAGRAFICI/NOME
![Page 64: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/64.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
Come seleziono tutti gli elementi COGNOME?
RUBRICA/PERSONA/DATI_ANAGRAFICI/COGNOME
![Page 65: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/65.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
Come seleziono l’elemento NUMERO di FISSO?
RUBRICA/PERSONA/TELEFONO/FISSO/NUMERO
![Page 66: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/66.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
Come seleziono l’attributo prefisso dell’elemento NUMERO di FISSO?
RUBRICA/PERSONA /TELEFONO/FISSO/NUMERO/@PREFISSO
![Page 67: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/67.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
Come seleziono l’attributo compagnia dell’elemento NUMERO di FISSO?
RUBRICA/PERSONA /TELEFONO/FISSO/NUMERO/@COMPAGNIA
![Page 68: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/68.jpg)
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
/TELEFONO/FISSO/NUMERO/@PREFISSO RUBRICA/PERSONA
/TELEFONO/FISSO/NUMERO/@COMPAGNIA
XpathSintassi: esempi
![Page 69: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/69.jpg)
XpathSintassi – 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!
![Page 70: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/70.jpg)
XpathSintassi – 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:
RUBRICA/PERSONA/TELEFONO/FISSO/NUMERO[@prefisso=06]
Seleziona l’elemento NUMERO il cui attributo prefisso ha come valore 06
![Page 71: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/71.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
RUBRICA/PERSONA/TELEFONO/FISSO/NUMERO[@prefisso=06]
Seleziona l’elemento NUMERO il cui attributo prefisso ha come valore 06
![Page 72: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/72.jpg)
XpathSintassi – 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.
![Page 73: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/73.jpg)
XpathSintassi – 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
![Page 74: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/74.jpg)
<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="blu">32557684785</NUMERO></MOBILE> </TELEFONO> </PERSONA> <PERSONA> <DATI_ANAGRAFICI> <NOME>Giovanni</NOME> <COGNOME>Pompeo</COGNOME> <INDIRIZZO>
<PIAZZA>Catilina</PIAZZA><N_CIVICO>12</N_CIVICO><CITTA>Milano</CITTA><CAP>12100</CAP></INDIRIZZO>
</DATI_ANAGRAFICI> <TELEFONO> <FISSO><NUMERO prefisso="02">96877564</NUMERO></FISSO> <MOBILE><NUMERO compagnia="tim">3356545342</NUMERO></MOBILE> </TELEFONO> </PERSONA></RUBRICA>
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
![Page 75: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/75.jpg)
RUBRICA
PERSONA PERSONA
DATI_ANAGRAFICI DATI_ANAGRAFICITELEFONO TELEFONO
NOME COGNOME INDIRIZZO FISSO MOBILE NOME COGNOME INDIRIZZO FISSO MOBILE
La rubrica, vista come albero
RUBRICA/PERSONA[position()=2]RUBRICA/PERSONA[last()]
![Page 76: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/76.jpg)
XpathSintassi – Predicati e funzioni: esempi
Cosa indicano le seguenti stringhe?
RUBRICA/PERSONA[position()=2]/DATI_ANAGRAFICI/NOME
RUBRICA/PERSONA[last()]/DATI_ANAGRAFICI/NOME
RUBRICA/PERSONA/TELEFONO/FISSO/NUMERO[@prefisso=06]/../../../DATI_ANAGRAFICI/NOME
![Page 77: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/77.jpg)
RUBRICA
PERSONA PERSONA
DATI_ANAGRAFICI DATI_ANAGRAFICITELEFONO TELEFONO
NOME COGNOME INDIRIZZO FISSO MOBILE NOME COGNOME INDIRIZZO FISSO MOBILE
RUBRICA/PERSONA[position()=2]/DATI_ANAGRAFICI/NOME
![Page 78: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/78.jpg)
RUBRICA
PERSONA PERSONA
DATI_ANAGRAFICI DATI_ANAGRAFICITELEFONO TELEFONO
NOME COGNOME INDIRIZZO FISSO MOBILE NOME COGNOME INDIRIZZO FISSO MOBILE
RUBRICA/PERSONA[last()]/DATI_ANAGRAFICI/NOME
![Page 79: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/79.jpg)
RUBRICA
PERSONA PERSONA
DATI_ANAGRAFICI DATI_ANAGRAFICITELEFONO TELEFONO
NOME COGNOME INDIRIZZO FISSO MOBILE NOME COGNOME INDIRIZZO FISSO MOBILE
RUBRICA/PERSONA/TELEFONO/FISSO/NUMERO[@prefisso=06]/../../../DATI_ANAGRAFICI/NOME
prefisso=“06” prefisso=“02”
![Page 80: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/80.jpg)
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
//titolo[@lingua='inglese'] 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 35.00
/libreria/libro[prezzo>35.00]/titoloSeleziona tutti gli elementi titolo degli elementi libro che hanno un elemento prezzo con valore
maggiore di 35.00
XpathSintassi – Altri predicati – libreria.xml
![Page 81: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/81.jpg)
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
![Page 82: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/82.jpg)
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
![Page 83: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/83.jpg)
rubrica001.xsl
Come specifico l’XSL per il mio XML?rubrica.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><?xml-stylesheet type="text/xsl" href="./rubrica009.xsl"?>
<!DOCTYPE RUBRICA [...dichiarazioni DTD...]>
<RUBRICA>...dati XML...</RUBRICA>
…trasformazioni XSL…
![Page 84: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/84.jpg)
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:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">...template di trasformazione...</xsl:stylesheet>
![Page 85: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/85.jpg)
XSLT – Come avvengono le trasformazioni?
o All'interno dell'elemento radice <xsl:stylesheet> 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="http://www.w3.org/1999/XSL/Transform" punta al namespace XSLT ufficiale del W3C.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">...template di trasformazione...</xsl:stylesheet>
![Page 86: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/86.jpg)
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?
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
...definizione dell'output...
</xsl:template>
</xsl:stylesheet>
Ricordate questo simbolo?
Indica l’elemento radice in linguaggio XPath.
![Page 87: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/87.jpg)
Esempio template
<xsl:template match="/"><HTML> <HEAD> <TITLE>Rubrica di esempio</TITLE> </HEAD> <BODY BGCOLOR="#559cd7"> ………………..</HTML>
</xsl:template>
![Page 88: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/88.jpg)
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 89: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/89.jpg)
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
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
...definizione dell'output...
</xsl:template>
</xsl:stylesheet>
Riuscite a pensare ad un’analogia con i CSS?Le regole CSS!
![Page 90: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/90.jpg)
Un template XSLT individua un elemento (o un insieme di elementi) di un documento XML utilizzando un’espressione XPath, e …
XSLT – Cos’è un template
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">
<xsl:value-of select="RUBRICA/PERSONA/DATI_ANAGRAFICI/NOME"/>
</xsl:template></xsl:stylesheet>
![Page 91: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/91.jpg)
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
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">
<xsl:value-of select="RUBRICA/PERSONA/DATI_ANAGRAFICI/NOME"/>
</xsl:template></xsl:stylesheet>
![Page 92: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/92.jpg)
L'elemento <xsl:template> 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
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">
<xsl:value-of select="RUBRICA/PERSONA/DATI_ANAGRAFICI/NOME"/>
</xsl:template></xsl:stylesheet>
![Page 93: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/93.jpg)
L'elemento <xsl:value-of> contenuto all'interno dell'elemento <xsl:template> cattura il valore di un elemento o di un attributo e lo produce come output nel documento HTML risultante.
XSLT – Template: <xsl:value-of>
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/">
<xsl:value-of select="RUBRICA/PERSONA/DATI_ANAGRAFICI/NOME"/>
</xsl:template></xsl:stylesheet>
![Page 94: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/94.jpg)
L'elemento <xsl:for-each select=""/> applica una certa regola ad ogni elemento indicato come valore dell’attributo select.
XSLT – Template: <xsl:for-each>
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><table><xsl:for-each select="RUBRICA/PERSONA"><tr><td><xsl:value-of select="DATI_ANAGRAFICI/COGNOME"/></td></tr></xsl:for-each></table></xsl:template></xsl:stylesheet>
![Page 95: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/95.jpg)
XSLT – Template: <xsl:sort>o L'elemento <xsl:sort select=""> ordina l’output a seconda
dell’espressione indicata come valore dell’attributo select. Va aggiunto all’interno dell’elemento <xsl:for-each>.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><table><xsl:for-each select="RUBRICA/PERSONA"><xsl:sort select="DATI_ANAGRAFICI/COGNOME"/><tr><td><xsl:value-of select="DATI_ANAGRAFICI/COGNOME"/></td></tr></xsl:for-each></table></xsl:template></xsl:stylesheet>
I cognomi saranno visualizzati in ordine alfabetico
![Page 96: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/96.jpg)
XSLT – Template: <xsl:if>o L'elemento <xsl:if test=""> applica una certa regola solo agli elementi
che soddisfano la condizione espressa nel valore dell’attributo test.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><table><xsl:for-each select="RUBRICA/PERSONA"><xsl:sort select="DATI_ANAGRAFICI/COGNOME"/><xsl:if test="DATI_ANAGRAFICI/NOME = 'Giovanna'"><tr><td><xsl:value-of select="DATI_ANAGRAFICI/COGNOME"/></td></tr></xsl:if></xsl:for-each></table></xsl:template></xsl:stylesheet>
![Page 97: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/97.jpg)
L'elemento <xsl:choose> si usa assieme agli elementi <xsl:when> e <xsl:otherwise> per ottenere diversi output in base a condizioni diverse.
All’interno dell’elemento <xsl:choose> le condizioni da valutare si esprimono tramite gli elementi <xsl:when>.
L’elemento <xsl:otherwise> indica l’output da generare nel caso nessuna delle condizioni precedenti sia vera
XSLT – Template: <xsl:choose>, <xsl:when>, <xsl:otherwise>
![Page 98: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/98.jpg)
La sintassi è la seguente:
<xsl:choose>
<xsl:when test="condizione">
... some output ...
</xsl:when>
<xsl:otherwise>
... some output ....
</xsl:otherwise>
</xsl:choose>
XSLT – Template: <xsl:choose>, <xsl:when>, <xsl:otherwise>
Scegli:
Quando questa condizione è vera, allora dammi questo output
Altrimenti, dammi quest’altro output
![Page 99: Informatica Umanistica A.A. 2005/2006 LEZIONE 6 Ripasso XML – DTD XSL.](https://reader035.fdocument.pub/reader035/viewer/2022070313/5542eb6b497959361e8d8137/html5/thumbnails/99.jpg)
XSLT – Template: <xsl:choose>, <xsl:when>, <xsl:otherwise><table><xsl:for-each select="RUBRICA/PERSONA"><xsl:choose><xsl:when test="DATI_ANAGRAFICI/INDIRIZZO/CAP > '11000'"><tr bgcolor="#DDDDDD"><td><xsl:value-of select="DATI_ANAGRAFICI/COGNOME"/></font></td></tr></xsl:when><xsl:otherwise><tr bgcolor="#ffffff"><td><xsl:value-of select="DATI_ANAGRAFICI/COGNOME"/></td></tr></xsl:otherwise></xsl:choose></xsl:for-each></table>