Esercitazioni di XML a cura di Maria Finazzi (11-19 gennaio 2007) e-mail: maria.finazzi@unipv.it pagine web: <http://lettere.unipv.it/infoum/finazzi/>
Il trattamento dell'informazione Testo a stampa: Come ogni cockney il signor Doolittle riteneva che solo a Londra si parlasse il vero inglese. HTML a schermo: Come ogni cockney il signor Doolittle riteneva che solo a Londra si parlasse il vero inglese. Come ogni cockney il signor Doolittle riteneva che solo a Londra si parlasse il vero inglese. Codifica HTML: <p>come ogni <em>cockney</em> il signor Doolittle riteneva che <em>solo</em> a Londra si parlasse il vero inglese.</p> Codifica XML: <frase>come ogni <straniera>cockney</straniera> il signor Doolittle riteneva che <enfasi>solo</enfasi> a Londra si parlasse il vero inglese</frase> <frase lingua="italiana">come ogni <straniera lingua="inglese">cockney</straniera> il signor Doolittle riteneva che <enfasi tipo="rafforzativo">solo</enfasi> a Londra si parlasse il vero inglese</frase> 2
I linguaggi di marcatura Un linguaggio di marcatura è un sistema per descrivere: 1. la rappresentazione di testi ("come si devono vedere il documento) 2. la struttura di testi ("come sono fatti il testo vero e proprio) HTML e XHTML sono linguaggi di markup per la rappresentazione dei testi. SGML e XML sono invece linguaggi del secondo tipo, perché: separano il contenuto dalle istruzioni sulla rappresentazione catturano il significato degli elementi di un documento Esempio di marcatura: Elenco nomi Esercizio di marcatura: Elenco testi 3
Documenti XML: cosa sono Un documento XML contiene sequenze di caratteri che possono rappresentare semplice testo (character data) markup (tag o etichette) I tag XML, a differenza di quelli HTML/XHTML: non sono predefiniti e limitati: è possibile creare qualsiasi numero di tag, a seconda delle esigenze descrivono il tipo di testo contenuto al loro interno, e non la sua formattazione Un documento XML, a differenza di uno HTML: deve rispettare regole sul posizionamento dei tag deve rispettare regole sulla scrittura dei tag in pratica: deve essere sintatticamente corretto, cioè ben formato 4
Documenti XML: cosa contengono Un documento XML è composto da: Prologo o header, che contiene la dichiarazione XML, ad es.: <?xml version="1.0" encoding="utf-8"?> Elementi (due tipi): delimitati da un tag iniziale <TAG> e un tag finale </TAG> vuoti (privi di contenuto): <TAG/> Attributi: <TAG attributo="valore"> Contenuto degli elementi (testo presente fra il tag iniziale e il tag finale): <TAG>contenuto</TAG> Possono inoltre essere presenti: commenti: <!-- testo del commento --> riferimenti a entità (generali o parametriche) 5
Le principali regole di XML In un documento ben formato: 1. deve esserci un prologo 2. a ogni tag iniziale deve corrispondere un tag finale 3. i tag non devono incrociarsi 4. deve esistere un elemento radice (root element) 5. sono rispettate le regole sulla denominazione degli elementi 6. sono rispettate le regole sulla definizione degli attributi 7. sono rispettate le regole sulla denominazione degli attributi 8. sono rispettate le regole sui caratteri speciali 6
Regola n. 1 Esempio di prologo Un documento XML può iniziare con una dichiarazione XML (XML declaration): <?xml version="1.0" encoding="codifica"?> in cui vengono dichiarati: la specifica di XML: version="1.0" (per ora esiste solo lo standard XML 1.0) il set di caratteri, ad es.: encoding="iso-8859-1" se viene omesso, la codifica di default è UTF-8 il riferimento o meno a una DTD esterna (Document Type Definition): standalone="yes" se viene omesso, il valore di default è no 7
Prologo e DTD La dichiarazione non è obbligatoria, ma se presente essa deve essere posta esattamente all'inizio del documento. Nel caso in cui il documento XML non sia standalone: standalone="no" la dichiarazione XML deve essere seguita dalla dichiarazione del tipo di documento (document type declaration): <!DOCTYPE nome_dell_elemento_radice SYSTEM "url_della_dtd"> 8
Regola n. 2 A ogni tag iniziale deve corrispondere un tag finale Come in HTML: i tag iniziali cominciano con il carattere < i tag finali cominciano con i caratteri </ entrambi sono seguiti dal nome dell'elemento e si concludono con il carattere > i nomi degli elementi possono essere personalizzati a seconda del contenuto del documento Esempio: <persona>mario Rossi</persona> Per gli elementi privi di contenuto la sintassi è leggermente diversa: il tag comincia con il carattere < il tag prosegue con il nome dell'elemento il tag si conclude con i caratteri /> Esempio: <fine_pagina/> 9
Regola n. 3 I tag non devono incrociarsi I tag XML possono essere contenuti uno dentro l'altro, ma, come scatole cinesi, non possono incrociarsi (se dopo un tag iniziale ho inserito un altro tag iniziale, prima di chiudere il primo tag devo chiudere il secondo): tag incrociati (SBAGLIATO): <primo_elem> <secondo_elem>contenuto</primo_elem> </secondo_elem> Esempio (sbagliato): <persona> <nome>mario</nome><cognome>rossi</persona> </cognome> tag non incrociati (CORRETTO): <primo_elem> <secondo_elem>contenuto</secondo_elem> </primo_elem> Esempio: <persona> <nome>mario</nome><cognome>rossi</cognome> </persona> 10
Regola n. 4 Deve esistere un elemento radice (root element) L'elemento radice: è il primo elemento del documento, che contiene tutti gli altri elementi non ha padre è unico RADICE PRIMO ELEMENTO SECONDO ELEMENTO TERZO ELEMENTO PRIMO SOTTOELEMENTO SECONDO SOTTOELEMENTO PRIMO SOTTOELEMENTO 11
Struttura ad albero dei documenti XML I documenti XML hanno quindi una struttura ad albero gerarchico Esempio: <persona> <anagrafe> <nome>mario</nome> <cognome>rossi</cognome> </anagrafe> <professione>scrittore</professione> <professione>gironalista</professione> </persona> L'elemento <persona> non contiene semplicemente del testo, ma tre elementi figli L'elemento <persona> è padre dell'elemento <anagrafe> e dei due elementi <professione> 12 L'unico elemento che non ha padre è l'elemento radice
Esempio di struttura ad albero LIBRO CAPITOLO 1 CAPITOLO 2 CAPITOLO 3 PARAGRAFO 1 PARAGRAFO 2 PARAGRAFO 1 FRASE 1 FRASE 2 FRASE 3 FRASE 4 FRASE 5 13
Regola n. 5 Denominazione degli elementi I nomi degli elementi: sono case-sensitive (<TAG> è diverso da <tag>) possono contenere: numeri, lettere, underscore, puntini, trattini devono iniziare con un carattere o con un underscore (_) non possono iniziare con un numero non possono contenere spazi possono combinare lettere maiuscole e minuscole (es. <NumeroPatente>) evitare nomi specifici del linguaggio, come: "xml", "xsl", ecc. 14
Regola n. 6 Definizione degli attributi Gli elementi XML, come quelli HTML/XHTML, possono essere dotati di attributi. Un attributo è formato da: nome dell'attributo valore dell'attributo racchiuso fra virgolette singole o doppie un separatore fra nome e valore, cioè il segno uguale (=), accompagnato eventualmente da spazi Esempio: <persona nascita='1919' morte = '1987'>Mario Rossi</persona> Gli attributi: devono essere posti all'interno del tag di apertura non possono comparire più di una volta all'interno di 15 ciascun tag
Elementi o attributi? L'esempio precedente: <persona> <anagrafe> <nome>mario</nome> <cognome>rossi</cognome> </anagrafe> <professione>scrittore</professione> <professione>giornalista</professione> </persona> può essere codificato utilizzando degli attributi al posto di alcuni elementi <persona> <anagrafe nome='mario' cognome ='Rossi'/> <professione tipo='scrittore'/> <professione tipo='giornalista'/> </persona> 16
Elementi o attributi: scelta La scelta tra una rappresentazione e l'altra può dipendere dal tipo di dati e dal tipo di utilizzo Nei documenti di tipo narrativo è naturale che il testo sia contenuto di elementi XML e che le informazioni aggiuntive vengano inserite in attributi 17
Regola n. 7 Denominazione degli attributi Anche i nomi degli attributi: sono case-sensitive (tipo è diverso da Tipo) possono contenere: numeri, lettere, underscore, puntini, trattini devono iniziare con un carattere o con un underscore (_) non possono iniziare con un numero non possono contenere spazi possono combinare lettere maiuscole e minuscole (es. DataNascita) 18
Regola n. 8 Caratteri speciali I caratteri speciali usati nel linguaggio XML (come uncinate e, per gli attributi, virgolette) se utilizzati nel contenuto di un elemento o nel valore di un attributo vanno indicati come entità I riferimenti a entità generali sono delimitati dai caratteri e commerciale (&) e punto e virgola (;) Queste sono le 5 referenze a entità predefinite di XML: Entità carattere < > " ' & Entità numerica < > & 19
Sistemi di rappresentazione ed archiviazione informatica dell'informazione Per evitare la perdita di informazioni nel tempo e per consentirne l'utilizzo in contesti diversi da quello originario un documento elettronico deve soddisfare due condizioni: la standardizzazione e la portabilità, e cioè: indipendenza dall'hardware (processore, supporto digitale, dispositivi di input o di output) indipendenza dal software (sistemi operativi, applicazioni) indipendenza dai sistemi di codifica dei caratteri (lingue o sistemi di scrittura) indipendenza logica da tipologie di elaborazione 20
I linguaggi di marcatura (2) Un linguaggio di marcatura è un sistema per descrivere: 1. la rappresentazione di testi ("come si devono vedere") 2. la struttura di testi ("come sono fatti") HTML e XHTML sono linguaggi di markup per la rappresentazione dei testi. SGML e XML sono invece linguaggi del secondo tipo, perché: separano il contenuto dalle istruzioni sulla rappresentazione catturano il significato degli elementi di un documento 21
Linguaggi per descrivere la struttura dei testi 1. SGML (Standard Generalized Markup Language) nasce negli anni '70 (come GML) diventa uno standard ISO nel 1986 (e prende il nome di SGML) usa dei tag per descrivere i meta dati, separando il contenuto dalle istruzioni specifiche molto complesse (non tutte implementate dai singoli programmi) NB: HTML è un'applicazione di SGML (ma non è un linguaggio di markup strutturato perché è una tecnica orientata alla presentazione delle informazioni) 2. XML (extensible Markup Language) deriva da una semplificazione di SGML nasce nel 1998 come raccomandazione del W3C permette di rappresentare facilmente documenti strutturati o semistrutturati NB: dall'estensione di alcune regole di XML al linguaggio HTML è derivato XHTML 22
Parentesi su XHTML Il linguaggio di marcatura di testi per il web denominato XHTML deriva da un incrocio fra il sistema HTML di rappresentazione dei testi per il web e le regole XML 23
Tecnologie di supporto per XML XSLT (extensible Stylesheet Language Transformations) applicazione XML che descrive le trasformazioni da un documento XML a un altro (che può essere in XML o in un altro formato, come HTML, PDF, ecc.) XSL-FO (XSL Formatting Objects) linguaggio che descrive la formattazione di un oggetto trasformato XPATH sintassi utilizzata per identificare particolari porzioni di documenti XML 24
Altri argomenti 1. DTD e Schema 2. fogli di stile XSL 3. standard di codifica 25
1a. DTD: Document Type Definition Il markup utilizzabile in un documento XML può essere libero o vincolato a particolari regole semantiche relative alla struttura In tal caso il markup di una applicazione XML può essere documentato in una DTD (Document Type Definition) 26
1b. DTD: Document Type Definition La DTD definisce: elementi e relativi attributi relazioni (parentele) tra elementi caratteristiche degli elementi (ad es.: se e quante volte devono o possono comparire) caratteristiche degli attributi (ad es.: se sono obbligatori o facoltativi, e se hanno dei valori predefiniti) entità generali o parametriche Un documento XML che rispetti tutte le regole descritte in una DTD, oltre che ben formato (sintatticamente corretto) è anche valido (semanticamente corretto) 27
1c. Dichiarazione del tipo di documento Se per un documento XML è richiesta la validazione, nel prologo del documento va inserito un riferimento alla DTD così strutturato: <!DOCTYPE nome_dell_elemento_radice SYSTEM "url_della_dtd"> Esempio (con URL relativo per arrivare al file della DTD): <?xml version="1.0" standalone="no"?> <!DOCTYPE persona SYSTEM "/dtd/persona.dtd"> <persona> <anagrafe> <nome>mario</nome> <cognome>rossi</cognome> </anagrafe> <professione>scrittore</professione> <professione>giornalista</professione> </persona> La DTD può anche essere inserita all'interno del file XML; in tal caso il valore di standalone è yes 28
1c. XML Schema La sintassi delle DTD non è XML Nel 2001 il W3C ha approvato lo standard XML Schema: lo Schema descrive ella la struttura di un documento XML in formato XML Gli Schema sono molto più complessi e potenti delle DTD, e permettono di stabilire regole molto più dettagliate 29
2a. Fogli di stile Un foglio di stile (stylesheet) descrive come un documento elettronico deve essere presentato sullo schermo, sulla carta ed eventualmente come deve essere pronunciato da un sintetizzatore vocale Dal 1994 ad oggi il W3C ha promosso vari tipi di stylesheet: CSS: fogli di stile per HTML XSL: fogli di stile per XML 30
2b. XSLT XSLT (extensible Stylesheet Language Transformations) è un'applicazione XML promossa dal W3C che permette di specificare regole per trasformare un documento XML in un altro documento L'output di XSLT può essere un altro documento XML (es. XHTML) un file HTML un file di testo Le operazioni che effettuabili tramite XSLT sono diverse: selezionare elementi o attributi formattare ordinare contare porre condizioni 31
2d. XPath XPath definisce una serie di regole per il filtraggio e la selezione di nodi all'interno della struttura ad albero di un documento XML XPath si basa sulle relazioni tra i vari nodi (genitori, figli e fratelli) 32
3. Standard di codifica Alcuni modelli di markup sono diventati degli standard per la codifica di particolari tipi di documenti, ad esempio: DocBook per la documentazione (DocBook) TEI per varie tipologie di testi (Text Encoding Initiative): Guidelines TEI P4 (<http://www.tei-c.org/p4x/>) - è in preparazione la versione P5 (http://www.tei-c.org/p5/) TEILite, versione ridotta delle Guidelines TEI (<http://www.tei-c.org/lite/>, anche in traduzione italiana: <http://www.teic.org/lite/teiu5_it.html>) 33
La codifica di testi TEILite <http://www.tei-c.org/lite/teiu5_it.html> 34
Software per XML Esistono molti editor per compilare e validare file XML, tra cui: 1. NoteTab (da usare in combinazione con il parser SP): consente di creare delle librerie personalizzate per la marcatura (file.clb); servono i seguenti componenti: editor Notetab: esiste una versione gratuita (Light, ma senza sintassi colorata) e due a pagamento (Std e Pro) parser SP libreria per lanciare la validazione istruzioni per installare il parser SP e la libreria di NoteTab 2. XMLSpy: esiste una versione gratuita (FREE Home Edition), che richiede solo un codice di registrazione che viene inviato via e-mail 35
XML Bibliografia Extensible Markup Language (XML) 1.0 (Third Edition): raccomandazioni del W3C: <http://www.w3.org/tr/2004/rec-xml-20040204/> Extensible Markup Language (XML) 1.0: traduzione italiana (della prima edizione delle raccomandazioni del W3C) <http://www.xml.it:23456/xml/rec-xml-19980210-it.html> Harold - Means, XML Guida di riferimento, Apogeo, 2001 Holzner, XML Tutto & Oltre, Apogeo, 2001 TEI Il manuale TEI Lite. Introduzione alla codifica elettronica dei testi letterari, a cura di Fabio Ciotti, Bonnard, 2005 36