La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sistemi per il recupero delle informazioni

Presentazioni simili


Presentazione sul tema: "Sistemi per il recupero delle informazioni"— Transcript della presentazione:

1 Sistemi per il recupero delle informazioni
XML L'XML non è soltanto uno strumento per il WEB ma è qualcosa di più: è uno strumento che permetterà la condivisione totale dei dati, intesi come pura informazione, a prescindere dal tipo di visualizzazione e di utilizzo che se ne farà in futuro. XML è un acronimo per eXtensibleMarkup Language: Language perché si tratta di un linguaggio, Markup perché è fondato sull'utilizzo dei marcatori ed eXtensible perché consente a chi lo utilizza di creare i tag di cui ha bisogno. Metalinguaggio. Non set di marcatori predefinito come HTML ma istruzioni di SINTASSI per la creazione di molteplici linguaggi di codifica.

2 HTML

3 Il linguaggio HTML HTML = Hypertext Markup Language
Linguaggio per la costruzione delle pagine web definisce come devono essere visualizzate le pagine permette di realizzare legami ipertestuali tra pagine diverse Linguaggio di markup indica come disporre gli elementi all’interno di una pagina mediante delle istruzioni dette “tag” i browser leggono il file html, interpretano i tag e visualizzano la pagina con le giuste formattazioni Nota: una pagina HTML altro non è che un normalissimo file di testo, che fa riferimento ad altri elementi separati, come immagini, filmati, file multimediali. Un documento HTML è infatti un file di testo che contiene delle istruzioni dette tag o comandi che specificano le caratteristiche di visualizzazione del documento stesso. HTML non ha meccanismi che consentono di prendere delle decisioni ("in questa situazione fai questo, in quest'altra fai quest'altro"), e non è in grado di compiere delle iterazioni ("ripeti questa cosa, finché non succede questo"), né ha altri costrutti propri della programmazione. L'organizzazione che si occupa di standardizzare la sintassi del linguaggio HTML (il W3C: World Wide Web Consortium).

4 I tag Le istruzioni HTML sono formate da parole chiave racchiuse tra i simboli “<” e “>” Si introducono dei tag che hanno il formato <comando> </comando> Tutto quello racchiuso tra le coppie di tag deve essere interpretato secondo quanto specificato dal comando Esistono tag che non vogliono la chiusura <br> <hr> Al giorno d’oggi esistono molti programmi che ci aiutano nella creazione di pagine internet, i cosiddetti “editor”. Questi programmi ci permettono di lavorare in modalità “grafica”, ossia come se noi stessimo editando la pagina con un programma di video scrittura. Ed automaticamente l’editor, crea il “codice html” opportuno. Tra questi programmi ricordiamo: FrontPage di Microsoft, DreamWeaver di Macromedia, GoLive di Adobe

5 Struttura di una pagina HTML
Template di una pagina web <html> <head> <title> titolo </title> </head> <body> contenuto del documento </body> </html>

6 Struttura di una pagina HTML
<html> </html>: contenitore del documento è chiuso a fine documento contiene due sezioni <head> </head> <body> </body> <head> </head>: contiene informazioni quali titolo del documento fogli di stile scripting <body> </body>: racchiude il contenuto

7 Il tag head Il tag <head> contiene informazioni non visualizzate nel corpo della pagina i motori di ricerca classificano i siti queste informazioni servono ai motori di ricerca Il tag <title> racchiude il titolo della pagina visibile nella barra del titolo il testo contenuto può comparire anche in seguito alla ricerca in un motore, come titolo del link. Sarà dunque importante impostarlo in modo pertinente; es: <head> <title> Il sito di Anna <title> </head>

8 Il tag meta Il tag <meta> contiene informazioni non visualizzate nel corpo della pagina si tratta di una serie di parole chiave e descrizioni, che aiutano i motori di ricerca a classificare il sito; la sintassi è <meta name=“…” content =“…”> Ad es. il meta-tag "description" permette di impostare una descrizione sintetica del sito stesso anche in questo caso, la descrizione compare talvolta nei risultati della ricerca <meta name = "description" content = “home page di Annalisa Pascarella"> il meta-tag "keywords" permette di indicare alcuni contenuti relativi al sito stesso Una volta terminato il sito è importante farlo trovare dai motori di ricerca È utile allora impostare correttamente i meta tag all’ interno della <head> del documento: si tratta di una serie di parole chiave e descrizioni, che aiutano i motori di ricerca a classificare il sito.

9 Il Doc type DTD = document type definition
prima di <html>, fornisce le specifiche del documento. Non è obbligatorio di solito generato automaticamente dall'editor. In mancanza, il documento è identificato come HTML 2.0 es: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN“ > HTML: il tipo di linguaggio utilizzato è l'HTML PUBLIC: il documento è pubblico W3C: il documento fa riferimento alle specifiche del W3C, - : le specifiche non sono registrate all'ISO. Se lo fossero, sarebbe "+", DTD HTML 4.01 Transitional: il documento fa riferimento a una DTD, a seguire c’è l’indirizzo del DTD; EN: la lingua con cui è scritta la DTD è l'inglese L'indirizzo di riferimento delle DTD spesso non vengono date (si sa dove sono). Comunque, 3 indicazioni possibili: Strict. DTD rigida, esclude ogni elemento che riguarda il layout (affidato ai Css) ed esclude elementi deprecati: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" > Transitional. Versione temporanea, per consentire il passaggio da una specifica all'altra. Sono ammessi i tag deprecati. Questa DTD andrà bene nella maggior parte dei casi: … Transitional … Frameset. E’ la DTD che riguarda i frames: …Frameset… Nelle ultime versioni, il tipo di <!DOCTYPE> utilizzato influisce sulla visualizzazione della pagina nel browser.

10 Un pò di utili tag <br> <hr>
per andare a capo non vuole il tag di chiusura! <hr> per tracciare una linea orizzontale <b> </b> (<i> </i>) per visualizzare in grassetto (in corsivo) <!-- questo è un commento -- >

11 <tag attributo1=“val” attributo2=“val”> testo <tag>
Attributi Molti tag hanno degli attributi. La sintassi corretta per un tag e’ infatti <tag attributo1=“val” attributo2=“val”> testo <tag> es. <body bgcolor=“blue” background =“img.jpg”> testo <body> Si tende ad avere il contenuto separato dallo stile i fogli di stile (CSS) contengono le regole di formattazione per i vari tag

12 Tag di formattazione <p> </p> <div> </div>
delimita un paragrafo lascio spazio sopra e sotto <div> </div> non lascia spazio prima e dopo la chiusura va a capo <span> </span> elemento inline, non va a capo

13 Elenchi <ol> <ul>
tag da utilizzare per aprire un elenco ordinato (ol = ordered list) gli elementi sono individuati dal tag <li> <ul> tag da utilizzare per aprire un elenco non ordinato (ul = unordered list)

14 Elenchi – esempio <ol type = "a">   <li> primo elemento   <li> secondo elemento </ol> l'attributo type può assumere i valori ”1”,”i”,”I”,”a”,”A” è un attributo case-sensitive <ul type=”disc”>   <li>primo elemento   <li>secondo elemento </ul> l’attributo type definisce il tipo di bullet e può assumere i seguenti valori “disc”, “circle”,”square”

15 Immagini <img src ="nomefile"> tag per inserire immagini
i browser supportano file .jpg, .gif, .png il valore dell’attributo src è il pathname del file il pathname del file può essere assoluto o relativo esistono diversi attributi per definire le proprietà delle immagini dimensioni posizione rispetto al testo dimensione bordo dell’immagine non vuole chiusura

16 Immagini - esempio <img src="nomefile" low src="nomefile“
height="x" width="x" alt="nome_alternativo" align="x" vspace="x" hspace="x" border="x“> alt e’ il nome alternativo mostrato nei file non grafici vspace la distanza tra testo e immagine

17 Link I link sono "il ponte" che consente di passare da un testo all’altro: all’interno della pagina web i link ci consentono di muoverci da un documento all’altro del web si parla di ipertesti I link sono definiti con il tag <a> <a href=" W3C </a> il parametro href del tag permette di specificare l’URL cui il legame deve portare il testo tra <a> e </a> e’ usato come label per il link è indifferente che la destinazione sia una pagina HTML di un sito, un’immagine, un file pdf , un file zip, o un file exe: il meccanismo del link funziona allo stesso modo indipendentemente dal tipo di risorsa; poi il browser si comporterà in modo differente a seconda della risorsa

18 realizza il collegamento
Link - esempio <a title =“vai ai link” href=”/sito/link.html”> Link </a> <a href="mailto:  Contatti </a> realizza il collegamento alla pagina link.html si aprirà il client di posta predefinito

19 Caratteristiche di HTML
HTML descrive la struttura logica dell'informazione allo scopo di presentarla come pagina Web molte pagine ancora generate manualmente sempre più pagine generate da applicazioni le pagine HTML sono destinate agli umani marcatura descrive la presentazione non c'è un legame diretto tra marcatura e informazione

20 Limitazioni di HTML Insieme di etichette prefissato
non permette di estendere il linguaggio con tag personali Marcatura non denota il significato come faccio a sapere quali sono le informazioni che mi interessano? · non ci dice nulla sul contenuto del documento come faccio ad estrarre le informazioni che mi interessano (e solo quelle)? · non supporta dati strutturati -> inefficiente per i motori di ricerca Marcatura usata per la presentazione del documento Serve un formalismo più flessibile; separazione tra: contenuto presentazione navigazione definizione di domini o contesti indipendenza dalla piattaforma (media)e supporto multilingue · limitato come prodotto di pubblicazione · limitato come ipertesto · limitato come elaborazione HTML non verrà comunque sostituito, almeno nel più immediato futuro, perché offre il metodo più semplice per pubblicare informazioni sul Web

21 XML

22 Sommario Esaminiamo: Parte I: Cos’è il markup
Parte II: Storia e Introduzione all’XML Parte III: Documenti, dati e rappresentazioni Parte IV: Definizione e applicazione di grammatiche Parte V: Modelli di presentazione dei documenti XML Parte VI: Strumenti e indirizzi per XML

23 Parte I Cos’è il markup Definizione di markup Tipi di markup
Il markup procedurale Il markup dichiarativo

24 Perché tutto questo chiasso?
Quando si porta una collezione di documenti in forma elettronica, si ha di solito in mente in generale una specifica applicazione (metterla in rete, prepararla per la stampa, ecc.). di solito, si cerca di trasformare il documento nella forma più opportuna perché venga utilizzato nell’applicazione suddetta. spesso per questo si fanno delle scelte che impediscono o ostacolano notevolmente un ulteriore riuso della stessa collezione per una diversa applicazione. L’impaginato poco si adatta ad un’indicizzazione per la rete, o viceversa i linguaggi di visualizzazione su rete sono troppo poco sofisticati per una produzione tipografica di buon livello, ecc. I linguaggi di markup derivati da SGML sono i linguaggi più opportuni per strutturare e marcare i documenti in maniera indipendente dall’applicazione, favorendo la riusabilità, la flessibilità e la apertura ad applicazioni complesse.

25 Cos’è il markup? (1) Definiamo markup ogni mezzo per rendere esplicita una particolare interpretazione di un testo. per esempio, tutte quelle aggiunte al testo scritto che permettono di renderlo più fruibile. Oltre a rendere il testo più leggibile, il markup permette anche di specificare ulteriori usi del testo. Con il markup per sistemi informatici, specifichiamo le modalità esatte di utilizzo del testo nel sistema stesso. Esempi di markup: testo in corsivo, testo sottolineato in XML tutto ciò che è compreso tra i caratteri “<” e “>” (angled brackets, parentesi angolari) è considerato markup, viene detto anche tag (etichetta), esempio: <nome> Anche HTML è un markup language inizialmente definito in SGML. Markup: tutto ciò che ha un significato speciale che deve essere ben caratterizzato, reso esplicito

26 Cos’è il markup? (2) Quando un autore scrive, da millenni a questa parte, specifica anche i delimitatori di parola (chiamati spazi), i delimitatori di frase (chiamati virgole) e i delimitatori di periodo (chiamati punti). La numerazione delle pagine o l’uso dei margini per creare effetti sul contenuto sono noti da centinaia di anni. Eppure questo a stretto rigore non fa parte del testo, ma del markup: nessuno dirà ad alta voce ‘virgola’ o ‘punto’ nel leggere un testo, ma creerà adeguati comportamenti paralinguistici (espressioni, toni, pause) per migliorare in chi ascolta la comprensione del testo.

27 Tipi di markup Il markup assolve a diversi ruoli a seconda del sistema di elaborazione, dell’applicazione, dello scopo a cui il documento è soggetto. Puntuazionale: punteggiatura, spazi, ecc. Presentazionale: ritorni a capo, allineamenti, cambi pagina, ecc. Procedurale: le istruzioni di computer da eseguire per ottenere un certo effetto Descrittivo (o dichiarativo): l’associazione ad ogni porzione di un documento dell’etichetta che ne descrive il senso e il ruolo Referenziale: l’uso di abbreviazioni e sigle che fanno riferimento e vengono sostituite con entità più lunghe e complesse.

28 Un testo su carta Tre Uomini in Barca Jerome K. Jerome 1889
Capitolo primo Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - […] Eravamo in quattro: George, William Samuel Harris, e io, Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente. Ci sentivamo tutti piuttosto giù di corda, ... 3

29 Il testo senza markup Questo è il testo completamente senza markup, come poteva essere scritto su un papiro della biblioteca di Alessandria, nel II o III secolo a.C. Treuominiinbarcajeromekjerome1889capitoloprimotreinvalidilesofferenzedigeorgeeharrislavittimadicentosettemalattieinguaribilieravamoinquattrogeorge,williamsamuelharrisioemontmorencystandocenesedutiincameramiafumavamoeparlavamodiquantofossimomalridottimalridottidalpuntodivistadellasaluteintendonaturalmentecisentivamotuttipiuttostogiùdicorda

30 Markup metabolizzato Tre Uomini in Barca Jerome K. Jerome (1889)
Aggiungiamo markup puntuazionale e presentazionale: maiuscole/minuscole, punteggiatura, spazi e ritorni a capo sono essi stessi elementi di markup. Tre Uomini in Barca Jerome K. Jerome (1889) Capitolo primo Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - […] Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente. Ci sentivamo tutti piuttosto giù di corda, ... Puntuazionale: punteggiatura, spazi, ecc. Presentazionale: ritorni a capo, allineamenti, cambi pagina, ecc.

