La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Document Type Definition

Presentazioni simili


Presentazione sul tema: "Document Type Definition"— Transcript della presentazione:

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

2 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

3 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

4 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

5 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

6 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

7 Creazione di una DTD semplice
Consideriamo il file .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

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

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

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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 è l’unico che può essere assegnato all’attributo cap. Il documento XML non è valido se l’attributo cap contiene un valore diverso da Se l’elemento indirizzo non contiene l’attributo cap, il valore di default sarà passato all’applicazione che elabora il documento XML. 22 Dicembre 2005 Stefano Clemente

24 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

25 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 ”> Per un esempio completo vedi il documento DTDEntità.xml. 22 Dicembre 2005 Stefano Clemente

26 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

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

28 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

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

30 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

31 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

32 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

33 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

34 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

35 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

36 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

37 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

38 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

39 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

40 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

41 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

42 Esempi 22 Dicembre 2005 Stefano Clemente

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

44 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

45 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

46 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

47 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

48 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=“ 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

49 XSL: esempio primo.xsl <?xml version="1.0"?> <xsl:stylesheet
xmlns:xsl=" 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

50 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

51 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

52 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

53 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

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

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

56 Esempi 22 Dicembre 2005 Stefano Clemente

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

58 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

59 Alcuni linguaggi di markup
EXtensible Hyper Text Markup Language (XHTML): Mathematical Markup Language (MathML): Chemical Markup Language (CML): Wireless Markup Language (WML): Geography Markup Language (GML): Synchronized Multimedia Integration Language (SMIL): Scalable Vector Graphics (SVG): Bean Markup Language (BML): Extensible 3D Language (X3D): . . . 22 Dicembre 2005 Stefano Clemente

60 Caso di studio: XHTML 22 Dicembre 2005 Stefano Clemente

61 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

62 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

63 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

64 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

65 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

66 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

67 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

68 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

69 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

70 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

71 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

72 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

73 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

74 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

75 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" " 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" " XHTML 1.0 Frameset: questo DTD è consigliato quando si vuole supportare i frames. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" " 22 Dicembre 2005 Stefano Clemente

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

77 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

78 Riepiloghiamo con un esempio
PROLOGO <?xml version=“1.0”?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " <html xmlns=“ 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

79 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 (provarlo per esercizio!) 22 Dicembre 2005 Stefano Clemente


Scaricare ppt "Document Type Definition"

Presentazioni simili


Annunci Google