Document Type Definition

Slides:



Advertisements
Presentazioni simili
CSS (Cscading Style Sheet Fogli di stile a cascata)
Advertisements

DTD Document Type Definition per XML
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
HTML+XML= XHTML Il ritorno al futuro del WEB A cura di Barbara Lotti.
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Lezione 18 MIDI e XML Programmazione MIDI (Prof. Luca A. Ludovico)
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
Introduzione ai CSS. Cosa è successo allHTML Perché usare i CSS Introduzione ai CSS Fondamenti.
DTD Laurea Magistrale in Informatica Chapter 03 Modulo del corso Thecnologies for Innovation.
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.
1 Scoprire e capire HTML Creare semplici pagine WEB Maria Laura Alessandroni.
Laboratorio di Applicazioni Informatiche II mod. A
XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
Linguaggi di marcatura e fogli stile Presentazione del corso.
XHTML Danilo Deana. XHTML2 XHTML (eXtensible HyperText Markup Language) XHTML è una riformulazione di HTML come applicazione XML. Utilizzando XHTML è
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
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.
Un’introduzione a HTML (I)
Introduzione e nozioni fondamentali di sintassi
XML per documenti e applicazioni transazionali su Internet Alessio Saltarin Progetto XML Factory.
Lezione 2 Programmare in ASP
Corso di PHP.
Linguaggi per il Web Linguaggi di markup: CSS. Cascading Style Sheets (CSS) servono per facilitare la creazione di pagine HTML con un aspetto uniforme.
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
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.
HyperText Markup Language 17-23/6/08 Informatica applicata B Cristina Bosco.
2a Lezione: Martedì 6 Febbraio – HTML Comandi base
Cascading Style Sheet (Fogli di Stile in Cascata)
HTML Lezione 8 I collegamenti ipertestuali (link).
Il metalinguaggio XML: la nuova frontiera per la codifica dellinformazione Relatore: Ing. Marco Porta Tesi di Laurea di: Andrea Mocchi ANNO ACCADEMICO.
Creare pagine web Xhtlm. Struttura di una pagina.
HTML Lezione 3 Stili.
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 “Profe, ma io a casa l’HTML non ce l’ho!“
Il linguaggio HTML Antonella Schiavon – settembre 2008 rev. 1 – aprile 2011.
HTML HyperText Markup Language Linguaggio per marcare un’Ipertesto
Informatica Umanistica A.A. 2007/2008 LEZIONE 4 eXtensible Markup Language (XML) INTRODUZIONE.
Corso Web CSV – Andiamo on-line 1 Andiamo on-line Corso di formazione Elementi base per la costruzione di un sito web.
Sintassi e regole dei CSS
XHTML Corso linguaggi per il web a.s. 2011/2012 ITIS A. Righi – Corsico Relatore – Aldo Guastafierro.
CORSO Di WEB DESIGN prof. Leonardo Moriello
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 
HTML HTML e il web.
HTML e CSS C. Gena, C. Picardi, J. Sproston HTML e CSS.
A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language.
PROGETTO… Internet Providers, registrazione del dominio Costruire una home page … e renderla visibile sul Web.
CSS Cascading Style Sheet
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.
Creazione di pagine per Internet Brevi note a cura di Emanuele Lana
Problemi, algoritmi e programmazione
Laboratorio di XHTML e CSS
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
2 Indice Un esempio Che cosa è A cosa serve Confronto con HTML Punti di forza La sua struttura.
INFORMAZIONE E PRESENTAZIONE Lo scopo di una pagina web è, essenzialmente la trasmissione di una informazione. L’informazione è costituita da due aspetti.
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.
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:

Document Type Definition Document Type Definition (DTD) Documento XML valido Sintassi del DTD Elementi, attributi e entità

Il Document Type Definition Una caratteristica fondamentale dell’XML è l’estensibilità. L’autore di un documento XML può creare nuovi tag per descrivere i contenuti semantici dei propri dati. Ciò ha portato alla necessità di definire delle regole grammaticali, o vincoli, alle quali gli elementi devono attenersi. Queste regole grammaticali sono definite nelle specifiche XML e sono codificate nel Document Type Definition. 22 Dicembre 2005 Stefano Clemente

Documento XML valido Le regole grammaticali o vincoli specificano: qual è l’insieme degli elementi e degli attributi che si possono usare nel documento XML quali sono le relazioni gerarchiche fra gli elementi qual è l’ordine in cui gli elementi appariranno nel documento XML quali elementi ed attributi sono opzionali Quando un documento XML è ben formato e rispetta le regole del DTD a cui si riferisce si dice che è un documento XML valido. 22 Dicembre 2005 Stefano Clemente

Tipologie DTD Le DTD possono essere di due tipologie: PUBBLICHE: sono depositate e note a tutti. E’ possibile trovarle in archivi (repository) di DTD su Internet. HTML per esempio è definito come DTD pubbliche depositate presso il W3C. DI SISTEMA: sono disponibili e fruibili tramite l’azienda o la realtà che le ha prodotte. Non sono note al mondo intero e per sfruttarle occorre rivolgersi a chi le ha prodotte, anche solo per scaricarle. 22 Dicembre 2005 Stefano Clemente