31 Markup procedurale Sono comandi, o istruzioni che il sistema di lettura (umano o elettronico) deve eseguire sul testo. Ad esempio, istruzioni su come andare a capo, come decidere i margini, ecc. Questo è RTF. {\rtf1 \mac \ansicpg10000 \uc1 \pard \plain \s15 \qc \widctlpar \adjustright \f4 \fs48 \cgrid {Tre Uomini in Barca \par } \pard \plain \widctlpar \adjustright \f4 \cgrid { \line \par \par \par \par \par } \pard \plain \s1 \qc \keepn \widctlpar \outlinelevel0 \adjustright \i \f4 \fs36 \cgrid {Jerome K. Jerome \par } \pard \plain \qc \widctlpar \adjustright \f4 \cgrid { \fs36 […] \par 1889 \line \par } \pard \widctlpar \adjustright { \page } { \b \fs36 Capitolo primo} { \par \par \par \line } { \i Tre invalidi - Le sofferenze di George e Harris - La vittima di centosette malattie inguaribili - [ \u8230 \'c9] \par } { \line } { \fs28 Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti \u8230 \'c9 malridotti, dal punto di vista della salute, intendo, naturalmente. \line Ci sentivamo tutti piuttosto gi \u249 \'9d di corda, ... \par }} Procedurale: le istruzioni di computer da eseguire per ottenere un certo effetto

32 Il markup procedurale Basato sull’aspetto
Ad ogni elemento del documento viene associata la procedura per visualizzarlo in maniera voluta: font, dimensione, corsivi, grassetti, margini, interlinea, ecc. Dipendente dal sistema ogni sistema di visualizzazione impone le proprie regole e la propria sintassi. Associato agli individui ogni elemento possiede le proprie procedure per la visualizzazione, che possono anche essere tutte diverse anche per elementi dello stesso tipo. Non contestuale le regole di visualizzazione non dipendono dal contesto in cui vengono fatte, ma ognuna fa specie a sé.

33 Markup descrittivo Sono informazioni (descrizioni) sugli elementi del documento, che ne specificano il ruolo, la giustificazione, la relazione con gli altri elementi. <ROMANZO> <TITOLO>Tre Uomini in Barca</TITOLO> <AUTORE>Jerome K. Jerome</AUTORE> <ANNO>1889</ANNO> <CAPITOLO> <TITOLO>Capitolo primo</TITOLO> <INDICE> <EL>Tre invalidi</EL> <EL>Le sofferenze di George e Harris </EL> <EL>La vittima di centosette malattie inguaribili</EL> </INDICE> <PARA>Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… malridotti, dal punto di vista della salute, intendo, naturalmente. </PARA> <PARA>Ci sentivamo tutti piuttosto giù di corda,</PARA> </CAPITOLO>… </ROMANZO> Descrittivo: l’associazione ad ogni porzione di un documento dell’etichetta che ne descrive il senso e il ruolo

34 Il markup descrittivo Basato sul ruolo
di ogni elemento viene descritto il ruolo all’interno del testo, più che le regole per la sua visualizzazione: ad esempio: “questo è un titolo, questo è un paragrafo, questo è il nome dell’autore, questa è una citazione.” Indipendente dal sistema poiché il markup descrittivo assegna ruoli (e non regole di visualizzazione) agli elementi del testo, questi sono intrinseci agli elementi stessi, e non alle funzionalità disponibili nel sistema di visualizzazione. un sistema incapace di variare l’interlinea, o con un elenco limitato di font e dimensioni, può aver problemi ad interpretare un markup procedurale troppo ricco, ma la differenza tra (per esempio) un “titolo” o un “elenco” o un “paragrafo” non dipende dalla sofisticazione del sistema di visualizzazione.

35 Il markup descrittivo Basato su categorie
i ruoli sono categorie. Ogni elemento è associato ad una categoria, e ne riflette tutte le caratteristiche automaticamente. Contestuale con il markup dichiarativo è possibile definire delle regole che permettano o impediscano l’assegnazione di una categoria (ruolo) ad un elemento del testo a seconda del contesto. ad esempio, si può richiedere che il titolo vada all’inizio del testo, o che una lista sia composta solo di elementi della lista, e non da paragrafi, ecc.

36 La storia del markup 1969 : Charles Goldfarb (IBM) dirige lo sviluppo di GML 1974 : Charles Goldfarb inventa SGML, il padre dei linguaggi di marcatura 1986: SGML diventa uno standard ISO (ISO 8879 – “Standard Generalized Markup Language'') 1989: Tim-Berners Lee (CERN di Ginevra) inventa HTML 1995: Fondazione del World Wide Web Consortium (W3C) 1996: Inizio dello sviluppo di XML presso il W3C 1998: XML 1.0 diventa una raccomandazione W3C

37 SGML SGML (Standard Generalized Markup Language) è un meta-linguaggio standard e non proprietario per il markup dichiarativo. Facilita markup leggibili, generici, strutturati, gerarchici. Un meta-linguaggio è un linguaggio per definire linguaggi, una grammatica di costruzione di linguaggi. non proprietario significa che non esiste un’unica ditta o casa produttrice che ne detiene il controllo. In SGML il markup è posto in maniera leggibile a fianco degli elementi del testo a cui si riferiscono. SGML ha teorizzato l’uso del markup per informazioni (descrizioni) sugli elementi dei documenti, che ne specificano il ruolo, la giustificazione, la relazione con gli altri elementi. SGML permette di definire delle strutture, suggerite o imposte, a cui i documenti si debbono adeguare. le strutture imposte da SGML sono tipicamente a livelli di dettaglio successivi.

38 Parte II Storia e Introduzione a XML

39 INTRODUZIONE - I L'eXtensible Markup Language (XML) non è l'ennesimo linguaggio di markup né l'evoluzione dell'HTML. Esso è un meta-linguaggio di markup, cioè un linguaggio che permette di definire altri linguaggi di markup. progettato per lo scambio e la interusabilità di documenti strutturati su Internet. A differenza di HTML, XML non ha tag predefiniti e non serve per definire pagine Web né per programmare. Serve esclusivamente per definire altri linguaggi. XML prevede una sintassi semplificata rispetto a SGML, e definisce contemporaneamente una serie piuttosto lunga di linguaggi associati: uno per i link, uno per i nomi di tag, uno per i fogli di stile, uno per la descrizione di meta-informazioni, ecc.

40 INTRODUZIONE - II XML di per sé è un insieme standard di regole sintattiche per modellare la struttura di documenti e dati. Questo insieme di regole, dette specifiche, definiscono le modalità secondo cui è possibile crearsi un proprio linguaggio di markup. Le specifiche ufficiali sono state definite dal W3C (Worl Wide Web Consortium) e sono consultabili a partire dall'indirizzo

41 XML: cos’è? Un meta-linguaggio di markup derivato da SGML
XML e SGML sono meta-linguaggi di markup descrittivo inseriscono all'interno del documento delle etichette o marcature (tag), che permettono di descrivere il contenuto del documento stesso. in questo modo un'applicazione, ad esempio un motore di ricerca , è in grado di leggere le informazioni contenute nel documento e di elaborarle in maniera efficiente e corretta. Ecco l'esempio di un documento, che descrive gli estremi di una legge, in formato XML: <?xml version="1.0"?> <Legge> <Intestazione> <DataLegge>7 dicembre 2000</DataLegge> <NumeroLegge>383</NumeroLegge> <TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge> </Intestazione> </Legge>

42 XML: cos’è? I tag non sono predefiniti dal linguaggio, e’ compito dell’autore del documento a definirli l'insieme delle marcature utilizzabili per creare un documento XML non è predefinito come succede per il linguaggio HTML per il quale un organismo unico internazionale, il Web Consortium, ha definito l'insieme dei tag utilizzabili e il loro significato. l'autore del documento XML definisce i propri tag in base alla tipologia dei dati da descrivere. per autore s'intende l'insieme dei soggetti interessati alla distribuzione di documenti XML che descrivono una certa tipologia semantica e che concordano insieme una struttura comune da adottare ad esempio, se un ente pubblico o privato intende rendere accessibile su Internet le schede bibliografiche del catalogo della propria biblioteca, utilizzando il linguaggio XML, dovrà contattare gran parte degli enti pubblici e/o privati che hanno la stessa esigenza e concordare con essi una struttura da utilizzare, ossia definire il numero e il tipo di tag.

43 XML: cos’è? E’ stato inventato per descrivere semanticamente i dati
XML è stato progettato per trattare la descrizione delle informazioni, ossia concentra l'attenzione sul significato dei dati. ad esempio, in questo documento XML, che descrive gli estremi di una legge, <?xml version="1.0"?> <Legge> <Intestazione> <DataLegge>7 dicembre 2000</DataLegge> <NumeroLegge>383</NumeroLegge> <TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge> </Intestazione> </Legge> le marcature indicano in maniera non ambigua il significato di ciascun dato, per cui un'applicazione è in grado di estrarre correttamente tutte le informazioni contenute nel documento senza incorrere in errori interpretativi. Usa il DTD per definire la struttura del documento E’ in grado di supportare i testi in Unicode

44 XML: cos’è? XML non è orientato ad uno specifico tipo di elaborazione
XML è stato creato esclusivamente come uno strumento per strutturare, memorizzare e scambiare informazioni. ad esempio, in questo documento XML che descrive un articolo di una legge, <?xml version="1.0"?> <Articolo Num="1"> <Rubrica>Finalità e oggetto della legge</Rubrica> <Comma Num="1" >La Repubblica riconosce il valore...</Comma> </Articolo> non è contenuta alcuna istruzione finalizzata all'elaborazione dei dati; si tratta di pura informazione confezionata nelle marcature XML. Occorre utilizzare un'applicazione specifica per inviare, ricevere o visualizzare il documento XML. Le marcature, evidenziando la semantica delle informazioni contenute in un documento, rendono semplice la progettazione e la realizzazione di applicazioni in grado di elaborare i dati.

45 PERCHE’ ? Ma perché si sente tanto parlare di XML?
Perché tutti ne parlano quasi come una rivoluzione in ambito informatico? Cosa è possibile fare con questo meta- linguaggio? Come è possibile definire ed utilizzare un proprio linguaggio di markup? XML: introduzione alla codifica dei testi Con la codifica dei testi si intende la rappresentazione dei testi stessi su un supporto digitale in un formato utilizzabile dall'elaboratore (Machine Readable Form) mediante un opportuno linguaggio formale. Tale linguaggio descrive il testo in ogni sua parte attraverso delle marche o tag, ovvero stringhe di caratteri definite dalle due parentesi uncinate < >, al cui interno sono specificati dei comandi.

46 UN PO’ DI STORIA Internet ed il Web hanno bisogno di standard per poter essere utilizzabili e per poter evolvere senza forzature. A questo scopo è stato istituito il Worl Wide Web Consortium nel dicembre del 1994 con l'obiettivo di definire standard accettati dai maggiori produttori di software per il Web, primo fra tutti il linguaggio HTML. L'assalto commerciale ad Internet degli anni '90 e la rapida diffusione del Web ha scatenato una delle lotte più agguerrite sul piano tecnico e commerciale: la guerra dei browser tra Netscape e Microsoft. ciascun contendente introduceva, con ogni nuova versione del proprio browser, una estensione proprietaria all'HTML. Risultato: un sito Web che usava le estensioni proprietarie di un browser rischiava di risultare inaccessibile agli altri browser. In questo panorama il W3C era costretto a rincorrere le evoluzioni dell’HTML e decidere cosa standardizzare e cosa no.

47 UN PO’ DI STORIA In questo contesto cominciò a delinearsi la necessità di un linguaggio di markup che offrisse maggiore libertà nella definizione dei tag pur rimanendo nell'ambito del rispetto di uno standard. Nel 1996 si costituì l'XML Working Group nell'ambito del W3C. lo scopo del gruppo di lavoro era quello di definire un linguaggio che salvasse gli standard e offrisse libertà di estensione. La ricerca partì dall’SGML un meta-linguaggio per la definizione di linguaggi di markup. questo linguaggio risultava troppo complesso per gli scopi della ricerca e fu semplificato Nel dicembre '97 le specifiche di XML venivano pubblicate.

48 UN PO’ DI STORIA Anche se gli obiettivi iniziali della nascita di XML erano rivolti alla soluzione di un problema di standard per il Web, ben presto ci si accorse che XML non era limitato al solo contesto Web. L’XML risulta essere abbastanza generale per poter essere utilizzato nei più disparati contesti: dalla definizione della struttura di documenti allo scambio di informazioni tra sistemi diversi, dalla rappresentazione di immagini alla definizione di formati di dati. questo aspetto rappresentava una rivoluzione XML è un acronimo per eXtensible Markup Language Language perché si tratta di un linguaggio Markup perché è fondato sull'utilizzo dei marcatori eXtensible perché consente a chi lo utilizza di creare i tag di cui ha bisogno. • L'XML non è soltanto uno strumento per il WEB ma è qualcosa di più: è uno strumento che permetterà la condivisione totale dei dati, intesi come pura informazione, a prescindere dal tipo di visualizzazione e di utilizzo che se ne farà in futuro. • Metalinguaggio. Non set di marcatori predefinito come HTML (cfr. DTD) ma istruzioni di SINTASSI per la creazione di molteplici linguaggi di codifica.

49 IL MONDO DI XML Dopo aver conosciuto la storia dell'origine di XML, la domanda che sorge è: allora XML sostituirà l'HTML? Anche se il dubbio risulta legittimo, possiamo dire che XML e HTML non sono in diretta concorrenza. Le specifiche di HTML sono ferme alla versione 4.0 del dicembre 1997 (ignorando le piccole revisioni della 4.01) , tuttavia XML contribuisce proprio all'evoluzione dell'HTML.

50 IL LINGUAGGIO XHTML L'evoluzione del linguaggio HTML è XHTML (eXtensible HTML), una ridefinizione di HTML in termini di XML. XHTML è HTML definito secondo le regole di XML. Le differenze più evidenti si riassumono brevemente: tutti i tag e i loro attributi sono espressi in minuscolo è obbligatorio inserire il tag di chiusura (es. se usiamo <p> dobbiamo chiudere con </p>) i valori degli attributi devono essere specificati tra doppi apici o singoli apici (es. <table width="30%">) i tag vuoti seguono la cosiddetta sintassi minimizzata (es, il tag <br> diventa <br/>) Possono sembrare differenze di poco conto, soprattutto perché la tolleranza dei browser ci ha abituato a commettere errori sintattici, ma sono molto importanti. Le pagine strutturate in XHTML possono essere elaborate da software diversi dai classici browser ad es. gli spider dei motori di ricerca, i sintetizzatori vocali, i dispositivi wireless, …

51 XML: standardizzato e strutturato
Abbiamo detto che XML è un insieme standard di regole sintattiche per modellare la struttura di documenti e dati. Due parole sono di fondamentale importanza: standard e struttura. Le regole sono standard e questo garantisce l'indipendenza da una specifica piattaforma hardware e software o da uno specifico produttore. Le regole di XML consentono di definire la struttura di documenti e dati, ma non altre caratteristiche come il tipo o la presentazione dei dati o documenti. Questo compito non è di XML ma è delegato ad altre tecnologie, alcune delle quali sono basate sullo stesso XML.

52 I vantaggi di XML Documenti auto-descrittivi
la scelta dei nomi degli elementi può essere fatta per facilitare la comprensione del ruolo strutturale dell’elemento. Struttura navigabile dei documenti la rigida struttura ad albero e l’assenza di regole di minimizzazione rendono semplice la visualizzazione Platform-independence XML è uno standard aperto, e chiunque può realizzare strumenti che lo usino come formato di dati. Facile convertibilità a formati Web la totale interdipendenza tra XML, SGML, HTML etc. fa sì che la conversione tra formati interni e formati per il Web sia facile. Con XML è possibile condividere e scambiare dati in modo indipendente dall'hardware e dal software Poiché i dati XML sono memorizzati in formato testuale piatto, ossia senza caratteri speciali aggiuntivi, XML fornisce un modo di condividere e scambiare i dati indipendente dal sistema operativo (Mac, Windows, UNIX) e dal software. Attualmente, i sistemi di database contengono dati in formati incompatibili fra di loro. Fino ad oggi, le società di software hanno investito molte risorse nello studio e nella realizzazione di programmi per lo scambio di dati su Internet fra i diversi sistemi. La conversione in XML riduce fortemente la complessità dei programmi e crea documenti che possono essere letti da molte applicazioni di tipo diverso. Applicazioni Web più potenti Dal momento che il linguaggio XML consente di evidenziare, attraverso i propri tag, la semantica di un testo, è possibile semplificare la creazione di applicazioni che elaborano documenti elettronici in modo intelligente. Ad esempio, un motore di ricerca sarà in grado di reperire tutti gli articoli di una legge che contengono riferimenti normativi esterni, oppure di trovare gli articoli che contengono nella rubrica una certa parola. In questo modo è possibile superare uno dei limiti dell'HTML in cui i dati sono formattati per la presentazione a video e risultano difficili da trattare per una elaborazione di altro tipo. Applicazioni Web più flessibili I documenti basati sull'XML possono essere utilizzati dal Web client elaborando i dati che vi sono contenuti in differenti processi software non predeterminati. Quindi è possibile, per esempio, sviluppare applicazioni che richiedono al Web client di presentare viste diverse degli stessi dati.

53 Cosa c’è con XML? XML è in realtà una famiglia di linguaggi, alcuni già definiti, altri in corso di completamento. Alcuni hanno l’ambizione di standard, altri sono solo proposte di privati o industrie interessate. Alcuni hanno scopi generali, altri sono applicazioni specifiche per ambiti più ristretti. XML 1.0: un meta-linguaggio di markup, sottoinsieme di SGML XML-Namespace: un meccanismo per la convivenza di nomi di tag appartenenti a DTD diversi XPath per la creazione di link ipertestuali XSL: un linguaggio di stylesheet per XML XML schema: un linguaggio per la specifica di criteri di validazione di documenti XML

54 Cosa si fa con XML? Data Interchange
Ogni volta che più programmi si debbono scambiare dati, ci sono problemi di compatibilità. Ogni programma ha le proprie assunzioni in termini di caratteri, separatori, ripetibilità di elementi, differenza tra elementi vuoti e assenti, ecc. XML si propone come la sintassi intermedia più semplice per esprimere dati anche complessi in forma indipendente dall’applicazione che li ha creati. Document publishing XML è ideale come linguaggio per esprimere documenti strutturati o semi strutturati, e per esprimerli in maniera indipendente dalla loro destinazione finale. Lo stesso documento XML può essere preso e trasformato per la stampa, il Web, il telefonino, l’autoradio. XML can Separate Data from HTML: store data in separate XML files; using HTML for layout and display Benefits: changes in the underlying data will not require any changes to your HTML XML can be used to Store Data: store data in files or databases. Benefits: accessible to more applications XML can be used to Create new Languages: WML (Wireless Markup Language) used to markup Internet applications for handheld devices like mobile phones (WAP); MusicXML used to publishing musical scores

55 Cosa si fa con XML? (2) Interazione tra database eterogenei
Ogni volta che è necessario trasferire dei dati da un database all’altro, la soluzione più economica è stampare i dati dal primo DB su carta e ribatterli a mano sul secondo. Idealmente si vorrebbe accedere via Web ai dati del primo DB, selezionare quelli di interesse, e spostarli sul secondo DB, che si preoccupa di adattarli alle sue esigenze. Il secondo DB, dunque, deve essere in grado di comprendere la sintassi dei dati, di interpretare la struttura e di isolare le informazioni di suo interesse. Per questo potrebbe essere aiutato da un formato di interscambio tipo XML, che permetterebbe di etichettare i dati esplicitamente.

56 HTML vs XML HTML nacque come evoluzione del SGML, che permetteva di mettere in rete documenti di un tipo molto specifico, semplici documenti di testo con qualche immagine e dei link ipertestuali. Con il successo del WWW, HTML venne iniziato ad usare per molti scopi, molti più di quelli per cui era stato progettato. Si iniziò ad abusare dei tag di HTML per gli effetti grafici che forniva, più che per gli aspetti strutturali o semantici. Si iniziarono a desiderare elaborazioni sofisticate sui dati HTML, elaborazioni che non era possibile fornire. Si iniziò a trovare limitata la capacità grafica di HTML, anche abusando dei tag. HTML -> come i dati appaiono, ci dice come rappresentare un doc ipertestuale su WEB (difficilmente su un altro media, ad es su carta) XML -> cosa sono i dati, descrizione dell’informazione, ci dice cosa contiene un documento

57 HTML vs XML Limitazioni di HTML • Insieme di etichette prefissato
Cosa è questo ? <td> 12 </td> • Il numero civico di una via ? • Il numero di telefono per ottenere informazioni sugli abbonati ? • Entrambe le cose ? • Nessuna delle due ? Limitazioni di HTML • Insieme di etichette prefissato – cosa uso / cosa è stato usato per rappresentare le informazioni di interesse • Marcatura non denota il significato – come faccio a sapere quali sono le informazioni che mi interessano? – come faccio ad estrarre le informazioni che mi interessano (e solo quelle)?

58 Un markup con HTML <p> <b> Sig. Mario Rossi </b>
<br> Via Verdi, 12 56100, Pisa Sig. Mario Rossi Via Verdi, 12 56100, Pisa Il nostro algoritmo per trovare il numero civico: Se un paragrafo contiene due tag <br> allora la prima parola dopo la prima virgola dopo il primo tag <br> è il numero civico.

59 Un semplice markup in XML
<business-card> <persona> <titolo> Sig. </titolo> <nome> Mario </nome> <cognome> Rossi </cognome> </persona> <indirizzo> <strada> Via Verdi </strada> <numero-civico> 12 </numero-civico> <cap> </cap> <città> Pisa </città> </indirizzo> </business-card>

60 Visualizzazione dell’XML
ma anche… Sig. Mario Rossi Via Verdi, 12 56100, Pisa Come l’HTML Sig. Mario Rossi Via Verdi, 12 56100, Pisa Un algoritmo migliore e più semplice per trovare il numero civico: il numero civico è il contenuto del tag <numero-civico>

61 Visualizzazione dell’XML
Il linguaggio XML non produce nessun effetto: non comprende le istruzioni di elaborazioni (neanche quelle di visualizzazioni) Neccessita sempre di qualche applicazione che decide cosa fare per ogni tag. Gli attuali browser non sono in grado di visualizzare i documenti XML senza il supporto di altri linguaggi di formattazione (es. XSL, eXtensible Style Sheet) Es. senza XSL cdcatalog.xml Es. con XSL cdcatalog_xsl.xml

62 Visualizzazione dell’XML

63 XML vs HTML XML non è stato progettato per sostituire HTML
XML e HTML sono stati progettati per svolgere compiti diversi: XML è stato pensato per descrivere i dati ed è incentrato sul loro valore semantico riguarda la descrizione delle informazioni HTML è stato pensato per visualizzare i dati ed è incentrato sull'aspetto con il quale il dato è presentato tratta la visualizzazione delle informazioni XML è estensibile, è un metalinguaggio nel senso che permette di definire altri linguaggi di marcatura (si veda, ad esempio, il linguaggio Wireless Markup Language usato per le connessioni senza cavo) HTML non è estensibile XML mantiene separate la struttura del documento dalle regole per la sua visualizzazione HTML usa elementi per la struttura insieme ad elementi per la visualizzazione esempio vodafone Esaminiamo le versioni brevi, nei formati HTML e XML, di un documento estratto da una legge, per evidenziare, con maggior enfasi, le differenze fra i due linguaggi di marcatura. Aprendo con un browser il documento in formato HTML chiunque è in grado di capire che si tratta di un articolo di una legge; ma se osserviamo il documento come appare nel suo formato HTML originale ci rendiamo subito conto del fatto che, se volessimo progettare, ad esempio, un algoritmo generale per l'estrazione automatica del primo comma di un articolo, questo non sarebbe possibile o almeno potremmo sempre trovare un documento in grado di far fallire l'algoritmo . Invece sullo stesso documento in formato XML sarebbe facile progettare un algoritmo per l'estrazione del primo comma in quanto grazie alle marcature un computer sarebbe in grado di riconoscere tutte le parti del documento e le relazioni di ognuna di queste con le altre.

64 XML: gli obiettivi Questi gli obiettivi progettuali di XML secondo il W3C XML Working Group: XML deve essere utilizzato in modo semplice su Internet. XML deve supportare un gran numero di applicazioni. XML deve essere compatibile con SGML. Deve essere facile lo sviluppo di programmi che elaborino XML. Il numero di caratteristiche opzionali deve essere mantenuto al minimo possibile, idealmente a zero. I documenti XML dovrebbero essere leggibili da un uomo e ragionevolmente chiari. La progettazione XML dovrebbe essere rapida. La progettazione XML dovrebbe essere formale e concisa. I documenti XML devono essere facili da creare. Non è di nessuna importanza l’economia nel markup XML. XML dovrà supportare un largo campo di applicazioni (motori per la visualizzazione di contenuti, strumenti di traduzione e applicazioni di database); XML dovrà essere facilmente interpretabile in modo da facilitarne la diffusione; XML non dovrà avere opzioni perché possono dare problemi di compatibilità; XML dovrà essere leggibile dall'uomo anche se questi non ha un Parser XML ma un semplice editor; XML dovrà avere una progettazione formale e concisa non come SGML; I documenti XML dovranno essere facili da creare anche con un semplice editor.

65 Parte III Documenti, dati e rappresentazioni

66 Le componenti di XML Tre parti fondamentali da tenere distinte:
il documento XML; le specifiche relative agli elementi, la struttura (DTD); le specifiche relative alla rappresentazione, lo stile (Stylesheet).

67 STRUTTURA DEI DOCUMENTI XML
Concretamente, un documento XML è un file di testo che contiene una serie di tag, attributi e testo secondo regole sintattiche ben definite. documento va inteso nel senso generale di contenitore di informazioni Analizziamo ora XML dal punto di vista logico e sintattico e i documenti che con esso si possono creare dando uno sguardo alla struttura logica. Un documento XML è intrinsecamente caratterizzato da una struttura gerarchica. E’ composto da componenti denominati elementi. ciascun elemento rappresenta un componente logico del documento e può contenere altri elementi (sottoelementi) o del testo. gli elementi possono avere associate altre informazioni che ne descrivono le proprietà, chiamate attributi. L'organizzazione degli elementi segue un ordine gerarchico o arboreo che prevede un elemento principale (root element o radice). la radice contiene l'insieme degli altri elementi del documento.

68 Struttura gerarchica di un documento XML
Possiamo rappresentare graficamente la struttura di un documento XML tramite un albero, noto come document tree. Prendiamo in considerazione la rappresentazione di un generico articolo a carattere tecnico e proviamo a rappresentarlo secondo il modello XML.

69 Struttura gerarchica di un documento XML
Root element elementi Nella figura abbiamo un root element denominato articolo che contiene una lista di elementi che rappresentano i vari paragrafi dell’articolo. Ciascun paragrafo contiene a sua volta del testo degli esempi di codice e delle immagini. La maggior parte degli elementi contiene degli attributi. Attributo

70 Element root Ogni documento XML deve contenere un solo elemento radice, cioè un elemento che racchiude tutti gli altri elementi secondo una struttura di relazione padre-figlio, cioé strettamente gerarchica. L'elemento radice è il primo elemento di un documento XML.

71 Struttura logica di un documento XML
La struttura logica di un documento XML dipende dalle scelte progettuali. Siamo noi a decidere come organizzare gli elementi all'interno di un documento XML. non esistono regole universali per l'organizzazione logica di un documento. La struttura logica di un documento XML viene tradotta in una corrispondente struttura fisica composta di elementi sintattici chiamati tag. questa struttura fisica viene implementata tramite un file di testo creato con un qualsiasi editor.

72 Struttura logica di un documento XML
<?xml version="1.0" ?> <articolo titolo="Titolo dell'articolo"> <paragrafo titolo="Titolo del primo paragrafo"> <testo> Blocco di testo del primo paragrafo </testo> <immagine file="immagine1.jpg"> </immagine> </paragrafo> <paragrafo titolo="Titolo del secondo paragrafo"> Blocco di testo del secondo paragrafo <codice> Esempio di codice </codice> Altro blocco di testo <paragrafo tipo="bibliografia"> Riferimento ad un articolo </articolo> element root tag rappresentazione fisica del documento XML visto prima attributo Gli elementi sono annidati Il Prologo e l’istanza • Prologo - due parti relative a – 1. versione del documento (unica dichiarazione obbligatoria), riferimento alla presenza di una DTD, set di caratteri utilizzato (UTF-8 o ISO ) – 2. eventuale DTD cui fare riferimento: Dichiarazione XML (case-sensitive!): <?xml version=“1.0” standalone=“yes” encoding=“ISO ”?> Dichiarazione del tipo di documento (opzionale): <!DOCTYPE nomeelementoradice SYSTEM “nomedtd.dtd”> • Istanza del documento: Elemento radice e serie dei tag in struttura gerarchica elemento paragrafo

73 Struttura logica di un documento XML
La prima riga del documento lo identifica come un documento XML e ne specifica la versione (in questo caso la 1.0): <?xml version="1.0" ?> deve essere sempre presente Sempre nella stessa dichiarazione può essere specificato l'insieme (set) di caratteri che si desidera includere all'interno dei propri documenti. Il set di caratteri usato, nel caso in cui non venga specificato diversamente, è UNICODE (UTF-8), una sorta di ASCII esteso. Un altro set di caratteri utilizzato è il LATIN (ISO ). In questo caso la prima linea di un documento diventa: <?xml version="1.0" encoding="ISO "?> <?xml version="1.0” encoding=‘UTF-8’?> la prima riga contiene la versione XML ed il codice dei caratteri usato

74 XML e Unicode XML abbandona completamente ASCII e le codifiche ad un byte. Questo porta a due vantaggi nei riguardi dell’internazionalizzazione: È possibile scrivere documenti misti, senza ricorrere a trucchi strani per identificare la parte che usa un alfabeto dalla parte che ne adopera un altro. Un documento scritto in un linguaggio non latino non deve basarsi su parametri esterni per essere riconosciuto come tale, ma la codifica stessa dei caratteri lo identifica. Unicode è un sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzati. L'Unicode viene supportato dai moderni standard della programmazione e del markup come XML

75 Struttura logica di un documento XML
Il corpo del documento segue questa prima riga, rappresentando gli elementi tramite tag, cioè sequenze di caratteri delimitate dai segni '<' e '>‘, come in HTML. Ma a differenza dell'HTML in cui i tag sono predefiniti, XML ci lascia liberi di definire i tag che vogliamo. Per specificare un attributo per un elemento inseriamo il nome dell’attributo con il relativo valore all’interno del tag di apertura dell’elemento l'organizzazione gerarchica degli elementi viene rappresentata in XML tramite il loro annidamento. Alcuni elementi possono essere vuoti, cioè possono essere privi di contenuto testuale. A differenza di quanto avviene per l'HTML, XML prevede che vengano sempre specificati i tag di apertura e chiusura. È questo il caso del tag immagine. Sintassi abbreviata: <immagine file="immagine1.jpg“/>

76 I componenti di XML Un documento XML contiene una varietà dei seguenti componenti Elementi caratteristiche della partizione logica della sezione di testo (es.<nomepersona>Francesca</nomepersona>) Attributi caratteristiche specifiche dell’elemento (es.<nomepersona tipo=“f”>Francesca</nomepersona>) Entità riferimento ad oggetti “esterni” al documento. Convenzione &nomeentità; Testo (detto anche #PCDATA) Commenti Processing Instructions

77 Elementi Gli elementi sono le parti di documento dotate di un senso proprio. il titolo, l’autore, i paragrafi del documento sono tutti elementi. Un elemento XML è l’insieme di un tag iniziale, un contenuto ed un tag finale. <TITOLO>Tre uomini in barca</TITOLO> Alcuni elementi possono essere vuoti Tutti gli elementi devono avere un tag di chiusura ciò non è richiesto in HTML, dove alcuni elementi possono non avere il tag di chiusura, dato che la sintassi del linguaggio non lo richiede obbligatoriamente. <p>Questo è un paragrafo. I tag sono sempre delimitati da parentesi angolate; i dati all'interno dei tag costituiscono il valore dell'elemento.

78 Elementi Differenze tra caratteri maiuscoli e caratteri minuscoli (case sensitive) I caratteri maiuscoli e minuscoli sono rilevanti per la definizione di un tag XML. I seguenti elementi: <articolo></articolo> <Articolo></Articolo> sono diversi fra loro, quindi i tag di apertura e di chiusura devono essere scritti con lo stesso uso dei caratteri maiuscoli e minuscoli; non è corretto scrivere: <articolo></Articolo>

79 Elementi Elementi correttamente nidificati
In XML un elemento può essere contenuto (nidificato) in un altro; nell'esempio che segue, l'elemento paragrafo è nidificato all'interno dell'elemento Articolo. <Articolo> < paragrafo > </ paragrafo > </Articolo> In XML l'ordine di chiusura dei tag deve essere inverso rispetto all'ordine di apertura; il successivo è un esempio errato di uso della sintassi degli elementi: <Articolo>< paragrafo > </Articolo></ paragrafo > Ciò non è richiesto in HTML, dove alcuni tag possono non rispettare l'ordine di apertura e chiusura, come nell'esempio che segue: <b><i>Questo testo è in grassetto e in corsivo</b></i> Caratteri riservati Molti caratteri fanno parte della struttura sintattica di XML e non vengono interpretati correttamente nel caso in cui siano direttamente inseriti all'interno di un documento. Se sorge la necessità di utilizzare uno di questi caratteri riservati, occorre utilizzare una speciale sequenza di caratteri, detta entità nella terminologia di XML.

80 Ci sono quattro tipi di contenuto per ogni elemento:
–element content –mixed content –simple content –empty content

81

82

83 Attributi Gli attributi sono informazioni aggiuntive sull’elemento che non fanno effettivamente parte del contenuto (meta-informazioni). Essi sono posti dentro al tag iniziale dell’elemento. Tipicamente hanno la forma nome=valore <romanzo file=“threemen.sgm”>…</romanzo> <capitolo N=“1”>Capitolo primo</capitolo> Ogni attributo è una coppia di oggetti: nome dell’attributo valore dell’attributo Il valore dell’attributo viene indicato nello start-tag Il valore deve essere sempre racchiuso fra le virgolette (singole o doppie) Un elemento può contenere uno o più attributi Può accadere che diversi componenti seguono le stesse regole strutturali, quindi identificate da una stesso elemento, pero’ richiedono trattamenti diversi => Si usano allora gli attributi Sono caratteristiche da associare alle componenti di uno stesso elemento, in modo che: – diversi attributi, oppure – valori diversi di un attributo identificano componenti diversi di un documento Ogni attributo è sempre associato ad un elemento, non ha vita autonoma. Inoltre, lo stesso attributo può ricorrere anche in più elementi.

84 Attributi Gli attributi servono ad aggiungere informazioni che:
sarebbero irrilevanti se inserite nel testo ma che sono utili per le applicazioni che devono elaborare il documento <file type="gif">compu.gif</file> Uno stesso dato può essere usato sia come attributo che come elemento: <persona cittadinanza=”italiana"> <nome>Anna</nome> <cognome>Rossi</cognome> </persona> <persona> <cittadinanza>italiana</cittadinanza> • Non esistono regole per scegliere gli attributi o gli elementi • Alcuni problemi con l’uso di attributi: – non possono contenere valori multipli (gli elementi si) – non sono facilmente espandibili per un uso futuro – non descrivono la struttura gerarchica – sono più difficili da essere manipolati dalle applicazioni – i loro valori sono più difficili da controllare da un wellformed parser di XML

85 DOCUMENTI BEN FORMATI XML richiede un certo rigore sugli aspetti sintattici. ad es. un tag vuoto deve prevedere il tag di chiusura o la sua forma abbreviata Un principio fondamentale a cui tutti i documenti XML devono sottostare è infatti: tutti i documenti XML devono essere ben formati (well formed). Un documento XML è ben formato se è un documento conforme alle regole di sintassi descritte precedentemente questo concetto è assimilabile in qualche modo alla correttezza ortografica di una lingua ed è un principio a cui i documenti XML non possono sottrarsi. XML distingue due tipi di documenti rilevanti per le applicazioni XML: i documenti ben formati ed i documenti validi. In XML, un documento è valido se presenta un DTD ed è possibile validarlo usando il DTD. Tuttavia XML permette anche documenti ben formati, ovvero documenti che, pur essendo privi di DTD, presentano una struttura sufficientemente regolare e comprensibile da poter essere controllata.

86 DOCUMENTI BEN FORMATI Perché un documento XML sia ben formato deve rispettare le seguenti regole: ogni documento XML deve contenere un unico elemento di massimo livello (root) che contenga tutti gli altri elementi del documento. Le sole parti di XML che possono stare all'esterno di questo elemento sono i commenti e le direttive di elaborazione <Capitolo> </Capitolo> ogni elemento deve avere un tag di chiusura o, se vuoti, possono prevedere la forma abbreviata (/>) XML fa distinzione tra maiuscole e minuscole, <paragrafo> I </paragrafo>

87 DOCUMENTI BEN FORMATI Perché un documento XML sia ben formato deve rispettare le seguenti regole: gli elementi devono essere opportunamente nidificati, cioè i tag di chiusura devono seguire l'ordine inverso dei rispettivi tag di apertura <Capitolo> <paragrafo> </paragrafo> </Capitolo> i valori degli attributi devono sempre essere racchiusi tra singoli o doppi apici <paragrafo id=“primo”> </paragrafo>

88 DOCUMENTI non BEN FORMATI
La violazione di una qualsiasi di queste regole fa in modo che il documento risultante non venga considerato ben formato. Codice del tipo <articolo titolo=test> ... </Articolo> darà qualche problema, e lo stesso dicasi per situazioni analoghe alla seguente: <paragrafo> <testo> abcdefghi... </paragrafo> </testo> Anche la scelta dei nomi dei tag deve seguire alcune regole. Un tag può iniziare con un lettera o un underscore (_) e può contenere lettere, numeri, il punto, l'underscore (_) o il trattino (-). Non sono ammessi spazi o altri caratteri. XML è sensibile all'uso di maiuscolo e minuscolo, quindi i tag <prova> e <Prova> sono considerati diversi.

89 DOCUMENTI BEN FORMATI – contenuto
Un documento XML può contenere potenzialmente qualsiasi carattere dell'alfabeto latino, cifre e punteggiatura. normalmente vengono accettati come caratteri validi in un documento XML i primi 128 caratteri della codifica ASCII (lettere dell'alfabeto latino minuscole e maiuscole, cifre, segni di punteggiatura, ecc.). se un documento contiene caratteri che non rientrano tra questi (es.: lettere accentate, simboli di valuta, ecc.) è necessario specificare lo schema di codifica utilizzato. Lo schema di codifica ed altre informazioni dirette al software incaricato di elaborare il documento XML sono indicate tramite elementi speciali detti direttive di elaborazione o processing instruction. ad esempio, la seguente direttiva di elaborazione: <?xml version="1.0" encoding="iso "?> abilita l'uso del set di caratteri noto come Latin 1 contenente le lettere accentate.

90 DOCUMENTI BEN FORMATI – commenti
In un documento XML possiamo trovare i commenti, cioè informazioni ignorate dai software che lo elaborano. Queste note non fanno parte del contenuto del documento, e le applicazioni XML 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. I commenti XML seguono la stessa sintassi dell'HTML, sono cioè racchiusi tra le sequenze di caratteri <!– e --> e possono trovarsi in qualsiasi punto del documento. <!– bla bla bla -->

91 DOCUMENTI BEN FORMATI – entità
Potrebbe essere necessario inserire in un documento XML dei caratteri particolari che potrebbero renderlo non ben formato. ad esempio, se dobbiamo inserire del testo che contiene il simbolo <, corriamo il rischio che possa venire interpretato come l'inizio di un nuovo tag, come nel seguente esempio: <testo> il simbolo < indica minore di </testo> Per evitare situazioni di questo tipo, XML prevede degli oggetti speciali detti entità che consentono di sostituire altri caratteri. Le entità sono frammenti di documento memorizzati separatamente e richiamabili all’interno del documento. Esse permettono di riutilizzare lo stesso frammento in molte posizioni garantendo sempre l’esatta corrispondenza dei dati, e permettendo una loro modifica semplificata. Oggi è una bella giornata. Come dice &FV;: “divertitevi!”

92 DOCUMENTI BEN FORMATI – entità
Cinque entità sono predefinite e consentono l'uso di altrettanti caratteri riservati all'interno di un documento: & definisce il carattere & < definisce il carattere < > definisce il carattere > " definisce il carattere “ &apos; definisce il carattere ‘ Sfruttando le entità, l'esempio precedente diventa: <testo> il simbolo < indica minore di </testo>

93 DOCUMENTI BEN FORMATI – CDATA
In determinate situazioni gli elementi da sostituire con le entità possono essere molti, il che rischia di rendere illeggibile il testo ad essere umano. si consideri il caso in cui un blocco di testo illustri proprio del codice XML: <codice> <libro> <capitolo> </capitolo> </libro> </codice> In questo caso, al posto di sostituire tutte le occorrenze dei simboli speciali con le corrispondenti entità è possibile utilizzare una sezione CDATA. Una sezione CDATA (Character DATA) è un blocco di testo che viene considerato sempre come testo, anche se contiene codice XML o altri caratteri speciali. Rappresenta 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é XML usa questo nome per indicare il contenuto di elementi di testo.

94 DOCUMENTI BEN FORMATI – CDATA
Per indicare una sezione CDATA è sufficiente racchiuderla tra le sequenze di caratteri <![CDATA[ e ]]>. Il nostro esempio diventerà come segue: <codice> <![CDATA[ <libro> <capitolo> </capitolo> </libro> ]]> </codice> In certe situazioni non si conosce a priori il contenuto che può essere inserito in un blocco di testo e pertanto l'utilizzo delle sezioni CDATA risulta obbligatorio.

95 DOCUMENTI VALIDI – grammatica
XML offre la libertà di definire i tag a seconda delle necessità, ma per evitare confusione è necessario un meccanismo che ne vincoli l'utilizzo all'interno dei documenti. Abbiamo bisogno di definire una grammatica per il linguaggio di markup che abbiamo ideato. Una grammatica è un insieme di regole che indica quali vocaboli (elementi) possono essere utilizzati e con che struttura è possibile comporre frasi (documenti). una grammatica definisce uno specifico linguaggio di markup. Se un documento XML rispetta le regole definite da una grammatica è detto valido per un particolare linguaggio. La caratteristica di documento valido si affianca a quella di documento ben formato per costruire documenti XML adatti ad essere elaborati automaticamente. Un documento ben formato può non essere valido rispetto ad una grammatica ma non rispetto a un’altra, mentre un documento valido è necessariamente ben formato.

96 DOCUMENTI VALIDI – grammatica
Ma come si definisce una grammatica per descrivere un linguaggio di markup? Attualmente due sono gli approcci più diffusi alla creazione di grammatiche per documenti XML: Dtd – Document Type Definition XML Schema Questi argomenti saranno affrontati in seguito.

97 DOCUMENTI VALIDI – tipi di elaborazione
Un documento XML può essere all'origine di diversi tipi di elaborazione : generazione di altri documenti, eventualmente in formati diversi, controllo delle impostazioni di programmi, rappresentazione di immagini, ecc. Tutti i possibili impieghi di XML, però, si fondano su due tipi di elaborazione preliminare: la verifica che un documento sia ben formato e la sua validità rispetto ad una grammatica. I software che si occupano di queste elaborazioni sono detti parser e sono degli strumenti standard disponibili sulle diverse piattaforme. Il cuore di un applicazione XML è il parser, ovvero quel modulo che legge il documento XML e ne crea una rappresentazione interna utile per successive elaborazioni (come la visualizzazione).

98 DOCUMENTI VALIDI – parser
Possiamo suddividere i parser in due categorie (talvolta può essere lo stesso parser che assume due ruoli): parser non validante è un parser che verifica soltanto se un documento è ben formato anche in presenza di un DTD è solo in grado di verificare la buona forma del documento. In alcune applicazioni, però, non è necessario validare i documenti, solo verificare la loro buona forma. parser validante è un parser che, oltre a verificare che un documento è ben formato, verifica se è corretto rispetto ad una data grammatica La maggior parte degli editor XML più recenti hanno un parser integrato o si appoggiano su parser esterni per effettuare la convalida dei documenti.

99 Parte IV Definizione e applicazione di grammatiche
Inizialmente si pensava che XML servisse solo per i documenti. XML è più semplice di SGML, è più generale ed aperto di HTML, è lo strumento ideale per esprimere documenti di testo, siano essi libri, manuali o pagine Web. Quindi l’enfasi iniziale era su internazionalizzazione, strutturazione, facilità di conversione, ecc. Nasce poi l’idea che XML possa servire per qualcosa di più: XML è (anche) un linguaggio di markup per trasferire dati: un meccanismo per convertire dati dal formato interno dell’applicazione ad un formato di trasporto, facile da convertire in altri formati interni. Non pensato per la visione umana, ma per essere prodotto ed usato da programmi. XML è un’interfaccia (Adam Bosworth): Un’interfaccia tra autore e lettore, attraverso XSL e XLink, per portare significato tra creatore ed utente Un’interfaccia tra applicazione ed applicazione, attraverso XML Schema, per esprimere contratti sui formati, e verificarne il rispetto.

100 DTD: 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, semplificando il loro scambio fra i gruppi di persone interessate allo stesso settore. 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 (DTD). da un punto di vista cronologico il DTD rappresenta il primo approccio per la definizione di grammatiche per documenti XML Un Dtd è un documento che descrive i tag utilizzabili in un documento XML, la loro reciproca relazione nei confronti della struttura del documento e altre informazioni sugli attributi di ciascun tag.

101 DTD: Document Type Definition
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 Il DTD definisce quindi gli elementi legali di un documento XML, stabilisce le regole degli elementi del documento, cioè determina il suo modello Quando un documento XML è ben formato e rispetta le regole del DTD a cui si riferisce si dice che è un documento XML valido. La sintassi di un DTD si basa principalmente sulla presenza di due dichiarazioni: <!ELEMENT> e <!ATTLIST>. La prima definisce gli elementi utilizzabili nel documento e la struttura del documento stesso, la seconda definisce la lista di attributi per ciascun elemento. Esistono DTD già fatte ma è possibile anche crearne di nuove. Usare una DTD di riferimento in XML non è obbligatorio.

102 DTD - dichiarazione Un documento XML che usa un DTD deve dichiararlo con una Document Type Declaration: <!DOCTYPE nomeElementoRoot [ eventuale descrizione della struttura ]> segue la descrizione degli elementi, racchiusi fra le parentesi quadre Definito un DTD abbiamo definito la grammatica per un linguaggio di markup. A questo punto dobbiamo mettere in relazione un documento XML con il suo DTD , in modo che un parser XML possa verificare non soltanto la struttura ben formata del documento, ma anche la sua validità rispetto alla grammatica specificata. Esistono due modi per indicare il Dtd cui un documento XML fa riferimento. Il DTD può essere in un file esterno al documento XML incluso nello stesso documento XML

103 Entità, documenti e considerazioni su XML
Il primo modo prevede la presenza del Dtd all'interno del documento XML, come nel seguente esempio: <?xml version="1.0"> <!DOCTYPE articolo[ ...Definizioni del Dtd... ]> <articolo> ...Contenuto del documento XML... </articolo> La dichiarazione <!DOCTYPE> indica che il documento individuato dall'elemento root <articolo> segue le regole definite tra le parentesi quadre. sintassi: <!DOCTYPE elemento-radice [ dichiarazione-elementi

104 Entità, documenti e considerazioni su XML
Il secondo modo prevede che il Dtd sia definito in un file esterno ed il documento XML abbia un riferimento a tale file, come nel seguente esempio: <?xml version="1.0"> <!DOCTYPE articolo SYSTEM "articolo.dtd"> In questo caso si fa riferimento al Dtd definito nel file articolo.dtd. L'indicazione del file contenente il Dtd può essere espressa come URL assoluto o relativo. Ad esempio, se il Dtd viene pubblicato su un sito web è possibile specificare il riferimento al Dtd come nel seguente esempio: <!DOCTYPE articolo SYSTEM " sintassi: <!DOCTYPE elemento-radice SYSTEM "nome-file"> dove nome-file è un file esterno che contiene il DTD per il documento XML Caso esterno. La sintassi della dichiarazione cambia: deve contenere il riferimento al file esterno che contiene il DTD • Diverse possibilità: SYSTEM: Se il DTD non è pubblico allora si usa SYSTEM e si deve indicare il percorso per arrivare al file che contiene il DTD PUBLIC: Se il DTD è pubblico, messo a disposizione da qualche ente, allora si usa PUBLIC <!DOCTYPE root PUBLIC “PublicIdentifier” Esempio: <!DOCTYPE TAXONOMY PUBLIC “-//SIMONSTL//DTD TAXONOMY//EN” 3) Se il parser non è in grado di individuare il file, allora si deve indicare il percorso per arrivare al file che contiene il DTD <!DOCTYPE root PUBLIC “PublicIdentifier” “URIforExternal” Esempio <!DOCTYPE TAXONOMY PUBLIC “-//SIMONSTL//DTD TAXONOMY//EN” “ > Il public id è diviso in 4 parti: I) segno + se è di enti di standardizzazione, segno – altrimenti, II) nome ente, III) descrizione, IV) lingua

105 DTD – <!ELEMENT> <!ELEMENT> definisce gli elementi utilizzabili nel documento e la struttura del documento stesso posso specificare quali sono gli elementi leciti all’interno di un elemento, in quale numero e quale posizione rispetto agli altri. Ad esempio, la dichiarazione <!ELEMENT articolo(paragrafo+)> indica che l'elemento <articolo> ha come sottoelemento uno o più elementi <paragrafo>. Il carattere '+', dopo il nome del sottoelemento, indica il relativo numero di occorrenze. <!ELEMENT testo (intro, corpo, app)> In questo caso l'elemento definito è testo ed all'interno delle parentesi tonde è espresso il content model. Quest'ultimo ha una sintassi molto complessa, composta da indicatori di occorrenza e connettivi.

106 DTD – <!ELEMENT> Una dichiarazione di elemento può assumere tre forme. Prima forma: <!ELEMENT NomeElemento (#PCDATA)> questa è la forma più semplice in cui si dichiara che un elemento può contenere come valore una qualsiasi stringa di testo; ad esempio: <!ELEMENT Rubrica (#PCDATA)> In questo caso il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento del tipo: ... <Rubrica>DISPOSIZIONI GENERALI</Rubrica>

107 DTD – <!ELEMENT> Seconda forma: <!ELEMENT NomeElemento EMPTY> questa è la forma con la quale si dichiara che un elemento è privo di valore. In questo caso all'elemento sono sempre associati uno o più attributi: <!ELEMENT Numero EMPTY> <!ATTLIST Numero Valore CDATA #REQUIRED> e quindi il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento del tipo: ... <Numero Valore="1"/ >

108 DTD – <!ELEMENT> Terza forma: <!ELEMENT NomeElemento (ElementoFiglio1, ElementoFiglio2, ...)> questa è la forma a contenitore in cui si dichiara che un elemento è composto da sottoelementi (figli) con i quali s'instaura una stretta gerarchia del tipo padre-figlio. <!ELEMENT Legge (TitoloLegge, Articolato)> <!ELEMENT TitoloLegge (#PCDATA)> <!ELEMENT Articolato (...)> In questo caso il documento XML che fa riferimento al DTD contenente tale dichiarazione potrà contenere un elemento del tipo: <Legge> <TitoloLegge>Disciplina delle associazioni di promozione sociale</TitoloLegge> <Articolato> ... </Articolato> </Legge>

109 DTD – <!ELEMENT> Quando si usa la terza forma per dichiarare gli elementi, i sottoelementi possono essere specificati in maniera più articolata utilizzando un insieme di caratteri speciali che ha lo scopo di indicare il numero di occorrenze di un elemento. In particolare: + (indica che l'elemento è presente una o più volte) * (indica che l'elemento è presente zero o più volte) ? (indica che l'elemento è presente zero o una sola volta, opzionale) se non si specifica niente l’elemento deve comparire solo una volta Per esempio, la definizione <!ELEMENT paragrafo(immagine*, testo+)> indica che l'elemento <paragrafo> contiene la sequenza di elementi <immagine> e <testo>. L'elemento <immagine> può essere presente zero o più volte, mentre <testo> deve essere presente almeno una volta.

110 Separatori Separano specifiche determinando l’ordine o l’obbligatorietà: ‘,’ (virgola): richiede la presenza di entrambe le specifiche nell’ordine precisato. Es.: (a , b): ci devono essere sia a che b, e prima ci deve essere a e poi b. ‘|’ (barra verticale): ammette la presenza di una sola delle due specifiche. Es.: (a | b): ci può essere o a, oppure b, ma solo uno di essi.

111 Esempio Niente: la specifica precedente deve comparire esattamente una volta. Es.: c, (a, b): a e b devono comparire in quest’ordine esattamente una volta. È lecito solo: cab. ? (punto interrogativo): la specifica precedente può e può non comparire, ma solo una volta. Es.: c, (a , b)?: a e b possono comparire una volta, ma possono non comparire. Sono lecite: c, cab. + (più): la specifica precedente deve comparire almeno una volta. Es.: c, (a , b)+: a e b devono comparire almeno una volta, ma possono comparire anche più di una. Sono lecite: cab, cabab, cababababab, ma non c, ca, cb, cba, cababa. * (asterisco): la specifica precedente deve comparire zero o più volte. Es.: c, (a, b)*: a e b possono comparire o no, a scelta e in numero libero. Sono lecite: c, cab, cabab, cababababab, ma non ca, cb, cba, cababa.

112 DTD – <!ELEMENT> Esiste la possibilità di definire elementi il cui contenuto non è definito a priori, possono cioè essere vuoti o contenere altri elementi senza vincoli particolari. Per definire questo tipo di elementi si utilizza la seguente dichiarazione: <!ELEMENT elemento ANY> CONTENT MODEL: • Specifica il modello del contenuto dell’elemento in esame • Usa nomi degli altri elementi o parole riservate che indicano il tipo di contenuto Parole PCDATA (Parsable Character Data): testo costituito da caratteri leggibili che possono essere analizzati dal parser, compresi i caratteri di markup. chiave: any, pcdata, empty. Il testo del tipo PCDATA viene comunque analizzato dal parser, quindi se contiene un carattere riservato di XML, ad esempio ‘<‘ allora e’ un errore. Es. <A> Supponiamo A < B </A>

113 Ricapitolando… <!ELEMENT X ANY>
l’elemento X può contenere qualunque altro elemento specificato nel DTD, o anche testo <!ELEMENT X EMPTY> l’elemento X non può contenere niente. Debbo scrivere il tag con la sintassi tipica degli elementi vuoti: <X/> <!ELEMENT X #PCDATA> l’elemento X può solo contenere testo. E’ proibito mettere altri elementi al suo interno <!ELEMENT X (Y, (W | Z)+ , K*)> l’elemento X può contenere solo elementi secondo la specifica data, usando i separatori e gli operatori di ripetizione specificati. <!ELEMENT X (#PCDATA | Y | W | Z)*> L’elemento X può contenere sia testo sia altri elementi in maniera ed ordine specificati. Tramite il content model (specificazione formale del contenuto permesso nell’elemento, secondo una sintassi specifica di gruppi di modelli. ) posso specificare quali sono gli elementi leciti all’interno di un elemento, in quale numero e quale posizione rispetto agli altri. Ci sono cinque famiglie di content model: Qualunque: un elemento può contenere qualunque elemento definito nel DTD Vuoto: un elemento non ha contenuto, e spesso ha solo il tag iniziale. Testo: un elemento può contenere solo testo (#PCDATA) Strutturato: un elemento può contenere solo altri elementi Misto: un elemento può contenere sia testo che altri elementi. XML ha solo UNA forma ammessa di content model misto.

114 Un esempio Un libro, fatto di capitoli e a loro volta di paragrafi.
<!DOCTYPE ROMANZO SYSTEM “romanzo.dtd”> <ROMANZO> <TITOLO>Tre Uomini in Barca</TITOLO> <AUTORE>Jerome K. Jerome</AUTORE> <ANNO>1889</ANNO> <CAPITOLO> <TITOLO>Capitolo primo</TITOLO> <INDICE> <EL>Tre invalidi</EL><EL>Le sofferenze di George e Harris </EL><EL>La vittima di centosette malattie inguaribili</EL> </INDICE> <PARA>Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… <INCISO>malridotti, dal punto di vista della salute, <INCISO>intendo,</INCISO> naturalmente</INCISO>. </PARA> <PARA>Ci sentivamo tutti piuttosto giù di corda,</PARA> </CAPITOLO>… </ROMANZO>

115 Il file “romanzo.dtd” <!ELEMENT ROMANZO (TITOLO, AUTORE, ANNO, CAPITOLO+)> <!ELEMENT CAPITOLO (TITOLO, INDICE, PARA+)> <!ELEMENT TITOLO (#PCDATA) > <!ELEMENT AUTORE (#PCDATA) > <!ELEMENT ANNO (#PCDATA) > <!ELEMENT INDICE (EL+) > <!ELEMENT EL (#PCDATA) > <!ELEMENT PARA (#PCDATA | INCISO) * > <!ELEMENT INCISO (#PCDATA | INCISO)* >

116 DTD – <!ATTLIST> La dichiarazione di attributi all'interno di un DTD identifica: quali elementi hanno attributi il tipo di attributi l'eventuale valore assunto nel caso in cui non venga esplicitamente assegnato un valore (valore di default) Una dichiarazione di attributo viene espressa secondo la seguente sintassi: <!ATTLIST NomeElemento NomeAttributo1 TipoAttributo1 ValoreAttributo1 NomeAttributo2 TipoAttributo2 ValoreAttributo2 ... NomeAttributoN TipoAttributoN ValoreAttributoN > Gli attributi sono informazioni aggiuntive poste insieme all’elemento. Tecnicamente non fa parte del contenuto del documento, ma descrive e specifica l’elemento. Ci sono quattro famiglie di attributi importanti: Qualunque stringa è lecita E’ possibile scegliere solo uno dei valori proposti (lista) Il valore deve essere unico su tutto il documento (ID) Il valore deve essere uguale a quello di un ID esistente

117 DTD – <!ATTLIST> ad esempio, la dichiarazione:
<!ATTLIST articolo titolo CDATA #REQUIRED> indica che l'elemento <articolo> prevede un attributo titolo che può averecome valore una qualsiasi combinazione di caratteri (CDATA). l'indicazione #REQUIRED indica che la presenza dell'attributo è obbligatoria. I valori di default importanti in XML sono di quattro tipi: Valore esplicito: un stringa tra virgolette Valore necessario: la keyword #REQUIRED. Valore opzionale: la keyword #IMPLIED. Valore esplicito e non modificabile: la keyword #FIXED e una stringa tra virgolette.

118 DTD – <!ATTLIST> Se un attributo prevede valori alternativi predefiniti è necessario specificarli al posto di CDATA, come accade per l'attributo tipo del tag <paragrafo> <!ATTLIST paragrafo titolo CDATA #REQUIRED tipo (abstract|bibliografia|note) #IMPLIED > In questo caso vengono definiti due attributi per l'elemento <paragrafo> facendo seguire alla definizione del primo attributo (titolo) quella del secondo (tipo). L'attributo tipo, opzionale, può assumere uno tra i valori abstract, bibliografia o note. Attribute type può essere: • Enumerativo: lista di possibili valori <!ATTLIST poem status (draft | published) “draft” > • CDATA: il valore dell’attributo può essere una qualsiasi stringa legale di XML <!ATTLIST poem quality CDATA “medium” > • Altre keywords: ID, IDREF, ENTITY, NMTOKEN, NOTATION ...

119 DTD – <!ATTLIST> <!ATTLIST X att CDATA “uno”>
Il tag iniziale di X può contenere un attributo chiamato “att”. Qualunque stringa è lecita. Se non viene specificata una stringa, il valore definito per default è “uno” <!ATTLIST X att (uno|due|tre) “due”> Il tag iniziale di X può contenere un attributo chiamato “att”. Sono leciti solo i valori descritti. Se non viene specificata una stringa, il valore definito per default è “due” <!ATTLIST X att ID #IMPLIED> Il tag iniziale di X può contenere un attributo chiamato “att”. Sono leciti solo valori unici su tutto il documento. L’elemento X assume identificabilità assoluta all’interno del documento: è un “luogo notevole”. Poiché il valore deve essere sempre diverso, non è possibile specificare un valore di default. <!ATTLIST X att IDREF #IMPLIED> Il tag iniziale di X può contenere un attributo chiamato “att”. I valori di “att” debbono essere uguali ad un valore di un attributo di tipo ID esistente da qualche parte nel documento.

120

121

122 Esempio, più: attributi ID e IDREF
L’elemento dell’indice punta al paragrafo che vi si riferisce: <!DOCTYPE ROMANZO SYSTEM “romanzo.dtd”> <ROMANZO> <TITOLO>Tre Uomini in Barca</TITOLO> <AUTORE>Jerome K. Jerome</AUTORE> <ANNO>1889</ANNO> <CAPITOLO> <TITOLO>Capitolo primo</TITOLO> <INDICE> <EL p=“uno”>Tre invalidi</EL><EL p=“due”>Le sofferenze di George e Harris</EL><EL p=“tre”>La vittima di centosette malattie inguaribili</EL> </INDICE> <PARA n=“uno”>Eravamo in quattro: George, William Samuel Harris, io, e Montmorency. Standocene seduti in camera mia, fumavamo e parlavamo di quanto fossimo malridotti… <INCISO> malridotti, dal punto di vista della salute, <INCISO>intendo, </INCISO> naturalmente</INCISO>. </PARA> <PARA>Ci sentivamo tutti piuttosto giù di corda,</PARA> </CAPITOLO>… </ROMANZO>

123 Il file “romanzo.dtd” <!ELEMENT ROMANZO (TITOLO, AUTORE, ANNO, CAPITOLO+)> <!ELEMENT CAPITOLO (TITOLO, INDICE, PARA+)> <!ELEMENT TITOLO (#PCDATA) > <!ELEMENT AUTORE (#PCDATA) > <!ELEMENT ANNO (#PCDATA) > <!ELEMENT INDICE (EL+) > <!ELEMENT EL (#PCDATA) > <!ATTLIST EL p IDREF#REQUIRED > <!ELEMENT PARA (#PCDATA | INCISO)* > <!ATTLIST PARA n ID #IMPLIED > <!ELEMENT INCISO (#PCDATA | INCISO)* >

124 DTD - Elemento vs Attributo
Un DTD può essere costruito utilizzando soltanto gli elementi oppure anche gli attributi. Non esiste una regola generale per scegliere l'una o l'altra soluzione: la scelta dipende dal contesto che si sta formalizzando. L'uso degli attributi può comportare alcuni problemi: gli attributi non possono contenere valori multipli gli attributi non possono descrivere le strutture gli attributi sono più difficili da manipolare dagli applicativi gli attributi non possono essere vincolati da legami gerarchici fra di loro

125 Entità Abbiamo visto come XML preveda degli elementi, detti entità, che consentono di sostituire caratteri speciali. Più in generale, una entità consente di sostituire sequenze di caratteri con nomi speciali della forma & nome;. È possibile definire entità personalizzate all'interno di un Dtd in modo da sostituire qualsiasi sequenza di caratteri. Per definire un'entità personalizzata si utilizza la dichiarazione <!ENTITY>. il seguente esempio mostra la definizione di un'entità & html; che rappresenta un'abbreviazione per la stringa HyperText Markup Language: <!ENTITY html "HyperText Markup Language"> grazie a questa dichiarazione possiamo utilizzare l'entità & html; al posto dell'intera stringa all'interno del documento XML che fa riferimento a questa grammatica. Le entità sono utilizzate per definire una sola volta parti del documento XML che si ripetono più volte, oppure per rendere più leggibile un DTD. Prima di utilizzare un'entità, questa deve essere dichiarata con la seguente sintassi: <!ENTITY NomeEntità "ValoreEntità"> Successivamente la si può utilizzare nel documento XML con la seguente sintassi: &NomeEntità; L'effetto che si otterrà è quello d'inserire il valore dell'entità là dove l'entità stessa è stata usata. Esempio di utilizzo dell'entita all'interno di un DTD: <!ENTITY Tipologia "(Legge|DecretoLegge|DecretoLegislativo)"> <!ATTLIST Legge TipoAtto &Tipologia; #REQUIRED> Questo verrà interpretato come segue: <!ATTLIST Legge TipoAtto (Legge|DecretoLegge|DecretoLegislativo) #REQUIRED> Le entità possono anche essere dichiarate in un documento separato al quale si fa riferimento nel documento originale, in tal caso si parla di entità esterne. Per utilizzare un'entità esterna si utilizza la seguente sintassi dichiarativa: <!ENTITY % NomeEntitaEsterna SYSTEM "NomeFileEntita" > Successivamente, come nel caso di un'entità interna, la si può utilizzare nel documento XML con la seguente sintassi: &NomeEntitaEsterna; L'effetto che si otterrà è quello di inserire il contenuto del documento "NomeFileEntità" là dove l'entità esterna è stata richiamata.

126 Considerazioni Utilizzando i DTD abbiamo un maggior controllo sulla struttura e sull'uso dei tag in un documento XML, evitando che la libertà nella definizione dei tag possa far perdere il controllo sui contenuti. Tuttavia l'uso dei DTD per definire la grammatica di un linguaggio di markup non sempre è del tutto soddisfacente. Il principale problema: il DTD descrive la struttura di un documento e non il suo contenuto A parte il fatto che la sintassi utilizzata per definire un DTD non segue le regole stesse di XML, i DTD non consentono di specificare un tipo di dato per il valore degli attributi, né di specificare il numero minimo o massimo di occorrenze di un tag in un documento o altre caratteristiche che in determinati contesti consentirebbero di ottenere un controllo ancora più accurato sulla validità di un documento XML. Queste limitazioni hanno spinto alla definizione di approcci alternativi per definire grammatiche per documenti XML. Tra questi approcci il più noto è XML Schema. L'approccio basato sui Dtd ci consente di specificare la struttura del nostro documento XML e di ciascun tag utilizzabile al suo interno con una precisione a prima vista accettabile. Tuttavia, se abbiamo bisogno di un maggiore controllo sugli elementi che possono trovarsi all'interno di uno specifico tipo di documenti XML, i Dtd non risultano più sufficienti. ad esempio, i Dtd non mettono a disposizione un meccanismo immediato per indicare che un elemento può contenere al massimo un numero predefinito di sottoelementi, né è possibile specificare che un attributo può assumere valori di un certo tipo di dato, ad esempio valori numerici. • Con DTD i dati sono tutti globali, cioe’ il nome di un elemento vale per l’intero documento. Non si puo’ quindi con lo stesso nome indicare due elementi diversi anche in due contesti diversi • Il DTD non supporta i tipi di dati. Infatti le seguenti istruzioni sono entrambi valide: <quantity>5</quantity> <quantity>Hello</quantity> • Non c’e’ distinzione fra i tipi dei valori degli elementi

127 XML Schema Analogamente ad un Dtd, un XML Schema è una descrizione formale di una grammatica per un linguaggio di markup basato su XML. XML Schema è stato pensato per fornire quel supporto di validazione che i DTD permettono solo parzialmente, in particolare sul contenuto degli elementi e degli attributi del documenti XML. I DTD non distinguono tra nome del tag e tipo del tag, ed hanno solo due tipi: complesso (cioè strutturato) e semplice (cioè CDATA o #PCDATA). XML Schema, invece, fornisce un set complesso di tipi, a cui i tag e il loro contenuto debbono aderire. A differenza di un DTD, che utilizza una propria sintassi specifica, un XML Schema utilizza la stessa sintassi XML per definire la grammatica di un linguaggio di markup permettendo l’uso di applicazioni XML per la verifica della validità dei dati espressi.

128 XML Schema: elementi e struttura
Quindi uno XML Schema è un documento XML che descrive la grammatica di un linguaggio XML utilizzando un linguaggio di markup specifico. In quanto documento XML, uno XML Schema ha un root element che contiene tutte le regole di definizione della grammatica. La struttura generale di uno schema XML è la seguente: <?xml version="1.0"?> <xs:schema xmlns:xs=" ... Definizione della grammatica ... </xs:schema> L'elemento root del documento è rappresentato dal tag <xs:schema>. esso indica al parser che in questo documento saranno utilizzati dei tag definiti dal namespace standard del W3C. i namespaces rappresentano un meccanismo per identificare tag appartenenti ad una specifica grammatica questi tag speciali sono caratterizzati dal prefisso xs: • Presto schema sara’ il successore di DTD perche’: – Gli schema sono estendibili per adattarsi alle nuove esigenze – Gli schema sono piu’ ricchi e potenti di DTD – Sono scritti in XML – Supportano data types – Supportano namespaces

129 XML Schema: elementi e struttura
XML schema prevede il tag <xs:element> per la definizione degli elementi utilizzabili in un documento XML, specificando nell’attributo name il nome del relativo tag. All’interno di ciascun tag <xs:element> possiamo indicare il tipo di dato dell’elemento e possiamo definire gli eventuali attributi Ad esempio la seguente definizione specifica l’elemento testo che può contenere solo stringhe <xs:element name=“testo” type=“xs:string” /> questa dichiarazione corrisponde alla seguente dichiarazione Dtd <!ELEMENT testo(#PCDATA)>

130 TIPO DI DATO Per comprendere meglio ed apprezzare la potenza degli XML Schema occorre analizzare il concetto di tipo di dato. Esistono due categorie di tipi di dato: semplici e complessi.

131 TIPO DI DATO SEMPLICI XML Schema introduce il concetto di tipo di dato semplice per definire gli elementi che non possono contenere altri elementi e non prevedono attributi. Si possono usare tipi di dato semplici predefiniti oppure è possibile personalizzarli. Sono previsti numerosi tipi di dato predefiniti, alcuni dei quali sono riportati nella seguente tabella:

132 TIPO DI DATO SEMPLICI Ad esempio, la seguente dichiarazione:
<xs:element name="quantita" type="xs:integer" /> permette l'utilizzo dell'elemento quantità in un documento XML consentendo soltanto un contenuto di tipo intero. In altre parole, sarà considerato valido l'elemento <quantita>123</quantita> Mentre non lo sarà l'elemento <quantita>uno</quantita>.

133 TIPO DI DATO SEMPLICI XML Schema prevede anche la possibilità di definire tipi di dato semplici personalizzati come derivazione di quelli predefiniti. se, ad esempio, abbiamo bisogno di limitare il valore che può essere assegnato all'elemento <quantita> possiamo definirlo nel seguente modo: <xs:element name="quantita" > <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="1" /> <xs:maxInclusive value="100" /> </xs:restriction> </xs:simpleType> </xs:element> In altre parole, la dichiarazione indica che l'elemento <quantita> è di tipo semplice e prevede una restrizione sul tipo di dato intero predefinito accettando valori compresi tra 1 e 100.

134 TIPO DI DATO COMPLESSI I tipi di dato complessi si riferiscono ad elementi che possono contenere altri elementi e possono avere attributi. Definire un elemento di tipo complesso corrisponde a definire la relativa struttura. Lo schema generale per la definizione di un elemento di tipo complesso è il seguente: <xs:element name="NOME_ELEMENTO"> <xs:complexType> ... Definizione del tipo complesso ... ... Definizione degli attributi ... </xs:complexType> </xs:element>

135 TIPO DI DATO COMPLESSI Se l'elemento può contenere altri elementi possiamo definire la sequenza di elementi che possono stare al suo interno utilizzando uno dei costruttori di tipi complessi previsti: <xs:sequence> consente di definire una sequenza ordinata di sottoelementi <xs:choice> consente di definire un elenco di sottoelementi alternativi <xs:all> consente di definire una sequenza non ordinata di sottoelementi Per ciascuno di questi costruttori e per ciascun elemento è possibile definire il numero di occorrenze previste utilizzando gli attributi minOccurs e maxOccurs.

136 TIPO DI DATO COMPLESSI Ad esempio, se l'elemento testo può essere presente una o infinite volte all'interno di un paragrafo possiamo esprimere questa condizione nel seguente modo: <xs:element name="paragrafo"> <xs:complexType> <xs:element name="testo" minOccurs="1" maxOccurs="unbounded"/> </xs:complexType> </xs:element> In questo caso il valore unbounded indica che non è stabilito un massimo numero di elementi testo che possono stare all'interno di un paragrafo.

137 TIPO DI DATO COMPLESSI Per gli elementi vuoti è prevista una definizione basata sul seguente schema: <xs:element name="NOME_ELEMENTO"> <xs:complexType> <xs:complexContent> <xs:extension base="xs:anyType" /> ... Definizione degli attributi ... </xs:complexContent> </xs:complexType> </xs:element> In altri termini, un elemento vuoto è considerato un elemento di tipo complesso il cui contenuto non si basa su nessun tipo predefinito.

138 TIPO DI DATO COMPLESSI La definizione degli attributi è basata sull'uso del tag <xs:attribute>, come nel seguente esempio: <xs:attribute name="titolo" type="xs:string“ use="required" /> L'attributo use consente di specificare alcune caratteristiche come la presenza obbligatoria (required) o un valore predefinito (default) in combinazione con l'attributo value. ad esempio, la seguente definizione indica un attributo il cui valore di predefinito è test: <xs:attribute name="titolo" type="xs:string" use="default" value="test" /> Bisogna tener presente che se non si specifica esplicitamente l'obbligatorietà dell'attributo, esso è considerato opzionale.

139 TIPO DI DATO – esempio Il seguente codice presenta uno XML Schema relativo al linguaggio di descrizione di articoli tecnici mostrato nei vari esempi. <?xml version="1.0"?> <xs:schema xmlns:xs=" <xs:element name="articolo"> <xs:complexType> <xs:sequence> <xs:element name="paragrafo" maxOccurs="unbounded"> <xs:all maxOccurs="unbounded"> <xs:element name="immagine" minOccurs="0"> <xs:attribute name="file“ use="required"> <xs:simpleType> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="testo"/> <xs:element name="codice" minOccurs="0"/> </xs:all> <xs:attribute name="titolo" type="xs:string"use="optional"/>

140 TIPO DI DATO – esempio <xs:attribute name="tipo" use="optional"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="abstract"/> <xs:enumeration value="bibliografia"/> <xs:enumeration value="note"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="titolo" type="xs:string“ use="required"/> </xs:schema> Questo XML Schema è equivalente al Dtd che abbiamo visto precedentemente

141 Integrazioni di grammatiche e namespaces
A partire da una grammatica definita tramite uno XML Schema, è possibile sfruttare un parser XML validante per verificare la validità di un documento XML. Il parser avrà bisogno: del documento XML da validare dello schema XML rispetto a cui effettuare la validazione

142 Integrazioni di grammatiche e namespaces
Ci sono diversi modi per fornire al parser informazioni sullo schema da utilizzare per la validazione: si può nell'inserire nel documento XML un riferimento allo schema da usare. Ad esempio: <articolo xmlns:xsi=" instance" xsi:noNamespaceSchemaLocation="articolo.xsd" titolo="Guida ad XML" > Oltre all’attributo titolo sono stati aggiunti due attributi predefiniti. l'attributo xmlns:xsi indica un URL che specifica la modalità con cui si indicherà il riferimento allo schema XML. l'attributo xsi:noNamespaceSchemaLocation indica il nome e percorso del file contenente lo schema XML di riferimento.

143 Integrazioni di grammatiche e namespaces
Una delle caratteristiche auspicabili nella creazione di un nuovo linguaggio è la possibilità di integrare elementi derivanti da grammatiche diverse. Questa caratteristica consente di riutilizzare parti di grammatiche già definite evitando di dover rifare parte di lavoro già fatto in altri ambiti. In questo modo, ad esempio, sarebbe possibile integrare un linguaggio per la descrizione di articoli tecnici con un linguaggio pre-esistente per la descrizione di bibliografie, ottenendo un nuovo linguaggio composto. La composizione di linguaggi pone almeno due tipi di problemi: un documento che utilizza due grammatiche presenta il problema della validazione: a quale schema si deve fare riferimento per validare un documento XML "ibrido"? due linguaggi potrebbero avere tag ed attributi con lo stesso nome, anche se utilizzabili in contesti diversi: come fare a risolvere questo tipo di ambiguità?

144 Integrazioni di grammatiche e namespaces
La soluzione a questi problemi deriva dai namespace. Un namespace è un insieme di nomi di elementi e nomi di attributi identificati univocamente da un identificatore. L'identificatore univoco individua l'insieme dei nomi distinguendoli da eventuali omonimie in altri namespace. esempio: se nell'ambito di una grammatica per descrivere dei dati anagrafici è stato definito un elemento indirizzo, questo nome potrebbe essere confuso con l'elemento indirizzo definito nell'ambito di una grammatica che descrive messaggi di posta elettronica. l'identificatore del relativo namespace consente di distinguere i due elementi omonimi.

145 Integrazioni di grammatiche e namespaces
Concetto non nuovo nell'informatica: quando definiamo i nomi dei campi in una tabella di un database abbiamo definito un namespace. non possiamo avere campi con lo stesso nome all'interno di una tabella, ma possiamo avere gli stessi nomi in tabelle diverse. possiamo risolvere l'ambiguità tra due campi omonimi facendoli precedere dal nome della tabella (il namespace). Un XML schema definisce implicitamente un namespace degli elementi e degli attributi che possono essere usati in un documento XML Se in un documento XML si utilizzano elementi definiti in schemi diversi abbiamo bisogno di un meccanismo che permetta di identificare ciascun namespace e il relativo XML Schema che lo definisce.

146 Sintassi dei namespace
In un documento XML si fa riferimento ad un namespace utilizzando un attributo speciale (xmlns) associato al root element, come nel seguente esempio: <articolo xmlns=" questo indica che l'elemento articolo ed i suoi sottoelementi utilizzano i nomi definiti nel namespace identificato dall'identificatore L'identificatore di un namespace può essere rappresentato da una qualsiasi stringa, purché sia univoca. Proprio per garantirne l'univocità, è prassi ormai consolidata utilizzare un URI (Uniform Resource Identifier) come identificatore. non è necessario che l'indirizzo specificato come identificatore di namespace corrisponda ad un file pubblicato sul Web.

147 Sintassi dei namespace
Per mettere in relazione un namespace con il relativo XML Schema occorre dichiararlo nel root element come nel seguente esempio: <articolo xmlns:xsi=" instance" xmlns=" xmlns=" xsi:schemaLocation=" articolo.xsd" xsi:schemaLocation=" bibliografia.xsd" > l'attributo xmlns:xsi specifica la modalità con cui viene indicato il riferimento allo schema. l'attributo xsi:schemaLocation indica il namespace ed il file in cui è definito il relativo XML Schema separati da uno spazio.

148 Sintassi dei namespace
È possibile combinare più namespace facendo in modo che ciascun elemento utilizzato faccia riferimento al proprio namespace. Occorre tener presente che quando si fa riferimento ad un namespace, questo riferimento vale per l'elemento corrente e per tutti gli elementi contenuti, a meno che non venga specificato un diverso namespace.

149 Sintassi dei namespace
Il seguente utilizza elementi di due diversi namespace: uno relativo alla grammatica della struttura di un articolo e l'altro relativo alla grammatica di bibliografie: <articolo xmlns=" titolo="Guida ad XML"> <paragrafo titolo="Introduzione"> <testo> bla bla bla </testo> </paragrafo> <paragrafo titolo="Bibliografia"> <bibliografia xmlns=" <autore> Tizio </autore> <titolo> Opera citata </titolo> <anno> 1999 </anno> </bibliografia> </articolo>

150 Sintassi dei namespace
Riportare il riferimento ad un namespace per ogni elemento è di solito scomodo e rende di difficile lettura il documento XML. È possibile creare delle abbreviazioni per fare riferimento ai namespace. Queste abbreviazioni sono costituite da caratteri alfanumerici seguiti da due punti (:) dichiarati nel root element ed utilizzati come prefissi dei nomi degli elementi.

151 Sintassi dei namespace
Il seguente esempio riporta il codice XML precedente facendo uso di questi prefissi: <art:articolo titolo="Guida ad XML" xmlns:art=" xmlns:bibl=" > <art:paragrafo titolo="Introduzione"> <art:testo> bla bla bla </art:testo> </art:paragrafo> <art:paragrafo titolo="Bibliografia"> <bibl:bibliografia> <bibl:autore> Tizio </bibl:autore> <bibl:titolo> Opera citata </bibl:titolo> <bibl:anno> 1999 </bibl:anno> </bibl:bibliografia> </art:articolo> Le dichiarazioni xmlns:art xmlns:bibl assegnano i prefissi art: bibl: ai relativi namespace e questi prefissi vengono utilizzati per ciascun elemento del documento XML.

152 Parte V Modelli di presentazione dei documenti XML
Un documento XML non può essere visualizzato da un browser se non in forma testuale Bisogna aggiungere al documento altre informazioni, medianti appositi linguaggi come XSL, CSS …per la formattazione e visualizzazione

153 Presentazione di XML con CSS
A differenza di HTML, che è un linguaggio specifico di strutturazione e presentazione di documenti, XML è più generale e non ha una semantica di presentazione . Non è previsto alcun meccanismo predefinito per visualizzare i vari elementi di un documento. ad esempio, un documento XML visualizzato in un browser appare generalmente così com'è, al massimo con una indentazione e una colorazione dei tag impostata dal browser. I documenti XML non contengono informazioni su come presentare il contenuto. Il foglio di stile XML codifica la STRUTTURA del documento e delega ad altri linguaggi il compito di definire quale sarà invece il layout, cioè l’aspetto, la formattazione del documento, come cioè il testo codificato apparirà sullo schermo in fase di visualizzazione. Il foglio di stile contiene dunque le istruzione di formattazione: ogni porzione di testo che sta tra due marcatori assumerà l’aspetto definito per quel marcatore nel foglio di stile XML per la formattazione usa i CSS (Cascading Style Sheet). Ma è anche nato un nuovo linguaggio ad hoc per l’XML che si chiama XSL (eXtensible Mark up Language). Si basa sulle regole di formattazione dell’HTML e su quelle dei CSS. Prevede l’assegnazione di caratteristiche fisiche per ciascuno dei marcatori utilizzati nel documento XML e quindi definisce come ogni porzione di testo apparirà in fase di visualizzazione.

154 XML codifica la STRUTTURA del documento e delega ad altri linguaggi il compito di definire quale sarà invece il layout, cioè l’aspetto, la formattazione del documento, come cioè il testo codificato apparirà sullo schermo in fase di visualizzazione. Il foglio di stile contiene dunque le istruzione di formattazione: ogni porzione di testo che sta tra due marcatori assumerà l’aspetto definito per quel marcatore nel foglio di stile XML per la formattazione usa i CSS (Cascading Style Sheet). Ma è anche nato un nuovo linguaggio ad hoc per l’XML che si chiama XSL (eXtensible Mark up Language). Si basa sulle regole di formattazione dell’HTML e su quelle dei CSS. Prevede l’assegnazione di caratteristiche fisiche per ciascuno dei marcatori utilizzati nel documento XML e quindi definisce come ogni porzione di testo apparirà in fase di visualizzazione.

155 Fogli di stile Un foglio di stile è un documento separato che contiene regole di formattazione e visualizzazione per un documento XML o HTML. Quale è il vantaggio di separare lo stile dai contenuti? Un foglio di stile può essere utilizzato per controllare molti documenti contemporaneamente e quindi permette di applicare modifiche di formattazione in modo veloce ed accurato intervenendo soltanto nel documento che contiene le regole di visualizzazione. In un foglio di stile sono specificate tutte le regole di formattazione che verranno applicate ai documenti di un intero sito Web. Nella gestione di un sito Web complesso, ad esempio, è possibile personalizzare i punti degli elenchi, o impostare diverse dimensioni di carattere semplicemente modificando il foglio di stile invece che tutte le pagine del sito.

156 Fogli di stile Esistono due tipi di fogli di stile:
i fogli di stile CSS (Cascading Style Sheets); i fogli di stile XSL (eXtensible Stylesheet Language) 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 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.

157 Presentazione di XML con CSS
Importante differenza tra l'utilizzo dei CSS per formattare documenti HTML e il loro uso per i documenti XML. In HTML la maggior parte dei tag ha una formattazione predefinita e pertanto un foglio di stile CSS consente di ridefinire tali impostazioni. In XML i tag non hanno alcun significato di formattazione, pertanto è necessario specificare tutto.

158 Presentazione di XML con CSS
E’ possibile utilizzare i CSS in modo analogo a come si utilizzano con HTML. Nel documento XML bisogna indicare (catalog_with_css.xml): <?xml version="1.0"?> <?xml-stylesheet type="text/css” href="catalog.css"?> Per ciascun elemento del documento XML che vogliamo formattare occorre definire una regola secondo lo schema: selettore { proprietà: valore; proprietà: valore; ... } il selettore specifica a quale elemento la regola deve essere applicata, mentre la parte racchiusa tra parentesi graffe elenca le caratteristiche da impostare e il relativo valore. La sintassi dei fogli di stile CSS è costituita da tre parti: un selettore (tag), una proprietà e un valore: selettore {proprietà: valore} Il selettore è generalmente il tag su cui si vuole intervenire, la proprietà è l'attributo da cambiare, e ciascuna proprietà può assumere un determinato valore. Ciascuna coppia "proprietà : valore" è separata dalla successiva dal carattere punto e virgola (;) ed il tutto è racchiuso fra due parentesi graffe ({}). Ad esempio, per un documento HTML possiamo scrivere: p {text-align: center; color: black; font-family: arial} Se un valore è costituito da più di una parola, deve essere racchiuso fra doppi apici: p {font-family: "sans serif"}

159 Presentazione di XML con CSS
Per strutturare visivamente il documento dobbiamo indicare la modalità di visualizzazione di ciascun elemento tramite la proprietà display di CSS. ad esempio, per formattare l'elemento paragrafo di un articolo possiamo definire una regola come la seguente: paragrafo {display: block; font-size: 12pt; text-align: left} Generalmente un foglio di stile CSS da applicare ad un documento XML viene salvato in un file di testo con estensione .css (l'estensione usata è irrilevante). nel documento XML possiamo quindi inserire un riferimento ad esso mediante un’apposita direttiva di elaborazione, come nel seguente esempio: <?xml- stylesheet type="text/css" href="stile.css" ?> questa dichiarazione fa in modo che un browser abilitato applichi le impostazioni del foglio di stile CSS specificato al documento XML.

160 Presentazione di XML con CSS
Raggruppamento I selettori possono essere raggruppati fra di loro, separandoli con una virgola. Ad esempio, sempre per un documento HTML, possiamo scrivere: h1, h2, h3, h4, h5, h6 {color: green} per avere dello stesso colore i tag di struttura da h1 a h6. L'attributo classe (class) Per mezzo dell'attributo class si possono definire diversi stili per lo stesso elemento. Supponiamo di volere, per un documento HTML, due tipi diversi di paragrafo: uno con allineamento a destra e l'altro con allineamento centrato. Qui di seguito sono indicate le linee per la definizione del foglio di stile: p.right {text-align: right} p.center {text-align: center} mentre qui sotto viene ilustrato come usare l'attributo class nel documento: <p class="right">Questo è un paragrafo. Il testo in questo paragrafo sarà allineato a destra.</p> <p class="center">Questo è un paragrafo. Il testo in questo paragrafo sarà centrato.</p>

161 Presentazione di XML con CSS
L'attributo id Con l'attributo id si può definire uno stile unico da usare con più elementi. Di seguito viene indicata la riga per la definizione del foglio di stile: #right {text-align: right} Qui sotto si mostra come si deve usare l'attributo id nel documento: <p id="right">Questo è un paragrafo. Il testo in questo paragrafo sarà allineato a destra.</p> <h3 id="right">Questo è un titolo; anche questo titolo sarà allineato a destra.</h3> L'attributo id deve avere un unico valore nel documento.

162 Presentazione di XML con CSS
I fogli di stile CSS sono pensati principalmente per il Web e mancano pertanto di alcune caratteristiche che possono risultare utili in ambiti diversi. ad esempio, per la presentazione su supporti cartacei occorrerebbero maggiori funzionalità per l'impaginazione. Tra le principali limitazioni, non è prevista la possibilità di estrarre il valore degli attributi degli elementi in modo da poterli visualizzare. Per risolvere questi problemi il W3C ha definito un insieme di specifiche volte a gestire in maniera altamente flessibile la presentazione e la trasformazio ne di documenti XML: l'eXtensible Stylesheet Language (XSL).

163 XSL: eXtensible Stylesheet Language
L'eXtensible Stylesheet Language (XSL) è un insieme di tre linguaggi che forniscono gli strumenti per l'elaborazione e la presentazione di documenti XML in maniera molto flessibile. La definizione di questa tecnologia si basa sull'osservazione del processo di presentazione di dati di qualsiasi natura. Possiamo individuare i seguenti meccanismi di base: un meccanismo per l'individuazione dei dati da presentare un meccanismo per il controllo dell'elaborazione dei dati e di come la presentazione deve essere effettuata un meccanismo per la definizione della formattazione da applicare ai dati per la presentazione vera e propria XSL (Extended Stylesheet Language) è una proposta che permette di attribuire significati “ben noti” (come caratteri, font, ecc.) agli elementi di un documento XML.

164 XSL: eXtensible Stylesheet Language
A ciascuno di questi tre meccanismi, XSL associa uno specifico linguaggio: XPath consente di individuare gli elementi e gli attributi di un documento XML sui quali verranno applicate le operazioni necessarie per la presentazione dei dati XSLT (XSL transformation) consente di controllare le operazioni che rendono i dati presentabili; linguaggio per descrivere come trasformare e impaginare i documenti XML in altri documenti XML, HTML o TXT XSL-FO (XSL Formatting Objects) definisce un insieme di tag di formattazione; linguaggio per trasformare e impaginare i documenti XML in PDF, PostScript, SVG Es. Se i dati di fatturazione sono in XML, posso ottenere la fattura in PDF con una trasformazione XSL-FO I fogli di stile XSL offrono lo stesso livello di formattazione e di flessibilità dei fogli di stile CSS, ma utilizzano metodi diversi.

165 XSL: eXtensible Stylesheet Language
Questa suddivisione dei compiti nel processo di presentazione è il punto di forza di XSL e ne garantisce la flessibilità. questi tre linguaggi non sono strettamente dipendenti l'uno dall'altro. Se, ad esempio, in una particolare applicazione ci rendiamo conto che XPath non soddisfa le nostre esigenze di ricerca di elementi in un documento XML, potremmo utilizzare linguaggio analogo (XQL, per citarne uno) ma senza modificare la presentazione dei caratteri. Oppure potremmo decidere di non utilizzare affatto XSL-FO per formattare i dati di un documento XML e produrre direttamente codice HTML, o meglio XHTML, cioè la versione di HTML basata su XML.

166 XSL: eXtensible Stylesheet Language
Poiché un foglio di stile XSL è a sua volta un documento XML, deve iniziare con la dichiarazione <?xml version="1.0"?>. Inoltre conterrà in sequenza le seguenti due righe: <xsl:stylesheet xmlns:xsl=" <xsl:template match="/"> La prima definisce l'inizio del foglio di stile, mentre la seconda definisce l'inizio di un modello (template), che individua la parte di documento XML a cui applicare le regole di trasformazione. Tutti i tag che fanno parte di un documento XSL iniziano con il suffisso "xsl:" e sono detti direttive.

167 XSL: eXtensible Stylesheet Language
La presentazione dei dati racchiusi in un documento XML è basata su due elementi: un documento che descrive come i dati devono essere elaborati per la presentazione, chiamato foglio di stile XSLT un componente software, chiamato processore XSLT, in grado di prendere in input un documento XML e un foglio di stile XSLT e di produrre in output i dati secondo il formato di presentazione prescelto (XSL-FO, XHTML, testo, ecc.) XSLT usa le espressioni di Xpath per localizzare i nodi del documento XML che devono subire il trattamento La definizione di un foglio di stile XSLT è quindi il punto cruciale della presentazione dei dati XML. le regole di trasformazione presenti in un foglio XSLT consentono di selezionare gli elementi di un documento XML e di gestirne la modalità di presentazione. XSL è un linguaggio dichiarativo XSL permette di elaborare i dati contenuti nel documento XML a cui è applicato ed ha, come caratteristica principale, quella di poter programmare in modo dichiarativo e non procedurale. Questo significa che non è necessario elaborare algoritmi per poter navigare tra i dati, trovare quelli desiderati e generare un documento opportuno in uscita. Si procede invece i modo dichiarativo, ovvero decidendo quali elementi si vuole estrarre, specificando per ognuno di essi un modo di visualizzazione, senza preoccuparsi di come estrarre i dati. Sarà il parser , un programma incluso nei web browser, in grado di leggere un documento XML e navigare attraverso il suo albero , ad occuparsi di estrarre i dati specificati e applicare gli stili indicati nel foglio XSL. Quindi in XSL occorre specificare gli elementi a cui applicare un determinato stile di visualizzazione, e questa operazione avviene attraverso la specifica di un modello (template) che permette al parser d'individuare gli elementi richiesti e di applicarvi le trasformazioni corrispondenti.

168

169

170 XPath: espressioni e funzioni
Individuare gli elementi di un documento XML rappresenta il primo passo di un'elaborazione per la presentazione dei dati. Nei CSS questo ruolo è svolto dal selettore, cioè l'elemento sintattico di una regola CSS che individua gli elementi da formattare. In XSL questo passo viene descritto tramite il linguaggio XPath. a differenza dei selettori CSS, XPath è molto più potente e flessibile. Questo linguaggio consente di creare espressioni dichiarative, chiamate espressioni XPath o pattern, che individuano i vari nodi dell'albero di rappresentazione di un documento XML.

171 XPath: espressioni e funzioni
<?xml version="1.0" ?> <articolo titolo=""> <paragrafo titolo="Titolo del primo paragrafo"> <testo> Blocco di testo del primo paragrafo </testo> <immagine file="immagine1.jpg"> </immagine> </paragrafo> <paragrafo titolo="Titolo del secondo paragrafo"> Blocco di testo del secondo paragrafo <codice> Esempio di codice </codice> Altro blocco di testo </articolo>

172 XPath: espressioni e funzioni
Per individuare l'elemento <testo> all'interno del nostro esempio di documento XML dobbiamo specificare un percorso di questo tipo: /articolo/paragrafo/testo Se siamo interessati all'attributo titolo dell'elemento <paragrafo> possiamo specificarlo nel modo seguente: Queste espressioni, però, individuano il primo elemento che corrisponde al percorso. Per selezionare uno specifico elemento, ad esempio il paragrafo con titolo Titolo del secondo paragrafo, possiamo farlo con l'espressione seguente: del secondo paragrafo”] In pratica, all'interno delle parentesi quadre specifichiamo la condizione che deve essere soddisfatta dall'elemento.

173 XPath: espressioni e funzioni
Per selezionare un elemento specifico è possibile utilizzare anche alcune funzioni predefinite, come position(), che specifica la posizione di un elemento, e last(), che specifica l'ultima posizione di una sequenza di elementi. ad esempio, le due espressioni seguenti specificano rispettivamente il secondo paragrafo e l'ultimo paragrafo dell'articolo: /articolo/paragrafo[position()=2] /articolo/paragrafo[position()=last()]

174 Fogli di stile XSLT Nell'ambito dello standard XSL il compito di trasformare un documento XML in un altro documento è affidato al linguaggio XSLT. Nella terminologia di XSLT, il documento da trasformare è chiamato documento origine (source document), mentre il documento generato dal processo di trasformazione è chiamato documento risultante (result document). il documento risultante di una trasformazione XSLT può essere un documento XML o un documento di altro tipo. ad esempio, a partire da un documento XML possiamo generare un documento XHTML oppure un documento WML o anche RTF o altri formati testuali. Innanzitutto XSLT è un linguaggio di trasformazione: dato un documento XML, è possibile generare un altro documento XML derivato applicando delle regole di trasformazione specificate nello stylesheet. Se poi nel documento XML di destinazione abbiamo scritto elementi i cui nomi ed attributi sono noti ad un browser (ad esempio, HTML o XSL-FO), allora il documento può essere visualizzato dal browser. XSLT, tuttavia, è molto più di un linguaggio di visualizzazione di documenti XML: è un linguaggio per trasformare un documento XML in un altro documento XML secondo regole predefinite.

175 Fogli di stile XSLT La trasformazione avviene in base alle informazioni contenute in un particolare tipo di documento e interpretate da un processore XSLT. Questo documento di trasformazione, chiamato foglio di stile XSLT, non è altro che un documento XML che fa uso di tag appartenenti alla grammatica di XSLT in grado di controllare il processo di trasformazione. In generale, un foglio di stile XSLT ha la seguente struttura : <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl=" ... template di trasformazione ... </xsl:stylesheet> Un documento XSL è un documento XML che utilizza un set di elementi speciali in cui gli elementi hanno senso predefinito. Un documento XSL è composto di template di costruzione, che permettono di riscrivere certi elementi del documento XML d’origine in altri elementi del documento destinazione.

176 Fogli di stile XSLT All'interno del root element <xsl:stylesheet> vengono definite le istruzioni di trasformazione da applicare al documento XML origine. XSLT consente di trasformare ciascun elemento del documento XML di origine in un altro elemento del formato del documento risultante. È possibile anche aggiungere al documento risultante elementi completamente nuovi o non prendere in considerazione determinati elementi del documento origine, riordinare gli elementi, fare elaborazioni in base al risultato di determinate condizioni, ecc. Il processo di trasformazione controllato da XSLT si basa sull'uso del linguaggio XPath per individuare gli elementi del documento origine, sui quali viene applicato un template (o modello) di trasformazione.

177 Fogli di stile XSLT Da un punto di vista sintattico, un template è un elemento del linguaggio XSLT che ha la seguente forma di base: <xsl:template match="espressione XPath"> ... Definizione dell’output... </xsl:template> Un template XSLT individua un elemento o un insieme di elementi di un documento XML sfruttando un’espressione XPath e vi applica una serie di elaborazioni per ottenere un output. normalmente le stringhe prodotte dal XSL sono istruzioni di HTML in modo da costituire un documento HTML interpretabile da un browser Un foglio di stile XSLT non è altro che un insieme di template da applicare ai vari elementi di un documento XML. comprendere come avviene l'applicazione dei template di un foglio di stile XSLT da parte del relativo processore è un elemento essenziale per realizzare fogli di stile corretti. Template: dove si specificano le regole di stylesheet. Serve per identificare i nodi specifici di XML usando l’attributo match di Xpath E’ un elemento di nome <xsl:template> L’attributo match indica il punto del documento XML dove applicare le istruzioni di stylesheet

178 Esempio Il template trasforma dinamicamente il documento XML in un documento HTML <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl=" <xsl:template match="/"> <HTML> <HEAD> <TITLE> ... </TITLE> </HEAD> <BODY> ... </xsl:template> </xsl:stylesheet>

179 Fogli di stile XSLT Il processore XSLT va alla ricerca dei template da applicare partendo dal root element e seguendo l'albero di rappresentazione logica del documento stesso. In linea di principio, con l'applicazione del relativo template al root element termina il compito del processore XSLT. Se il foglio di stile contiene diversi template che devono essere applicati ai vari elementi del documento XML di partenza è necessario specificarlo esplicitamente. questo può essere fatto specificando all'interno del template corrente l'elemento <xsl:applytemplates/>. questo tag indica al parser di continuare a scandire il documento XSL alla ricerca di altri modelli da applicare i da applicare ai nodi sottostanti, o

180 Fogli di stile XSLT Non è importante l'ordine con cui sono stati specificati i template all'interno del foglio di stile; sarà il processore ad individuarli in base all'espressione XPath associata. ad esempio, un possibile template del root element che avvia la trasformazione di un articolo può essere analogo al seguente: <xsl:template match="/"> <xsl:value-of <xsl:apply-templates/> </xsl:template> Questo template estrae il titolo dell'articolo ed indica al processore XSLT di cercare altri template da applicare al documento XML. La prima cosa che il processore XSLT cerca e’ un template di massimo livello da applicare alla root del documento XML. E’ riconosciuto dal carattere “/” nel valore di match. Il carattere indica la root del documento XML

181 Fogli di stile XSLT <xsl:value-of>
direttiva XSL più importante per l'estrazione dei dati da un file XML una volta che tale direttiva è applicata ad un certo nodo, se questo contiene altri nodi, il parser li esplicita comunque restituendone il contenuto, separandolo con spazi. Questa sintassi viene usata per selezionare gli elementi del documento XML da sottoporre alla trasformazione XSL. Ad esempio: <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl=" <xsl:template match="/"> <HTML> <HEAD> <TITLE><xsl:value-of select="Legge/TitoloLegge"/></TITLE> </HEAD> <BODY> ... </xsl:template> </xsl:stylesheet>

182 Fogli di stile XSLT <xsl:for-each select="condizione">
Questa direttiva viene usata per selezionare ogni elemento del documento XML che verifica la condizione specificata dalla select. <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl=" <xsl:template match="/"> <HTML> <HEAD> <TITLE><xsl:value-of select="Legge/TitoloLegge"/></TITLE> </HEAD> <BODY> ... <xsl:for-each select="Legge/Articolato/Articolo"> <p align="center"><B><font color="#008080">Art. <xsl:value-of select="Num"/><BR/> <xsl:value-of select="Rubrica"/></font></B></p> </xsl:for-each> </xsl:template> </xsl:stylesheet>

183 Fogli di stile XSLT Elaborazione degli attributi
I fogli di stile XSL permettono anche di gestire, in maniera potente e flessibile, gli attributi degli elementi XML, facendo precedere il nome dell'attributo dal simbolo <xsl:template match="/"> <!--Apply template to everything starting from the root node--> <HTML> <HEAD> <TITLE>Legge del <xsl:value-of select="Legge/Intestazione/Data"/></TITLE> </HEAD> <BODY>

184

185 Esempio esempi\cdcatalog_xsl.xml esempi\cdcatalog_xsl.xsl
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl=" <xsl:template match="/"> <html> <body> <xsl:value-of select="CATALOG/CD/TITLE"/> ************* <xsl:value-of select="CATALOG/CD/ARTIST"/> </body> </html> </xsl:template> </xsl:stylesheet>

186 Esempio Per stampare il contenuto di un nodo del documento XML, si usano normalmente il tag <xsl:value-of, insieme all’attributo select. <xsl:value-of: produce il contenuto di un nodo, individuato dall’attributo select select=“espressione”: identifica l’insieme di nodi del documento XML sorgente il cui contenuto deve essere inserito in questa posizione. Es.: <xsl:value-of select="CATALOG/CD/TITLE"/> Se piu’ nodi soddisfano l’espressione, viene considerato solo il primo nodo, a meno che non si usi <xsl:for-each L’elemento <xsl:value-of e’ EMPTY, cioe’ non ha contenuto, quindi si puo’ usare la chiusura abbreviata: <xsl:value-of select="TITLE"/>

187

188 Applicazioni XML viene applicato in numerosi campi e per vari scopi: archiviazione elettronica e gestione dei contenuti documentali, pubblicazione su web, scambio di documenti elettronici, formati interni per strumenti software, nel commercio elettronico, nell.apprendimento e in molti altri campi. tra i settori meno ovvi ci sono quelli relativi alla chimica, alla biologia, alla teologia, al turismo, alla giurisprudenza e alla salute pubblica. XML è uno standard nato nel mondo Web ma che è utilizzato sia dentro che fuori il Web stesso. è un modo di rappresentazione dei dati che devono circolare su Internet ed è non legato necessariamente, quindi, al loro modo di presentazione attraverso un browser.

189 XML e giornalismo Il Giornalismo è un classico esempio di dominio applicativo in cui l’XML sta producendo dei cambiamenti nel modo di lavorare. Negli anni settanta i progressi nel campo dei computer e delle telecomunicazioni per lo scambio e l’archiviazione dei documenti ha portato all’automazione dei processi di lavoro in molti campi, incluso il giornalismo. In quegli anni erano stati sviluppati dei formati di descrizione degli articoli che permettevano lo scambio e l’archiviazione elettronica dei documenti Un articolo codificato in uno di questi formati contiene il testo dell’articolo (sono supportati solo articoli in formato testo), i campi, le categorie e gli indici aggiuntivi come per esempio l’identificativo numerico, la data, la sezione, la priorità.

190 XML e giornalismo L’evoluzione della tecnologia (Internet, multimedialità etc.) e l’aumentata attività giornalistica sta rendendo questi formati sempre più antiquati. Di seguito un elenco delle carenze segnalate per questi formati: Non supportano la descrizione di contenuti multimediali Non hanno metadati per agevolare la classificazione e la ricerca degli articoli ( ricerche per persone, luoghi etc) Le categorie di indici disponibili mancano di dettaglio Non supportano l’intero ciclo di vita di un articolo, per esempio non e’ possibile identificare l’autore di un articolo, includere quale versione e’ attualmente disponibile chi l’ha ricevuta. Non permettono collegamenti ad altri articoli correlati Non permettono la composizione degli articoli (per esempio associare una fotografia al testo dell’articolo). Per rispondere a queste necessità le organizzazioni per gli standard giornalistici hanno deciso di sviluppare nuovi standard basati su applicazioni XML.

191 Un esempio: XMLNews (1) XMLNews definisce il contenuto testuale e le meta-informazioni di notizie da agenzia stampa. E’ una parte dello standard denominato News Industry Text Format (NITF), sviluppato dal International Press Telecommunications Council (IPTC) e dalla Newspaper Association of America. NITF è stato il primo standard XML sviluppato dall’IPTC negli anni novanta. NITF è una applicazione XML per la descrizione di articoli in formato testuale, sebbene possa contenere oggetti multimediali. Questo linguaggio mira a superare alcune delle caremze che sono state identificate negli standard definiti in precedenza in quanto incorpora molti elementi di metadati XMLNews è composto di due parti: XMLNews-Story è un DTD XML per descrivere in maniera variamente arricchita il testo delle notizie XMLNews-Meta definisce il formato delle meta-informazioni per notizie d’agenzia. E’ conforme al Resource Description Framework (RDF), e non si riferisce solo alle notizie testuali, ma anche a immagini, video-clip, ecc. Le caratteristiche principali sono le seguenti: - Introduce il concetto di Topicset che permette di definire un insieme di parole chiave che possono essere usate per descrivere le sezioni di un articolo, per esempio città, persone etc. - Supporta tutti i tipi di media e formati digitali. Per ottenere questo formato e mezzo sono definiti attraverso Topicsets; questi possono essere estesi per supportare i formati sviluppati in futuro. Il contenuto multimediale stesso può essere incluso nel documento o collegato con un “Uniform Resource Locator” (URL) - Permette l’aggiunta di un metadato a un articolo multimediale, per esempio altri dettagli di persone coinvolte o dettagli del luogo a cui fa riferimento la notizia. Poiché non fissa il linguaggio in cui devono essere scritti i contenuti permette che si usino altri linguaggi per descrivere i contenuti per esempio NITF e’ raccomandato per i contenuti testuali. - Permette di controllare la versione di un articolo. - Permette di identificare l’autore, il modificatore e il destinatario di un articolo. - Permette di definire le relazioni tra articoli - Permette di definire insiemi di articoli - Permette la definizione di articoli che sono essi stessi composti da altri articoli (per esempio testo e immagine). - Supporta versioni alternative dello stesso articolo (per esempio versioni in lingue diverse).

192 Un esempio: XMLNews (2) <?xml version="1.0"?> <nitf>
XMLNews-Story: il testo di una notizia di agenzia è diviso in tre parti: l’head contiene informazioni di organizzazione, mentre il body è a sua volta diviso in intestazione e contenuto. <?xml version="1.0"?> <nitf> <head> <title>Colombia Earthquake</title> </head> <body> <body.head> <hedline><hl1>143 Dead in Earthquake</hl1></hedline> <byline><bytag>By Jared Kotler, AP </bytag></byline> <dateline> <location>Bogota, Colombia</location> <story.date>January :28 ET</story.date> </dateline> </body.head> <body.content> … </body.content> </body> </nitf>

193 Un esempio: XMLNews (3) <?xml version="1.0"?>
XMLNews-Story: Il body ha un markup minimale di struttura del testo: <?xml version="1.0"?> <nitf> <head> … </head> <body> <body.head> … </body.head> <body.content> <p>Un terremoto ha colpito la Colombia occidentale lunedì, uccidendo almeno 143 persone e ferendone più di 900 mentre scoperchiava edifici nella zona delle coltivazioni di caffè più ricca e fertile della nazione. Gli addetti alla difesa civile sono immediatamente intervenuti.</p> <p>Il terremoto è avvenuto nel primo pomeriggio, con una magnitudine del 6 grado, secondo il Geological Survey Americano, in Golden, Colorado. L’epicentro è stato identificato nella valle dello stato del Cauca, a 210 chilometri a ovest della capitale, Bogotà.</p> </body.content> </body> </nitf>

194 Un esempio: XMLNews (4) XMLNews-Story: Però è possibile in qualunque momento aggiungere informazioni inline: <p>Un <event>terremoto</event> ha colpito la <location> <country>Colombia</country> occidentale</location> <chron norm=“ ”>Lunedì</chron>, uccidendo almeno 143 persone e ferendone più di 900 mentre scoperchiava edifici nella zona delle coltivazioni di caffè più ricca e fertile della nazione. Gli <function>addetti alla difesa civile</function> sono immediatamente intervenuti.</p> Questo permette di arricchire la storia con altre informazioni in maniera semi-automatica: nella ricerca: è possibile cercare tutto quello che è successo in Colombia, o cosa è successo in una certa data. nella presentazione: un provider potrebbe fornire semi-automaticamente dei link o delle cartine della Colombia. nell’organizzazione delle news: è possibile cercare tutti i terremoti effettivi, e non le notizie che ne usano la parola, magari figurativamente.

195 Un esempio: XMLNews (5) XMLNews-Meta: Assieme ad ogni notizia, vengono scritte delle informazioni sulla notizia, che possono avere una distribuzione separata. XMLNews-Meta permette di gestire insieme informazioni come: Informazioni sul contenuto della notizia (titolo, lingua, formato, ecc.) Informazioni sulle date della notizia: creazione, pubblicazione, scadenza, ecc. Informazioni sulla provenienza ed attendibilità della notizia Informazioni sui possessori dei diritti di distribuzione e copyright Informazioni di classificazione ed organizzazione Link a documenti connessi: versioni precedenti, seguenti, ed altre notizie connesse.

196 Modello di attività giornalistica basato su XML.
Le attività giornalistiche possono essere così suddivise Creazione di un articolo fatta da un cronista (nella maggior parte dei casi per conto di una agenzia di informazione). Selezione degli articoli da pubblicare (effettuata di solito, da una redazione). Impaginatura degli articoli diversa per un giornale cartaceo o per uno elettronico. Attualmente i contenuti delle notizie prodotte in una agenzia sono principalmente in formato testuale, di solito disponibile ai media attraverso dei database. Gli articoli sono creati usando un formato di descrizione delle notizie (per esempio ANPA 1312) che, tra le altre limitazioni, non ammette i contenuti multimediali.

197 Modello di attività giornalistica basato su XML.
Una redazione, dopo aver selezionato quali articoli pubblicare tra quelli resi disponibili dalle agenzie e dalle altre risorse, stabilisce l’impaginazione del giornale sia per la versione cartacea che per quella elettronica. L’agenzia di informazioni diverrà una agenzia di informazioni multimediali in grado di produrre notizie con contenuti in tutti i formati digitali (testo, immagine, audio, video, grafica e animazione computerizzata). Il contenuto giornalistico sarà contrassegnato usando l’applicazione standard dell’XML e archiviato in un database XML che conterrà i contenuti di notizie passate e presenti. I News Media saranno in grado di fare ricerche simultanee sulle basi dati di differenti agenzie, sfruttando il fato che tutti saranno in grado di usare lo stesso formato per le notizie. Il supporto di metadati permetterà ricerche molto più intelligenti ed efficienti.

198 Modello di attività giornalistica basato su XML.
Il giornale sarà creato usando le notizie in formato XML delle altre agenzie o preparate dalla redazione stessa. Usando differenti fogli di stile sarà possibile creare in modo automatico diverse versioni del giornale per le distinte piattaforme: cartacea per la distribuzione tradizionale, HTML per chi accede dal Web, WML per i telefoni cellulari e la televisione digitale. Il giornale potrebbe offrire all’utente finale un database di notizie giornaliere che potrebbero avere una copertura molto più ampia di quella tradizionale. L’utente finale potrebbe registrare le sue preferenze sul server del giornale e accedendo al database delle notizie il server potrebbe scegliere quelle che più si avvicinano alle preferenze dell’utente finale.

199

200 Influenza di XML sul WWW
XHTML sta sostituendo HTML I blog si basano su feed RSS (o ATOM), che sono documenti XML I siti di informazione diffondono le notizie con XML e RSS: Corriere della Sera, Repubblica, CNN

201 XHTML: NextGen HTML <?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns=" > <head> <title> Title of text XHTML Document </title> </head> <body> <div class="myDiv"> <h1> Heading of Page </h1> <p> here is a paragraph of text. I will include inside this paragraph a bunch of wonky text so that it looks fancy. </p> <p>Here is another paragraph with <em>inline emphasized</em> text, and <b> absolutely no</b> sense of humor. </p> <p>And another paragraph, this one with an <img src="image.gif" alt="waste of time" /> image, and a <br /> line break. </p> </div> </body></html> Come HTML ma basato sulle regole XML. Consente l’integrazione di differenti tipi di dati in un unico documento

202 XHTML and other Data <?xml version="1.0" encoding="iso-8859-1"?>
<html xmlns=" > <head> <title> Title of XHTML Document </title> </head><body> <div class="myDiv"> <h1> Heading of Page </h1> <mathml xmlns=“ … MathML markup … </mathml> <p> more html stuff goes here </p> <smil xmlns=“ … SMIL markup … </smil> </div> </body></html>

203 RSS RSS (acronimo di RDF Site Summary ed anche di Really Simple Syndication) è uno dei più popolari formati per la distribuzione di contenuti Web Linguaggio basato su XML, nato tra il 1997 e il 1999 da XML ha ereditato la semplicità, l‘ estensibilità e la flessibilità. Permette la visualizzazione su portali e siti web di headline e link relativi a notizie pubblicate su altri siti I progenitori erano le newsletter Insieme di specifiche che devono essere pubblicate su una pagina web e che consentono di incorporare nel proprio sito i link alle news di un altro utente

204 Come funzionano? Un documento XML è pubblicato e aggiornato continuamente Ci si “iscrive” al feed mediante un reader indicando l’URL del documento XML I reader sono in grado di cercare e segnalare automaticamente nuovi aggiornamenti quando disponibili per i feed sottoscritti programmi client via browser

205 Syndication I siti possono utilizzare il documento XML per aggiornare dinamicamente le proprie pagine (syndication) Syndication indica la distribuzione di contenuti internet attraverso appositi canali, di norma rappresentati da feed Il verbo che ne deriva, to Syndicate, indica l'azione di un sito di mettere a disposizione sezioni o interi contenuti attraverso feed

206 Vantaggi Evitano di dover aprire i diversi siti solo testo
Nuova modalità di consumo delle news online, come una prima pagina costruita dall’utente La diffusione dipenderà dall’evoluzione delle interfacce di facilitazione alla navigazione on line

207 RSS e giornalismo Gli RSS sono utilizzati anche dai giornali on line, The New York Times, ABSCnews, La Repubblica, Corriere

208 Podcast e podcasting Un podcast è una registrazione digitale audio o video, scaricabile automaticamente da un apposito programma (un client) messa a disposizione su Internet per chiunque si abboni ad una trasmissione periodica Il Podcasting è un neologismo basato sulla fusione di due parole: iPod e broadcasting Il termine nacque quando l'uso dei feed RSS divenne popolare per lo scambio di registrazioni audio su computer, palmari, lettori di musica digitale e anche telefoni cellulari.

209 Come funziona? Per ricevere un podcast sono necessari:
un qualsiasi supporto connesso ad internet (un PC, ad esempio) un programma client apposito (spesso gratuiti) un abbonamento presso un fornitore di podcast (spesso gratuiti) Un podcast funziona come un abbonamento ad una pubblicazione periodica: il supporto connesso ad internet è la cassetta postale, il client è il postino, e il fornitore di podcast è la casa editrice l'abbonato riceve regolarmente le pubblicazioni, e può ascoltarle o vederle nella modalità e nei tempi che gli sono più congeniali.

210 Come funziona? Il podcasting funziona grazie ad un semplice software (generalmente gratuito), che ad intervalli regolari si collega a internet e controlla quali audio o video sono stati pubblicati dai siti ai quali si è abbonati: se ne trova di nuovi li scarica la notifica della pubblicazione di nuove edizioni avviene tramite un feed RSS scambiato tra il sito del produttore e il programma dell’utente I podcast possono essere ascoltati in ogni momento poiché la copia del file, una volta scaricata automaticamente, rimane sul computer dell’abbonato. a differenza delle radio Web in streaming, i podcast non richiedono necessariamente un collegamento ad internet durante l’ascolto ma solo nella fase di download (i.e., i podcast si possono ascoltare anche off-line magari su un supporto mobile non connesso ad internte)

211 Streaming vs Podcast Nonostante i programmi in streaming (come le radio tradizionali) possono essere registrati dal ricevente, la loro natura transitoria li distingue nettamente dai programmi podcast che invece arrivano già in formato compresso sul computer questa differenza è importante anche dal punto di vista legale Anche il mondo del giornalismo, della politica e della comunicazione sono interessati ai podcast. in italia Radio Rai offre le proprie trasmissioni come podcast, La Repubblica distribuisce via podcasting le trasmissioni di Repubblica Radio, altre radio tipo RadioDJ, Radio105, RDS etc. solo alcune trasmissioni

212 Dizionario Broadcast: indica una trasmissione radio tradizionale, ascoltabile ad una determinata ora decisa dall’emittente Streaming: indica una risorsa ascoltabile in qualsiasi momento tramite un collegamento internet al sito dell’emittente non occorre averla scaricata tutta prima di poter ascoltarla ma si può ascoltare mano a mano che viene scaricata Podcasting: indica una risorsa ascoltabile in qualsiasi momento scaricata automaticamente in formato mp3 o altro dal sito dell’emittente a volte occorre averla scaricata tutta prima di poterla ascoltare

213 XQuery Nel Web Consortium esiste un gruppo di lavoro (XML Query Working Group) preposto alla definizione di un linguaggio di interrogazione specifico per i documenti XML. L'obiettivo del gruppo è quello di fornire un linguaggio potente e flessibile per estrarre dati dai documenti XML con prestazioni paragonabili a quelle fornite dai linguaggi progettati per i database . In questo modo le collezioni di file XML saranno accessibili nello stesso modo in cui lo sono attualmente i database. Ad oggi non esiste una raccomandazione del W3C per un linguaggio d'interrogazione, ma esistono diverse proposte, fra le quali si può citare XML Query Language (XQL), estensione di XSL Patterns, lo schema per la costruzione di espressioni atte ad indicare gli elementi di un documento XML. Linguaggio di query concepito per essere applicabile a qualsiasi documento XML simile al linguaggio SQL nei database

214 XQuery Le espressioni XQL assomigliano ai percorsi per individuare file e directory nel disco di un computer. Infatti XQL sfrutta la natura gerarchica della struttura di un documento XML. Per esempio, l'espressione /Legge//Comma indica l'insieme degli elementi Comma discendenti dell'elemento Legge, che si trovano nel documento, mentre l'espressione: = "I"]/Articolo seleziona tutti gli articoli del capo I. Il risultato di una query XQL è un estratto del documento XML contenente le parti selezionate, ossia un documento XML che ha come radice l'elemento <xql:result>.

215

216 XQuery Nella progettazione di XQL si sono perseguiti 3 obiettivi fondamentali: la compattezza: XQL utilizza brevi sequenze di caratteri la semplicità: XQL utilizza pochi elementi sintattici la natura dichiarativa: le espressioni esprimono cosa si vuole ottenere e non "come" ottenerle (concetto analogo a quello espresso per il linguaggio eXtensible Stylesheet Style) Questi presupposti sono positivi, ma comportano anche degli svantaggi: per esempio, la compattezza porta, nel caso di espressioni complesse, a compromettere la facilità dell'interpretazione. Esistono poi due limitazioni non indifferenti: non sono previsti meccanismi di unione fra più query (join), nè di ordinamento o di aggregazione non è prevista l'interrogazione su più documenti contemporaneamente Nonostante ciò, non mancano le implementazioni: XQL è supportato, per esempio dagli XML database server eXcelon di ObjectStore e Tamino di Software AG.

217 XQuery <?xml version="1.0" ?> <magazzino>    <articolo codice="A1">        <descrizione>Righello 25 cm</descrizione>        <quantita>50</quantita>    </articolo>    <articolo codice="A2">        <descrizione>Calcolatrice</descrizione>        <quantita>60</quantita>    </articolo>    <articolo codice="A3">        <descrizione>Quaderno a quadri</descrizione>        <quantita>120</quantita>    </articolo> </magazzino> XQuery: /magazzino/articolo[quantita > 100] Tutti gli articoli con quantità > 100

218 Conclusioni: perché utilizzare XML
XML permette di strutturare i documenti e di associare una sintassi. XML supporta UNICODE, un grande numero di set di caratteri può essere utilizzato. XML può essere usato come formato di scambio per documenti elettronici ed applicazioni. Indipendente da hardware e software Consente di manipolare i dati in modo più semplice ed efficiente. Quando registriamo informazioni vogliamo essere sicuri di poterle riutilizzare in futuro. es. word 1, word 2, word per mac, word per pc, incompatibilità, perdita di informazioni Un documento XML è in formato leggibile dall’uomo. ·Documento strutturati e metainformazioni consentono motori di ricerca più acurati Grazie a XML, le organizzazioni possono integrare diversi dati che si trovano al loro interno scambiare dati e interoperare con altre organizzazioni (e altri dati)

219 Conclusioni: perché utilizzare XML
Sistemi standard di metadati: Resource Description Framework. XML è estensibile, non ha tag predefiniti. ·Consente di creare linguaggi standard ed estendibili, per campi di applicazione (medicina, elettronica, matematica, musica, ...) I collegamenti offrono nuove possibilità. (punti precisi, più destinazioni, database centralizzato -> maggiore maneggevolezza, più semplice controllare corrispondenza collegamenti). Offre una ottima capacità di rappresentare dati complessi (notazioni matematiche, interfacce grafiche) Visualizzare documento su media differenti in modi diversi senza doverlo riscrivere ogni volta. XSL offre meccanismi per rappresentare e manipolare il documento, buona capacità di rappresentare dati complessi (notazioni matematiche, interfacce grafiche); sequenze, cicli e condizioni

220 Approfondimenti XML – esempi e dettagli sul formato “L'azienda è più flessibile con i documenti digitali”

221 Glossario Applicazione XML: un linguaggio XML definito tramite un DTD o uno XML Schema ed usato in un particolare ambiente. CSS: Cascading Style Sheets. Fogli di stile che consentono di definire come presentare documenti HTML e XML. DOM: Document Object Model. Questa è un.interfaccia indipendente tra la piattaforma di sviluppo e il linguaggio di programmazione usato e permette di accedere e modificare il contenuto o la struttura di documenti HTML e XML. DTD: Document Type Definition. Questo è un formato usato per definire la struttura e gli elementi di una particolare applicazione XML. HTML: HyperText Markup Language. E. il linguaggio di marcatura usato per creare documenti da pubblicare sul Web. E. stato standardizzato dal W3C. Markup language: Un linguaggio che consente l.aggiunta di marcatori ad un documento di testo, al fine di fornire un significato semantico o descrivere come presentare il contenuto del documento stesso. Metadato: Un dato usato per descrivere o aggiungere informazione agli altri dati. Metalinguaggio: Nel mondo IT è un linguaggio utilizzato per definire altri linguaggi. Namespace: Consente di individuare una parte che definisce un insieme di elementi e attributi utilizzati in un documento XML.

222 Glossario SGML: Standard Generalized Markup Language. Metalinguaggio per definire linguaggi di marcatura; il precursore dell.XML. WML: Wireless Markup Language. Un linguaggio che è usato correntemente per presentare contenuti ipertestuali su telefonia mobile e dispositivi palmari PDA. W3C: World Wide Web Consortium. E. l.organizzazione responsabile dello sviluppo degli standards legati al Web. XLink: XML Linking Language. Linguaggio per definire links tra documenti XML. XML: Extensible Markup Language . E. un metalinguaggio per definire linguaggi di marcatura, standardizzato dal W3C. XML Schema: Come i DTD, esso consente di definire come è un documento XML, ma con un po. piu. di dettaglio. XPath: XML Path Language. Parte dell.XSL che permette di identificare porzioni di un documento XML (elementi, attributi). XPointer: Un linguaggio che permette di identificare un punto qualsiasi del documento XML.E. un.estensione di XPath ed è usato in combinazione con XLink. XQuery: E. un linguaggio di interrogazione per l.XML, utilizzabile sia per documenti XML singoli sia su database di documenti XML. XSL: eXtensible Stylesheet Language. Linguaggio di fogli di stile per l.XML standardizzato dal W3C. Comprende 3 componenti: XPath, XSLT e XSL-FO. XSLT: XSL Transformations. Parte dell.XSL che permette di definire come trasformare un documento XML in un altro documento XML, HTML, o testo. XSL-FO: XSL Formatting Objects. Parte dell.XSL che consente di presentare un documento XML.

223 Parte V Strumenti per XML
Editor Browser XML Conversion Tools Document Storage Systems

224 Xmetal

225 XMLNotepad Freeware

226 Xeena Freeware e portabile

227 Browsers Questa categoria comprende gli strumenti per la visualizzazione e la navigazione di documenti XML Internet Explorer - Microsoft (Win32, Mac) Mozilla (Win32, Mac, Linux) Xplorer - IBM Alphaworks (IBM)

228 Xplorer http://alphaworks.ibm.com/tech/xplorer
Freeware e portabile. E' solo un visualizzatore

229 Document Storage Systems
Strumenti per la gestione dei documenti XML, in grado di gestirne la memorizzazione e di semplificare le operazioni di ricerca. Database con supporto per XML XML Data Store

230 Oracle 8i http://www.oracle.com Database con supporto per XML
inserimento di documenti XML come dati primitivi (ricerche testuali) importazione dati da XML esportazione dati in XML

231 eXcelon (1) http://www.exceloncorp.com XML Data Store
gestione nativa dei dati XML interrogazione mediante XML query languages (XQL) accesso ai dati attraverso interfacce DOM

232 eXcelon (2)

233 Siti Web interessanti The XML Cover Pages The Whirlwind Guide to XML Tools and Vendors Free XML tools and software W3C XML page


Scaricare ppt "Sistemi per il recupero delle informazioni"

Presentazioni simili


Annunci Google