DTD interne ed esterne Sintassi DTD esterna: Quando lavoriamo con documenti XML, se vogliamo associare loro delle DTD possiamo inserirle come parte integrante del loro contenuto (DTD interna), oppure possiamo fare riferimento a una definizione esterna, di sistema o pubblica (DTD esterna). Le DTD vanno comunque dichiarate nel prologo del documento XML. Sintassi DTD esterna: <!DOCTYPE nome SYSTEM “URL_al_file_DTD”> <!DOCTYPE nome PUBLIC “nome_pubblico_della_DTD”> a seconda che si voglia indicare una DTD di sistema o pubblica. Sintassi DTD interna: <!DOCTYPE nome [contenuto della DTD]> 22 Dicembre 2005 Stefano Clemente

Alcune osservazioni <! comando > Come si intuisce dagli esempi precedenti, il simbolo di apertura di un’istruzione DTD è <! il simbolo di chiusura di un’istruzione DTD è > Tali istruzioni rappresentano dei marcatori particolari: il cui contenuto deve corrispondere a comandi previsti dalla definizione di DTD. <! comando > Nei prossimi lucidi ci occuperemo di queste istruzioni analizzando quelle di uso più comune. Prima però vediamo un esempio... 22 Dicembre 2005 Stefano Clemente

Creazione di una DTD semplice Consideriamo il file Email.xml. Si noti che il codice contiene informazioni aggiuntive nel prologo del documento: si tratta di una DTD interna che identifica gli elementi che possono essere presenti nel documento e il tipo di dati che deve contenere. Se questo documento viene eseguito visualizzando la pagina XML (ad esempio con IE5), il documento avrà questo aspetto: 22 Dicembre 2005 Stefano Clemente

Esempio validazione (1) Modifichiamo la struttura del file Email.xml in questo modo EmailERR.xml e proviamo a validare i due documenti. Risultato validazione del documento Email.xml: 22 Dicembre 2005 Stefano Clemente

Esempio validazione (2) Risultato validazione del documento EmailERR.xml: 22 Dicembre 2005 Stefano Clemente

Definizione di elementi (1) Per definire all’interno di una DTD la presenza di un elemento (tag) occorre utilizzare la parola chiave ELEMENT, la quale accetta la seguente sintassi <!ELEMENT nome regola_dtd > dove: nome è il nome che il tag avrà nel documento XML (ovviamente deve rispettare le regole che rendono i documenti XML ben formati) regola_dtd indica il tipo di contenuto che questo tag avrà ed eventualmente la sua relazione con altri contenuti descritti nella DTD. 22 Dicembre 2005 Stefano Clemente

Definizione di elementi (2) I possibili valori che può assumere regola_dtd sono: ANY: indica che il contenuto del tag può essere qualunque cosa, cioè tag e/o testo. PCDATA (Parsed Character Data): dichiara che il tag può contenere solo e unicamente contenuto di tipo testo, sintatticamente corretto dal momento che i parser dovranno leggerlo e interpretarlo. EMPTY: comunica al parser che il tag sarà costituito solo di attributi e non conterrà al suo interno nè testo nè altri tag. GRUPPI DI ELEMENTI 22 Dicembre 2005 Stefano Clemente

Definizione di elementi (3) Vediamo qualche esempio: Tag chiamato Titolo che contiene al suo interno solo testo: <!ELEMENT Titolo (#PCDATA) > Tag chiamato Libro che può contenere sia testo che tag: <!ELEMENT Libro ANY > Tag chiamato Libro che non ha contenuto e rappresenta le sue informazioni solo tramite attributi: <!ELEMENT Libro EMPTY > 22 Dicembre 2005 Stefano Clemente

Definizione gruppi (1) Per gruppi di elementi si intende la possibilità per un determinato tag di contenere non solo testo, non solo qualsiasi combinazione di testo e tag, ma bensì una precisa sequenza di tag e/o gruppi di tag che rappresentano diverse alternative. Esempio: consideriamo il seguente documento XML. <?xml version=“1.0”?> <Libro> <Titolo>XML tascabile</Titolo> <Editore>Mondadori Informatica Libri</Editore> <Struttura> <Pagine>288</Pagine> <Capitoli>12</Capitoli> <Appendici>2</Appendici> </Struttura> </Libro> Vogliamo descrivere il tag Struttura utilizzando una DTD. 22 Dicembre 2005 Stefano Clemente

Definizione gruppi (2) <Struttura> <Pagine>288</Pagine> <Capitoli>12</Capitoli> <Appendici>2</Appendici> </Struttura> Volendo descrivere il tag Struttura possiamo utilizzare la seguente sintassi DTD: <!ELEMENT Struttura (Pagine, Capitoli, Appendici) > tramite la quale indichiamo che il tag Struttura deve contenere un tag di nome Pagine, uno di nome Capitoli e uno di nome Appendici. 22 Dicembre 2005 Stefano Clemente

Definizione gruppi (3) <Struttura> <Pagine>288</Pagine> <Capitoli>12</Capitoli> <Appendici>2</Appendici> </Struttura> In una definizione di DTD completa, dovremo quindi indicare sia la definizione del tag contenitore che dei tag contenuti. Il blocco di definizione del tag Struttura e dei tag al suo interno contenuti sarà: <!ELEMENT Struttura (Pagine, Capitoli, Appendici) > <!ELEMENT Pagine (#PCDATA) > <!ELEMENT Capitoli (#PCDATA) > <!ELEMENT Appendici (#PCDATA) > In questo modo, non solo formiamo i dettagli sulla natura di Struttura, ma anche sui tag in essa contenuti. 22 Dicembre 2005 Stefano Clemente

Definizione gruppi (4) Per indicare delle condizioni in alternativa tra loro si utilizza il carattere pipe |. Esempio: <!ELEMENT Struttura (Pagine | Capitoli) > indica che il tag Struttura dovrà contenere o un tag Pagine o un tag Capitoli, non entrambi e tanto meno nessuno dei due. E’ anche possibile utilizzare più parentesi tonde annidate le une nelle altre per raggruppare le informazioni all’interno di una DTD. Esempio: <!ELEMENT Struttura (Pagine | (Capitoli, Appendici)) > dichiara che nel tag Struttura possiamo trovare o un tag Pagine o una coppia di tag Capitoli e Appendici, rappresentati esattamente nell’ordine indicato. 22 Dicembre 2005 Stefano Clemente

Molteplicità Qualora sia necessario indicare la presenza di più occorrenze di uno stesso tag all’interno di una struttura dobbiamo ricorrere a una simbologia apposita, per mezzo della quale indichiamo quante istanze di un determinato tag possiamo consentire all’interno di un documento XML. Tale sintassi è: <!ELEMENT nome (elemento_secondario[Molteplicità]) > dove al posto di [Molteplicità] possiamo trovare uno dei seguenti simboli: SIMBOLO SIGNIFICATO ? 0 o 1 volte + Da 1 a  volte * Da 0 a  volte 22 Dicembre 2005 Stefano Clemente

Molteplicità: esempi <!ELEMENT Libro (Autore+) > significa che il tag Libro potrà contenere un numero di tag Autore in quantità variabile tra 1 e . <!ELEMENT Libro (Autore?) > significa che il tag Libro potrà avere un solo Autore, oppure potrà essere privo di Autore. <!ELEMENT Libro (Autore*) > significa che il tag Libro potrà avere un numero di tag Autore in quantità variabile tra 0 e . 22 Dicembre 2005 Stefano Clemente

Definizione di attributi (1) Per definire gli attributi di un documento XML si usa il comando ATTLIST, secondo la seguente sintassi: <!ATTLIST elemento nome_attributo tipo valore_default > dove: elemento è il nome del tag del quale stiamo definendo l’attributo nome_attributo è ovviamente il nome dell’attributo tipo è la definizione del tipo di valore associato all’attributo valore_default è un eventuale valore di default (predefinito) 22 Dicembre 2005 Stefano Clemente

Definizione di attributi: esempio <!ATTLIST Libro ISBN CDATA “N.D.” > Indica che stiamo definendo un attributo di nome ISBN tale attributo deve essere associato a un tag di nome Libro tale attributo può contenere qualsiasi carattere, tranne < > & ' " (CDATA) il valore di default dell’attributo è “N.D.” 22 Dicembre 2005 Stefano Clemente

Definizione di attributi (2) Se vogliamo fornire un set di valori per un attributo possiamo utilizzare la seguente sintassi: <!ATTLIST Giornale Tipo (quotidiano | settimanale | mensile) “mensile” > dove il simbolo di pipe | indica proprio l’alternativa tra i possibili valori. Notare l’ultima informazione “mensile”: serve per indicare che nel caso in cui l’attributo Tipo non venga fornito il suo valore predefinito deve essere mensile. 22 Dicembre 2005 Stefano Clemente

Valori di default di attributi Quando si definiscono gli attributi per gli elementi è anche possibile dichiarare dei vincoli relativi alla presenza o meno degli stessi tag. Si utilizzano le seguenti parole chiave: VINCOLO SIGNIFICATO #IMPLIED Il valore dell’attributo non è obbligatorio. #REQUIRED Il valore dell’attributo è obbligatorio. #FIXED Il valore dell’attributo è una costante che non può essere modificato. 22 Dicembre 2005 Stefano Clemente

Esempi Definiamo un tag Libro descritto da un tag Titolo, da uno o più tag Autore e da un attributo ISBN obbligatorio. <!ELEMENT Libro (Titolo, Autore+) > <!ATTLIST Libro ISBN #REQUIRED > <!ELEMENT Titolo (#PCDATA) > <!ELEMENT Autore (#PCDATA) > La seguente istruzione <!ATTLIST indirizzo cap #FIXED “02115” indica che il valore 02115 è l’unico che può essere assegnato all’attributo cap. Il documento XML non è valido se l’attributo cap contiene un valore diverso da 02115 . Se l’elemento indirizzo non contiene l’attributo cap, il valore di default 02115 sarà passato all’applicazione che elabora il documento XML. 22 Dicembre 2005 Stefano Clemente

Tipi di dato per attributi Quando definiamo degli attributi XML possiamo associare loro dei tipi di dato, tra quelli definiti dal W3C. Tipi di Dato Descrizione CDATA Dati di tipo carattere. ENTITY Entità esterna dichiarata nella DTD. ID Identificatore univoco di un elemento. IDREF ID univoci che puntano a elementi con un attributo ID. NMTOKEN Il valore dell’attributo è formato da lettere, cifre, punti, caratteri di sottolineatura, trattini e due punti. NOTATION Notazione dichiarata nella DTD. Sequenze di valori Corrisponde a una enumerazione. 22 Dicembre 2005 Stefano Clemente

Entità interne Tramite le DTD possiamo definire delle entità. Per entità si intendono dei nostri entity-name che corrispondano a caratteri, parole o frasi da noi impostati. La sintassi da utilizzare per definire delle entità è la seguente: <!ENTITY nome “Valore”> In questo modo si dichiarano entità interne, in quanto il loro valore è fornito esplicitamente all’interno della DTD. Esempio: <!ENTITY CopyRight “(C) Copyright XML Tascabile - 2002”> Per un esempio completo vedi il documento DTDEntità.xml. 22 Dicembre 2005 Stefano Clemente

Entità esterne Se vogliamo ottenere il valore di una entity da un documento esterno possiamo utilizzare una delle tre seguenti forme: <!ENTITY nome SYSTEM “URL”> Entità esterna caricata direttamente dalla URL. <!ENTITY nome PUBLIC “nome pubblico” “URL”> Entità esterna caricata direttamente dalla URL solo nel caso in cui non sia già nota al parser tramite il suo nome pubblico. <!ENTITY nome SYSTEM “URL” NDATA tipo_notazione> Entità esterna da non interpretare con il perser (NDATA) e il cui tipo di formato è indicato tramite il parametro tipo_notazione. E’ anche possibile utilizzare le entità all’interno della definizione di altre entità, cioè annidare le entità le une all’interno delle altre. 22 Dicembre 2005 Stefano Clemente

Esempio completo di DTD: vedi il documento Libro.xml 22 Dicembre 2005 Stefano Clemente

Document Type Definition Sommario In questa lezione abbiamo appreso: cos’è una Document Type Definition validazione di documenti XML sintassi di una DTD elementi, attributi, entità di una DTD Esempi Passi successivi: la prossima lezione sarà dedicata alla formattazione di contenuti. 22 Dicembre 2005 Stefano Clemente

Formattazione di contenuti: introduzione a CSS Introduzione ai fogli di stile Introduzione a CSS

Introduzione ai fogli di stile (1) Quando dobbiamo presentare le informazioni contenute nei documenti XML, non possiamo accontentarci di un file puramente testuale e neppure delle funzionalità di browser come Internet Explorer, che applica un minimo di formattazione ai contenuti XML. 22 Dicembre 2005 Stefano Clemente

Introduzione ai fogli di stile (2) E’ necessario presentare le informazioni come se fossero dotate di un loro aspetto grafico senza però perdere la caratteristica più importante di XML: la separazione dei dati dalla loro presentazione. Uno strumento per raggiungere questo risultato è rappresentato dai fogli di stile CSS (Cascading Style Sheet) che definiscono regole di formattazione per i tag utilizzati. Inizialmente i fogli di stile CSS sono nati per essere usati con HTML! Un foglio di stile è un documento separato che contiene regole di formattazione e visualizzazione per un documento HTML o XML. 22 Dicembre 2005 Stefano Clemente

Introduzione ai fogli di stile (3) Sono “cascading” perchè possono essere definiti “in cascata”, l’uno dentro l’altro o, meglio, l’uno che completa gli altri in livelli di raffinamento successivo: prima si definiscono alcune caratteristiche di stile generali poi si integrano queste caratteristiche in cascata con altri CSS che le specificano più in particolare. In sostanza: Dentro un file CSS (che ha estensione .css) ci sono le indicazioni per come visualizzare i vari TAG. 22 Dicembre 2005 Stefano Clemente

HTML e CSS (1) Consideriamo il seguente documento HTML (Esempio.html): <HEAD> <TITLE>Pagina HTML formattata con i CSS</TITLE> </HEAD> <BODY> <P>Testo di un paragrafo.</P> <DIV>Testo di un blocco DIV.</DIV> Mentre questo è un testo normale nel documento HTML. </BODY> </HTML> Per mezzo di un foglio di stile CSS possiamo fare in modo che il tag P e il tag DIV imprimano una particolare formattazione grafica, diversa da quella associata al tag BODY. 22 Dicembre 2005 Stefano Clemente

HTML e CSS (2) Esempio di CSS (Stile.css) per il documento HTML precedente: P {font-Family: Arial; font-Size: 12pt; color: red;} DIV {font-Family: Verdana; font-Size: 8pt; color: blue;} BODY {font-Family: Arial; font-Size: 10pt; color: black;} Con una sintassi facilmente intuibile, il foglio di stile assegna a: Tutti i tag di nome P un font Arial, 12 punti, rosso. Tutti i tag di nome DIV un font Verdana, 8 punti, blu. Al contenuto del tag BODY un font Arial, 10 punti, nero. 22 Dicembre 2005 Stefano Clemente

HTML e CSS (3) La sintassi per assegnare uno stile segue la regola: nome_selettore { attributo: valore; attributo: valore; . . . } dove nome_selettore è il nome del tag sul quale si vuole intervenire, attributo è l’attributo da cambiare e valore è il valore assegnato all’attributo. Se un valore è costituito da più di una parola, deve essere racchiuso fra doppi apici. Esempio: P {font-Family: “sans serif”} I selettori possono essere raggruppati fra di loro, separandoli con una virgola. Esempio: h1,h2,h3,h4,h5,h6 {color: green} per avere dello stesso colore i tag di struttura da h1 a h6. 22 Dicembre 2005 Stefano Clemente

HTML e CSS (4) Per applicare il foglio di stile Stile.css al documento HTML Esempio.html basta fare riferimento al file CSS all’interno dell’header del documento HTML mediante l’istruzione: <LINK REL=“Stylesheet” TYPE=“text/css” HREF=“Stile.css” /> Il nuovo file HTML (EsempioCSS.html) verrà visualizzato in questo modo: 22 Dicembre 2005 Stefano Clemente

XML e CSS (1) Le regole appena viste sono applicabili non solo a documenti HTML, ma anche a un qualsiasi documento XML a patto che: i nomi dei tag HTML vengano sostituiti con i nomi dei tag XML la sintassi per associare un CSS a un documento XML sia diversa. Esempio: consideriamo il documento Documento.xml <?xml version = "1.0"?> <Documento> <Titolo>Titolo del documento</Titolo> <Paragrafo>Testo all'interno del documento</Paragrafo> </Documento> Scriviamo un documento CSS che definisca un formato per i tag Documento, Titolo e Paragrafo (vedi file Stile2.css). 22 Dicembre 2005 Stefano Clemente

XML e CSS (2) Stile2.css Titolo {font-Family: Arial; font-Size: 12pt; color: red; display: block;} Paragrafo {font-Family: Verdana; font-Size: 8pt; color: blue; display: block;} Documento {font-Family: Arial; font-Size: 10pt; color: black; display: inline;} L’attributo display indica come deve essere gestito il testo contenuto nel tag rispetto al contenuto testuale circostante. In particolare: block: significa che prima e dopo il testo si avranno dei simboli di a capo automatico (<BR>) come se si trattasse di un tag P o DIV inline: indica al browser che il testo del tag deve essere accodato al testo precedente e successivo, a meno che uno di questi ultimi non sia di tipo block none: permette di nascondere il testo e quindi non visualizzare a schermo alcune informazioni, in realtà presenti nel documento XML originale. 22 Dicembre 2005 Stefano Clemente

XML e CSS (3) Per inserire in un documento XML un foglio di stile CSS (Stile2.css) si usa una processing instruction che ha la seguente sintassi: <?xml-stylesheet type=“text/css” href=“Stile2.css”?> Se inseriamo questa istruzione nel documento Documento.xml (vedi Documento2.xml) otteniamo a video il seguente output: 22 Dicembre 2005 Stefano Clemente

XML e CSS (4) Finora abbiamo solo considerato la formattazione di elementi in funzione del loro nome. In realtà la sintassi dei CSS permette anche di lavorare sulle relazioni di parentela tra gli elementi e sull’esistenza o meno di attributi e nodi figli. Regola Formattazione applicata a * Tutti gli elementi, qualunque sia il loro nome. Titolo Tutti gli elementi di nome Titolo. Titolo, Paragrafo Tutti gli elementi di nome Titolo o di nome Paragrafo. Capitolo Paragrafo Tutti gli elementi di nome Paragrafo che sono contenuti, a qualsiasi livello di profondità, in Capitolo. Capitolo>Paragrafo Tutti gli elementi di nome Paragrafo che sono figli di Capitolo. Prezzo[Valuta] Tutti gli elementi di nome Prezzo che abbiano anche l’attributo Valuta, indipendentemente dal suo valore. Prezzo[Valuta=“Euro”] Tutti gli elementi di nome Prezzo che abbiano l’attributo Valuta con valore “Euro”. 22 Dicembre 2005 Stefano Clemente

XML e CSS (5) ESEMPIO Indichiamo tramite un CSS che il tag Prezzo del documento Libro (Libro.xml) deve essere scritto in rosso se la Valuta è Lire e in verde se la Valuta è Euro: Prezzo[Valuta=“Lire”] {color: red;} Prezzo[Valuta=“Euro”] {color: green;} Nascondiamo tramite un CSS tutte le informazioni del tag Struttura del documento Libro: Struttura {display: none;} Salviamo queste regole in un file CSS (StileNewLibro.css) e applichiamole al documento Libro (ovviamete adattato, vedi NewLibro.xml) per vedere a video il risultato. 22 Dicembre 2005 Stefano Clemente

Esempi 22 Dicembre 2005 Stefano Clemente

(eXtensible Stylesheet Language) Introduzione a XSL (eXtensible Stylesheet Language)

Introduzione a XSL Tutte le volte che abbiamo l’esigenza, non solo di colorare o spostare a schermo i contenuti di un documento XML, ma anche di filtrarli, riorganizzarli come gerarchia, eseguire dei calcoli, e altro ancora, i CSS non possono esserci d’aiuto. I CSS si occupano solo della formattazione del testo contenuto all’interno dei tag di un documento XML. Per superare questo limite dei CSS, il W3C ha prodotto un linguaggio di stile pensato specificatamente per XML: eXtensible Stylesheet Language (XSL). 22 Dicembre 2005 Stefano Clemente

CSS e XSL I fogli di stile CSS applicano le regole di formattazione direttamente al contenuto del documento per creare i risultati desiderati e possono essere utilizzati sia con i documenti HTML sia con i documenti XML. I fogli di stile XSL eseguono invece una trasformazione (in altri formati, es. PDF, XML, HTML) del contenuto del documento e possono essere usati solo con documenti XML. Un'altra differenza significativa consiste nel fatto che i CSS contengono solo regole di formattazione, mentre i fogli XSL contengono anche regole di trasformazione. 22 Dicembre 2005 Stefano Clemente

XSL (1) I fogli di stile XSL offrono lo stesso livello di formattazione e di flessibilità dei fogli di stile CSS, ma utilizzano metodi diversi. XSL consiste di un insieme di strumenti: XSLT (eXtensible Stylesheet Language for Transformation): un linguaggio per la trasformazione di documenti XML in altri documenti (es: per trasformare un XML in un HTML o in un XML di un altro DTD) Xpath: un linguaggio per riferire o definire parti di un documento XML (es: il contenuto di un tag <pippo> all’interno di un tag <pluto>) XSL FO (Formatting Object): un linguaggio per la formattazione di documenti XML (simile a CSS) Nota: XSL FO non è supportato dai browser ed esistono solo pochi strumenti che oggi lo sfruttano (es: esiste uno strumento che è in grado di trasformare dei file XML in PDF sulla base della specifica XSL FO). Ci si aspetta che in un breve futuro sia supportato dai browser direttamente... 22 Dicembre 2005 Stefano Clemente

XSL (2) L’idea è quella di partire da un documento sorgente XML e trasformarlo in un differente documento destinazione XML. A questo scopo: XSLT sono le regole che dicono come i vari pezzi devono essere trasformati Xpath sono le indicazioni che dicono a quali pezzi gli XSLT devono fare riferimento Poiché un foglio di stile XSL è a sua volta un documento XML (ben formato), deve iniziare con la dichiarazione (nel prologo) <?xml version="1.0"?> 22 Dicembre 2005 Stefano Clemente

XSL (3) Namespace alias per il Namaspace versione di XSLT Un documento XSL è costituito secondo il seguente schema: <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl=“http://www.w3.org/1999/XSL/Transform” version=“1.0”> <!-- Qui sarà caricato il contenuto del documento XSL --> </xsl:stylesheet> alias per il Namaspace Namespace versione di XSLT 22 Dicembre 2005 Stefano Clemente

XSL: esempio primo.xsl <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head> <title>Prima trasformazione da XML a HTML</title> </head> <body> <h1>Prova di scrittura documento HTML</h1> </body> </html> </xsl:template> </xsl:stylesheet> applica a tutto il documento 22 Dicembre 2005 Stefano Clemente

XSLT Per provare le trasformazioni XSLT sfruttiamo il supporto nativo fornito a XSLT da Microsoft Internet Explorer 6.0 e da Mozilla. Produrremo quindi trasformazioni da XML a HTML. E’ sufficiente inserire nel prologo di documento XML una processing instruction che colleghi l’XSL all’XML nel modo seguente: <?xml version="1.0"?> <?xml-stylesheet type=“text/xsl” href=“primo.xsl” ?> <documento /> primo.xml In questo caso al documento (praticamente vuoto tranne che per il tag root di nome documento) verrà applicata la trasformazione primo.xsl. 22 Dicembre 2005 Stefano Clemente

Esempio primo.xml Elaborazione XSL (primo.xsl) Applichiamo la trasformazione XSLT descritta nel file primo.xsl al documento primo.xml e visualizziamo il risultato con un browser: primo.xml Elaborazione XSL (primo.xsl) 22 Dicembre 2005 Stefano Clemente

Direttive XSL (1) <xsl:template match="valore"> XSL usa uno o più template per individuare un elemento o un gruppo di elementi del documento XML attraverso la seguente sintassi: che permette di associare il template specificato con un elemento XML (specificando il valore "/" si associa il template all'intero documento XML). <xsl:template match="valore"> Un tag molto usato è <xsl:apply-templates />; ad esempio, con il modello abbinato alla radice si può scrivere: Il tag <xsl:apply-templates/> indica al parser di continuare a scandire il documento XSL alla ricerca di altri modelli da applicare ai nodi sottostanti, ovvero i nodi figli. <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> 22 Dicembre 2005 Stefano Clemente

Direttive XSL (2) <xsl:value-of select=“....” /> All’interno del template che abbiamo associato al nodo root possiamo leggere e scrivere in uscita il valore di un qualsiasi nodo utilizzando il comando value-of: <xsl:value-of select=“....” /> Per esempio la scrittura (inserita nella template che fa il matching del nodo root): <xsl:value-of select=“/clienti/cliente/id” /> restuisce il contenuto testuale del tag di nome id, del primo tag cliente del figlio clienti. 22 Dicembre 2005 Stefano Clemente

Direttive XSL (3) Elemento XSL Descrizione 22 Dicembre 2005 Stefano Clemente

Direttive XSL (4) Elemento XSL Descrizione 22 Dicembre 2005 Stefano Clemente

Esempi 22 Dicembre 2005 Stefano Clemente

Linguaggi di markup personalizzati Caso di studio: XHTML 22 Dicembre 2005 Stefano Clemente

Linguaggi di markup personalizzati XML è un metalinguaggio, cioè un linguaggio che permette di creare altri linguaggi. Nei prossimi lucidi verranno elencati alcuni dei più noti linguaggi di markup che sono stati creati con XML. Poi vedremo, come esempio, uno di questi linguaggi (scelto perchè è uno dei più semplici): MathML. 22 Dicembre 2005 Stefano Clemente

Alcuni linguaggi di markup EXtensible Hyper Text Markup Language (XHTML): www.w3.org/MarkUp Mathematical Markup Language (MathML): www.w3.org/Math Chemical Markup Language (CML): www.xml-cml.org Wireless Markup Language (WML): www.wapforum.org Geography Markup Language (GML): www.opengis.org Synchronized Multimedia Integration Language (SMIL): www.w3.org/AudioVideo Scalable Vector Graphics (SVG): www.w3.org/TR/SVG Bean Markup Language (BML): www.alphaworks.ibm.com/aw.nsf/techmain/bml Extensible 3D Language (X3D): www.web3d.org/x3d.html . . . 22 Dicembre 2005 Stefano Clemente

Caso di studio: XHTML 22 Dicembre 2005 Stefano Clemente

XHTML XHTML sta per eXtensible Hyper Text Markup Language XHTML è stato pensato per estendere (e sostituire) HTML XHTML è molto simile a HTML 4.01 XHTML è una versione più “rigida e pulita” di HTML XHTML è la riformulazione di HTML definito come un’applicazione XML. 22 Dicembre 2005 Stefano Clemente

XHTML è uno standard Web XHTML 1.0 è diventato una Raccomandazione ufficiale del W3C nel Gennaio del 2000. Se una specifica diventa una Raccomandazione ufficiale W3C significa che tale specifica è ormai STABILE, cioè che è stata revisionata con successo dal W3C membership e che quindi può essere considerata uno standard Web (ha superato tutto il lungo processo di revisione). XHTML è considerato la nuova generazione di HTML, ma ci vorrà tempo perchè tutti i browsers e gli applicativi software siano in grado di leggerlo e processarlo. XHTML è una combinazione di HTML e XML: consiste di tutti gli elementi di HTML 4.01 (compatibilità con HTML 4.01) con la sintassi di XML. 22 Dicembre 2005 Stefano Clemente

Perchè XHTML? <html> <head> Si è ormai arrivati ad un punto nel quale molte pagine Web contengono “bad” HTML. Consideriamo ad esempio il seguente codice: <html> <head> <title>This is bad HTML</title> <body> <h1>Bad HTML </body> Visualizza Questo codice HTML viene visualizzato correttamente dal browser nonostante non sia “ben formato”. XHTML, integrando HTML e XML, permette di scrivere documenti HTML ben formati. 22 Dicembre 2005 Stefano Clemente

HTML XHTML Nei prossimi lucidi vedremo i 10 cambiamenti necessari per trasformare un documento HTML 4.01 in uno XHTML. 22 Dicembre 2005 Stefano Clemente

1. Documenti conformi alle regole XML Gli elementi devono essere annidati in modo corretto. HTML: <b><i>This text is bold and italic</b></i> XHTML: <b><i>This text is bold and italic</i></b> I documenti devono essere ben formati. Tutti gli elementi XHTML devono essere annidati all’interno dell’elemento root <html>. Tutti gli altri elementi possono avere sotto-elementi (figli). I figli devono essere in coppie e correttamente annidati all’interno del loro elemento padre. <html> <head> . . . </head> <body> . . . </body> </html> STRUTTURA BASE DI UN DOCUMENTO 22 Dicembre 2005 Stefano Clemente

2. Nomi elementi in minuscolo I documenti XHTML sono applicazioni XML. XML è case-sensitive: tag come <br> e <BR> sono interpretati come elementi diversi! <BODY> <P>This is a paragraph.</P> </BODY> <body> <p>This is a paragraph.</p> </body> Questo è sbagliato! Questo è corretto! 22 Dicembre 2005 Stefano Clemente

3. Elementi XHTML devono essere chiusi Tutti gli elementi XHTML devono essere chiusi. Gli elementi non vuoti devono avere un tag di chiusura. <p>This is a paragraph. <li>This is a list item. <p>This is a paragraph.</p> <li>This is a list item.</li> Questo è sbagliato! Questo è corretto! 22 Dicembre 2005 Stefano Clemente

4. Anche gli elementi vuoti devono essere chiusi Gli elementi vuoti devono avere un tag di fine oppure devono finire con />. This is a line break.<br> Check out this horizontal rule:<hr> What a cool image! <img src=“filename.gif”> Questo è sbagliato! This is a line break.<br></br> Check out this horizontal rule:<hr /> What a cool image! <img src=“filename.gif” /> Questo è corretto! 22 Dicembre 2005 Stefano Clemente

5. Nomi attributi I nomi degli attributi devono essere in minuscolo. <table WIDTH=“100%”> <div ALIGN=“center”> <table width=“100%”> <div align=“center”> Questo è sbagliato! Questo è corretto! 22 Dicembre 2005 Stefano Clemente

6. Valori attributi I valori degli attributi devono essere tra virgolette. <table width=100%> <img height=200 width=250> Questo è sbagliato! <table width=“100%”> <img height=“200” width=“250” /> Questo è corretto! 22 Dicembre 2005 Stefano Clemente

7. Gli attributi devono avere valori <input checked> <option selected> <input checked=“checked” /> <option selected=“selected” /> Questo è sbagliato! Questo è corretto! 22 Dicembre 2005 Stefano Clemente

8. Attributo “name” sostituito con “id” HTML 4.01 definisce un attributo “name” per gli elementi: a, applet, frame, iframe, img, map. In XHTML si usa l’attributo id al posto di “name”. <img src=“filename.gif” name=“picture1” /> <a name=“namedanchor”></a> <img src=“filename.gif” id=“picture1” /> <a id=“namedanchor”></a> Questo è sbagliato! Questo è corretto! 22 Dicembre 2005 Stefano Clemente

9. XHTML DTD definisce elementi obbligatori Tutti i documenti XHTML devono avere una dichiarazione DOCTYPE. Gli elementi html, head e body devono essere presenti e l’elemento title deve essere presente all’interno di head. Modello di documento XHTML: <!DOCTYPE Indicare qui il tipo di documento> <html> <head> <title>Indicare qui il titolo</title> </head> <body> Corpo del documento </body> </html> Può non avere il tag di chiusura! 22 Dicembre 2005 Stefano Clemente

10. <!DOCTYPE> obbligatoria La dichiarazione DOCTYPE deve essere sempre la prima linea in un documento XHTML. DOCTYPE definisce il tipo di documento. Il tipo di documento viene indicato con un XHTML DTD (Document Type Definition). Un XHTML DTD descrive, con un linguaggio preciso e computer-readable, la sintassi e la grammatica da rispettare per qualsiasi documento XHTML. Attualmente ci sono 3 differenti XHTML DTD. 22 Dicembre 2005 Stefano Clemente

Tipi di documento XHTML XHTML 1.0 Strict: questo DTD è consigliato quando la presentazione del documento è controllata da un CSS. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> XHTML 1.0 Transitional: questo DTD è consigliato quando si vuole supportare browsers che non gestiscono CSS. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> XHTML 1.0 Frameset: questo DTD è consigliato quando si vuole supportare i frames. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 22 Dicembre 2005 Stefano Clemente

Namespace XHTML L’elemento radice <html> deve indicare la dichiarazione di un namespace XML usando l’attributo xmlns. Il namespace deve essere: “http://www.w3.org/1999/xhtml” <!DOCTYPE ... (Strict o Transitional o Frameset)> <html xmlns=“http://www.w3.org/1999/xhtml”> <head> <title>Indicare qui il titolo</title> </head> <body> Corpo del documento </body> </html> Nuovo modello di documento XHTML 22 Dicembre 2005 Stefano Clemente

Prologo Il prologo di un documento XHTML è composto da due parti: la dichiarazione XML la definizione del DOCTYPE (vedi lucidi precedenti) La dichiarazione XML (<?xml version=“1.0”?>) rende esplicito il fatto che il documento è XML. Tale dichiarazione NON è obbligatoria, ma il suo uso è consigliato dal W3C per ogni documento XML. <?xml version=“1.0” ?> <!DOCTYPE ... (Strict o Transitional o Frameset)> Schema PROLOGO XHTML 22 Dicembre 2005 Stefano Clemente

Riepiloghiamo con un esempio PROLOGO <?xml version=“1.0”?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=“http://www.w3.org/1999/xhtml”> ELEMENTO RADICE <head> <title>Esempio di pagina XHTML</title> </head> TESTATA <body> <h1>Salve</h1> <p>Questo è un primo esempio di pagina XHTML!</p> </body> CORPO </html> 22 Dicembre 2005 Stefano Clemente

Validare un documento XHTML Un documento XHTML è valido se rispetta le regole definite nel DTD XHTML. Perchè un documento XHTML possa essere correttamente validato, deve contenere una dichiarazione di DTD al suo interno (vedi dichiarazione DOCTYPE). Per validare un documento XHTML rispetto a un certo DTD è necessario quindi un validatore. Per usare il validatore XHTML del W3C basta andare alla pagina Web http://validator.w3.org (provarlo per esercizio!) 22 Dicembre 2005 Stefano Clemente