La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

XML La famiglia di linguaggi XML Fabio Vitali Università di Bologna.

Presentazioni simili


Presentazione sul tema: "XML La famiglia di linguaggi XML Fabio Vitali Università di Bologna."— Transcript della presentazione:

1 XML La famiglia di linguaggi XML Fabio Vitali Università di Bologna

2 XML Fabio Vitali2 «Quando io uso una parola», disse Humpty Dumpty in tono piuttosto sprezzante, «significa quello che io scelgo che significhi - né più, né meno.» Lewis Carroll Attraverso lo specchio

3 XML Fabio Vitali3 Sommario Oggi esaminiamo: u Parte I:Cosè il markup (16 slides) u Parte II:XML: a cosa serve (21 slides) u Parte III:Analisi dei documenti (10 slides) u Parte IV:La sintassi di XML (57 slides) u Parte V:Linguaggi connessi con XML (53 slides): F Namespaces F XPointer e XLink F XSLT F XML Schema u Parte VI:Strumenti e indirizzi per XML (24 slides)

4 XML Parte I Cosè il markup n Definizione di markup n Tipi di markup n Il markup procedurale n Il markup dichiarativo

5 XML Fabio Vitali5 Perché tutto questo chiasso? n 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.). n Di solito, si cerca di trasformare il documento nella forma più opportuna perché venga utilizzato nellapplicazione suddetta. n Spesso per questo si fanno delle scelte che impediscono o ostacolano notevolmente un ulteriore riuso della stessa collezione per una diversa applicazione. n Limpaginato poco si adatta ad unindicizzazione per la rete, o viceversa i linguaggi di visualizzazione su rete sono troppo poco sofisticati per una produzione tipografica di buon livello, ecc. n I linguaggi di markup derivati da SGML sono i linguaggi più opportuni per strutturare e marcare i documenti in maniera indipendente dallapplicazione, favorendo la riusabilità, la flessibilità e la apertura ad applicazioni complesse.

6 XML Fabio Vitali6 Cosè il markup? (1) n Definiamo markup ogni mezzo per rendere esplicita una particolare interpretazione di un testo. n Per esempio, tutte quelle aggiunte al testo scritto che permettono di renderlo più fruibile. n Oltre a rendere il testo più leggibile, il markup permette anche di specificare ulteriori usi del testo. n Con il markup per sistemi informatici (il nostro caso), specifichiamo le modalità esatte di utilizzo del testo nel sistema stesso. n Il markup non è soltanto uninevitabile e sgradevole risultato della informatizzazione dellarte tipografica. Non è qualcosa che sta con noi a causa dellinformatica.

7 XML Fabio Vitali7 Cosè il markup? (2) n 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). n La numerazione delle pagine o luso dei margini per creare effetti sul contenuto sono noti da centinaia di anni. n 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.

8 XML Fabio Vitali8 Tipi di markup Il markup assolve a diversi ruoli a seconda del sistema di elaborazione, dellapplicazione, dello scopo a cui il documento è soggetto. u Puntuazionale: punteggiatura, spazi, ecc. u Presentazionale: ritorni a capo, allineamenti, cambi pagina, ecc. u Procedurale: le istruzioni di computer da eseguire per ottenere un certo effetto u Descrittivo: lassociazione ad ogni porzione di un documento delletichetta che ne descrive il senso e il ruolo u Referenziale: luso di abbreviazioni e sigle che fanno riferimento e vengono sostituite con entità più lunghe e complesse.

9 XML Fabio Vitali9 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 Un testo su carta

10 XML Fabio Vitali10 Treuominiinbarcajeromekjerome1889capitoloprimot reinvalidilesofferenzedigeorgeeharrislavittimadicent osettemalattieinguaribilieravamoinquattrogeorge,wil liamsamuelharrisioemontmorencystandocenesedutii ncameramiafumavamoeparlavamodiquantofossimo malridottimalridottidalpuntodivistadellasaluteintend onaturalmentecisentivamotuttipiuttostogiùdicorda 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.

11 XML Fabio Vitali11 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,... Markup metabolizzato Aggiungiamo markup puntuazionale e presentazionale: maiuscole/minuscole, punteggiatura, spazi e ritorni a capo sono essi stessi elementi di markup.

12 XML Fabio Vitali12 {\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 }} 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.

13 XML Fabio Vitali13 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, … Markup descrittivo Sono informazioni (descrizioni) sugli elementi del documenti, che ne specificano il ruolo, la giustificazione, la relazione con gli altri elementi.

14 XML Fabio Vitali14 Il markup procedurale (1) n Basato sullaspetto u Ad ogni elemento del documento viene associata la procedura per visualizzarlo in maniera voluta: font, dimensione, corsivi, grassetti, margini, interlinea, ecc. n Dipendente dal sistema u ogni sistema di visualizzazione impone le proprie regole e la propria sintassi, dipendendo da: F Filosofia sintattica (comandi-punto per troff, comandi-barra per RTF, ecc.) F Capacità di raggruppamento (parentesi graffe in RTF, comando di disattivazione esplicita in troff, ecc.) F Supporto di specifiche funzionalità

15 XML Fabio Vitali15 Il markup procedurale (2) n Associato agli individui u ogni elemento possiede le proprie procedure per la visualizzazione, che possono anche essere tutte diverse anche per elementi dello stesso tipo. n Non contestuale u Le regole di visualizzazione non dipendono dal contesto in cui vengono fatte, ma ognuna fa specie a sé. Ad esempio, una lista in troff è fatta come segue:.li.it elemento 1.it elemento 2.el F Nessun controllo impone di chiudere la lista alla fine, o di usare i comandi.it solo dentro alla lista.

16 XML Fabio Vitali16 Il markup dichiarativo (1) Basato sul ruolo u Di ogni elemento viene descritto il ruolo allinterno del testo, più che le regole per la sua visualizzazione: u Ad esempio: questo è un titolo, questo è un paragrafo, questo è il nome dellautore, questa è una citazione. Indipendente dal sistema u Poiché il markup dichiarativo 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. u Un sistema incapace di variare linterlinea, 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.

17 XML Fabio Vitali17 Il markup dichiarativo (2) Basato su categorie u I ruoli sono categorie. Ogni elemento è associato ad una categoria, e ne riflette tutte le caratteristiche automaticamente. Contestuale u Con il markup dichiarativo è possibile definire delle regole che permettano o impediscano lassegnazione di una categoria (ruolo) ad un elemento del testo a seconda del contesto. u Ad esempio, si può richiedere che il titolo vada allinizio del testo, o che una lista sia composta solo di elementi della lista, e non da paragrafi, ecc.

18 XML Fabio Vitali18 La storia del markup n Anni 60: primo WP in IBM n GCA-GenCode e IBM-GML ( ) n Anni 80: WP WYSIWYG e DTP n 1986: SGML è standard ISO 8879 n 1991: HTML n 1997: la convergenza su XML

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

20 XML Parte II Introduzione a XML e famiglia n Cosè XML n Perché XML n La famiglia XML n Cosa si fa con XML n Un esempio: XML News

21 XML Fabio Vitali21 XML XML (Extensible Markup Language [sic!]) è un meta- linguaggio di markup, progettato per lo scambio e la interusabilità di documenti strutturati su Internet. 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. XML si propone di integrare, arricchire e, nel lungo periodo, sostituire HTML come linguaggio di markup standard per il World Wide Web.

22 XML Fabio Vitali22 Perché XML? HTML nacque come un DTD di SGML (non proprio!!!), 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.

23 XML Fabio Vitali23 Perché non SGML? SGML ha molti pregi, ma ha dalla sua una complessità duso e di comprensione notevole. Inoltre, a SGML mancano caratteristiche di notevole importanza per luso pratico, come link ipertestuali e specifiche grafiche. Lavvento di HTML ha fatto capire come i linguaggi di markup siano ormai maturi per essere compresi dal largo pubblico, ma che la semplicità duso di HTML doveva costituire un elemento di partenza. XML contiene tutte le caratteristiche di SGML che servono per creare applicazioni generali senza scendere nel livello di dettaglio e pedanteria richiesti da SGML.

24 XML Fabio Vitali24 I vantaggi di XML Documenti auto-descrittivi u La scelta dei nomi degli elementi può essere fatta per facilitare la comprensione del ruolo strutturale dellelemento. Struttura navigabile dei documenti u La rigida struttura ad albero e lassenza di regole di minimizzazione rendono semplice la visualizzazione Platform-independence u XML è uno standard aperto, e chiunque può realizzare strumenti che lo usino come formato di dati. Facile convertibilità a formati Web u La totale interdipendenza tra XML, SGML, HTML etc. fa sì che la conversione tra formati interni e formati per il Web sia facile.

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

26 XML Fabio Vitali26 Cosa si fa con XML? Data Interchange u 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. u XML si propone come la sintassi intermedia più semplice per esprimere dati anche complessi in forma indipendente dallapplicazione che li ha creati. Document publishing u XML è ideale come linguaggio per esprimere documenti strutturati o semi strutturati, e per esprimerli in maniera indipendente dalla loro destinazione finale. u Lo stesso documento XML può essere preso e trasformato per la stampa, il Web, il telefonino, lautoradio.

27 XML Fabio Vitali27 Cosa si fa con XML? (2) Interazione tra database eterogenei u Ogni volta che è necessario trasferire dei dati da un database allaltro, la soluzione più economica a tuttoggi è stampare i dati dal primo DB su carta e ribatterli a mano sul secondo. u Idealmente io vorrei accedere via Web ai dati del primo DB, selezionare quelli che voglio in una cartella, e sbattere la cartella sul secondo DB, che si preoccupa di adattarli alle sue esigenze. u Il secondo DB, dunque, deve essere in grado di comprendere la sintassi dei dati, di interpretare la struttura (eventualmente, in parte, aiutato da un essere umano) e di isolare le informazioni di suo interesse. u Per questo potrebbe essere aiutato da un formato di interscambio tipo XML, che permetterebbe di etichettare i dati esplicitamente ed in maniera generale e comprensibile agli esseri umani.

28 XML Fabio Vitali28 Cosa si fa con XML? (3) Computazioni client-side u Esistono molte esigenze di testing e computazione su oggetti descrivibili parametricamente: F Caratteristiche e funzionalità di chip, semilavorati, e prodotti industriali F Scheduling in aerei, treni, ecc. F Shopping on-demand, e user-tailoring F Applicazioni per il customer suppot u In tutti questi casi, attualmente si creano applicazioni server-side che interrogano i database per i parametri e usano cicli del server per le computazioni, mentre i client sono in attesa. u Poter esprimere in Java o altri linguaggi client-side la logica della computazione, che scarica i parametri dal sito giusto ed esegue le computazioni indipendentemente, sarebbe molto comodo, e permetterebbe confronti incrociati e ogni altro tipo di valutazione ottimale per le esigenze di chi compra.

29 XML Fabio Vitali29 Cosa si fa con XML? (4) Viste selettive u Lesempio tipico è lindice sommario dinamico di un documento: interrogo una base documentaria e ottengo il primo livello di indice di un documento. Seleziono una voce e ri-interrogo la base dati per avere il secondo livello dellindice. u Ogni espansione richiede un passaggio al server, con ovvi problemi di latenza. Sarebbe possibile fare tutto client-side con Javascript, ma o si fa lindice a mano del documento HTML, oppure bisogna ricorrere a documenti ben strutturati, come XML. u Altri esempi: F Un grafico che si trasforma in una tabella F Un documento annotato in cui vedo il contenuto, o le annotazioni, o tutti e due F Un manuale di due versioni dello stesso sistema, con testi e immagini che cambiano a seconda di quale specifica versione si sta esaminando.

30 XML Fabio Vitali30 Cosa si fa con XML? (5) Agenti Web u Mattew Fuchs (Disney Imagineering): Data needs to know about itself, and data needs to know about me u Agenti di filtro, selezione, rilevamento hanno bisogno di sapere le caratteristiche dei dati che stanno filtrando in maniera vendor-independent, ben strutturata e flessibile (nuove esigenze, categorie, comunità virtuali, sub-società si formano continuamente) u Ad esempio, bot personalizzati, la guida dei canali TV, i sistemi di classificazione del contenuto delle pagine Web, ecc.

31 XML Fabio Vitali31 Quando scegliere XML? (1) Quali sono le condizioni per adottare XML in un progetto? Ovviamente: u E nuovo u E di moda u E compatibile con Web u Può essere imposto dal committente u Può essere imposto dai partner Ma ci sono almeno quattro buone ragioni per XML: u Produzione di documenti automatici u Gestione indipendente di produzione e uso di dati u Elaborazione di dati con aspetti strutturali complessi u Elaborazione di dati strutturati in contenitori semi-strutturati

32 XML Fabio Vitali32 Quando scegliere XML? (2) Produzione di documenti automatici u XML è la soluzione in assoluto più elegante (anche se ad oggi ancora faticosa) per integrare collezioni di dati strutturati sul Web. u Documenti dinamici, che mescolano blocchi testuali con output tabellari di informazioni strutturate, sono facilmente esprimibili in XML, e gli strumenti attuali si concentrano su questo, per il momento. u Integra e sostituisce le tecnologie server-side di accesso ai dati: ASP, PHP, server-side Javascript, ecc.

33 XML Fabio Vitali33 Quando scegliere XML? (3) Gestione indipendente di produzione ed uso di dati u Spesso linterscambio di dati avviene allinterno di un workflow controllato e noto. In questo caso, data producers e data consumers sono creati ad hoc per lo specifico flusso informativo. XML è una complicazione inutile. u Tuttavia esistono delle situazioni in cui non cè progettazione integrata di producer e consumer. In questo caso, unadeguata progettazione del producer facilita molto il lavoro di tutti i possibili consumer u XML è strutturato, auto-esplicativo, enfatizza la descrizione del dato più che del suo scopo nella elaborazione. E quindi ideale per le situazioni in cui lelaborazione non è nota in anticipo.

34 XML Fabio Vitali34 Quando scegliere XML? (4) Elaborazione di dati con aspetti strutturali complessi u I database utilizzano le relazioni per ogni tipo di esigenza: dalla descrizione di connessioni logiche tra entità concettualmente diverse, alla gestione di dati strutturati in maniera complessa. u Ad esempio, è complicato gestire, in una tabella, record con un numero variabile di campi, o situazioni alternative complesse. u XML prevede strutture con blocchi ripetuti, alternativi, facoltativi. La descrizione di queste strutture in XML è molto più naturale che con DB relazionali.

35 XML Fabio Vitali35 Quando scegliere XML? (5) Elaborazione di dati in contenitori semi-strutturati u A volte linformazione ha uno stato naturale semi-strutturato (e.g., documenti testuali), al cui interno esistono informazioni atomiche su cui è necessario attivare computazioni. u La soluzione classica è di estrarre le informazioni atomiche, metterle in un DB tradizionale, e buttare via il contenitore naturale. Questo ha il grosso difetto di eliminare il contesto e omogeneizzare in maniera forzata informazioni organizzate diversamente. u XML permette di inserire allinterno di strutture documentarie (pensate per la visualizzazione) tag di natura descrittiva utilizzabili per elaborazioni sofisticate.

36 XML Fabio Vitali36 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 e dalla Newspaper Association of America. XMLNews è composto di due parti: u XMLNews-Story è un DTD XML per descrivere in maniera variamente arricchita il testo delle notizie u XMLNews-Meta definisce il formato delle meta- informazioni per notizie dagenzia. E conforme al Resource Description Framework (RDF), e on si riferisce solo alle notizie testuali, ma anche a immagini, video-clip, ecc.

37 XML Fabio Vitali37 Un esempio: XMLNews (2) XMLNews-Story: il testo di una notizia di agenzia è diviso in tre parti: lhead contiene informazioni di organizzazione, mentre il body è a sua volta diviso in intestazione e contenuto. Colombia Earthquake 143 Dead in Earthquake By Jared Kotler, AP Bogota, Colombia January :28 ET …

38 XML Fabio Vitali38 Un esempio: XMLNews (3) XMLNews-Story: Il body ha un markup minimale di struttura del testo: … … 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. Il terremoto è avvenuto nel primo pomeriggio, con una magnitudine del 6 grado, secondo il Geological Survey Americano, in Golden, Colorado. Lepicentro è stato identificato nella valle dello stato del Cauca, a 210 chilometri a ovest della capitale, Bogotà.

39 XML Fabio Vitali39 Un esempio: XMLNews (4) XMLNews-Story: Però è possibile in qualunque momento aggiungere informazioni inline: 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. Questo permette di arricchire la storia con altre informazioni in maniera semi-automatica: u Nella ricerca: è possibile cercare tutto quello che è successo in Colombia, o cosa è successo in una certa data. u Nella presentazione: un provider potrebbe fornire semi-automaticamente dei link o delle cartine della Colombia. u Nellorganizzazione delle news: è possibile cercare tutti i terremoti effettivi, e non le notizie che ne usano la parola, magari figurativamente.

40 XML Fabio Vitali40 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: u Informazioni sul contenuto della notizia (titolo, lingua, formato, ecc.) u Informazioni sulle date della notizia: creazione, pubblicazione, scadenza, ecc. u Informazioni sulla provenienza ed attendibilità della notizia u Informazioni sui possessori dei diritti di distribuzione e copyright u Informazioni di classificazione ed organizzazione u Link a documenti connessi: versioni precedenti, seguenti, ed altre notizie connesse.

41 XML Parte III Analisi dei documenti n Classificazione dei componenti n Selezione dei componenti, costruzione della gerarchia, dei blocchi informativi e degli elementi di dati n Identificazione delle connessioni n Verifica e miglioramento iterativo delle specifiche

42 XML Fabio Vitali42 Perché convengono i linguaggi di markup? La conversione è difficile La conversione è facile Energia / Informazione

43 XML Fabio Vitali43 Classificazione dei componenti n La parte più importante del lavoro di progettazione di unapplicazione SGML è lidentificazione delle strutture e del significato delle parti dei documenti e delle loro relazioni. n Lidentificazione semantica dei componenti avviene quando si evidenzia lesigenza di distinguere tra un tipo di dati ed un altro. n Se due pezzi diversi di un documento contengono lo stesso tipo di informazione, li si deve considerare appartenenti alla stesso componente semantico, anche se sono separati tra loro. n Viceversa, se due pezzi contengono due tipi diversi di informazione, o è necessario distinguerli in qualche maniera per i fini dellapplicazione, allora debbono essere distinti in due componenti semantici separati. n Possiamo distinguere tra tre tipi di classificazione dei componenti di un documento: contenuto, struttura e presentazione.

44 XML Fabio Vitali44 Classificazione basata sul contenuto Si identificano i componenti per il significato che essi hanno, indipendentemente dalla loro posizione nel documento o dal loro aspetto grafico. Ad esempio: u indirizzi, città, codici postali; u ricette, ingredienti, tempi di preparazione; u termini, sviluppo grammaticale, significato.

45 XML Fabio Vitali45 Classificazione basata sulla struttura Si identificano i componenti per il loro ruolo allinterno del documento, per il senso che hanno in quella posizione e in quella forma Ad esempio: u sezioni, capitoli, liste, paragrafi, titoli

46 XML Fabio Vitali46 Classificazione basata sulla presentazione Si identificano i componenti per le variazioni nel modo in cui debbono apparire graficamente, senza implicazioni sul loro vero significato. Ad esempio: u Frasi con un determinato font o dimensione u Blocchi da mantenere sulla stessa pagina u Posti dove spezzare una pagina

47 XML Fabio Vitali47 Caratteristiche delle classificazioni Questi tre modi di classificare i componenti di un documento sono presenti contemporaneamente bellanalisi di un documento. Persone diverse, sugli stessi documenti, possono identificare questa o quella classe a seconda di professione, forma mentis, esigenze. I tre tipi di classificazione hanno anche caratteristiche diverse di identificabilità, flessibilità e durata.

48 XML Fabio Vitali48 Classificazione basata sul contenuto È la classificazione più complessa da realizzare, ma la più flessibile, identificabile, flessibile e duratura. Poiché identifico i componenti basati sul loro significato, è immediato identificare il senso di un componente. La classificazione è indipendente dalla struttura del documento e dallaspetto grafico, così posso cambiare idea su queste decisioni in qualunque momento, e anche fornire soluzioni diverse sugli stessi componenti. Poiché un componente avrà sempre quel significato in qualunque contesto, anche cambiamenti di stile, organizzazione del documento ecc. non impediranno a questa classificazione di sopravvivere.

49 XML Fabio Vitali49 Classificazione basata sulla struttura La classificazione strutturale identifica lorganizzazione di un documento in maniera sufficientemente generale, ma rozza per quel che riguarda il senso del documento. È possibile in qualunque momento modificare la resa grafica degli elementi, ma non il loro ruolo nella struttura globale del documento. Cambiamenti stilistici non preoccupano (il font, la larghezza di un paragrafo, lesistenza o meno di un bordo in una tabella), cambiamenti strutturali importanti invece sì (ad esempio, passare da una forma a lista ad una a tabella, ecc.).

50 XML Fabio Vitali50 Classificazione basata sulla presentazione In generale, ci sono più classi di contenuto che classi di presentazione. Per uniformità grafica e facilità di lettura molti componenti aventi significato diverso vengono resi graficamente nello stesso modo. Lidentificazione delle sole classi grafiche fa sparire immediatamente lidentificabilità di elementi di significato diverso ma resa grafica uguale. Decisione successive di cambiamenti grafici di solo alcuni componenti, e non altri, saranno impossibili. Utilizzi del documento per scopi diversi dalla presentazione (ad esempio, la creazione di un indice, linserimento in un motore di ricerca, ecc.), saranno impossibili.

51 XML Fabio Vitali51 Regole guida per la classificazione Identificare il più possibile i componenti per il loro significato e contenuto. Richiede più lavoro ma ne vale la pena. È necessario, ovviamente, fermarsi ad un livello ragionevole di specificità. Attribuire a questi componenti significati strutturali (tabelle, liste, paragrafi, organizzazioni gerarchiche tipo sezioni, sotto-sezioni, ecc.). Specificare la resa grafica dei componenti. Questultima specificazione tipicamente avviene al di fuori del contesto di SGML, con appositi strumenti e linguaggi di stylesheet.

52 XML Fabio Vitali52 Altri suggerimenti (1) Scartare elementi puramente presentazionali: numero di pagina, elementi che si ripetono pagina dopo pagina (un logo, una decorazione, il nome di un capitolo) possono tipicamente essere aggiunti automaticamente dal formattatore e non è necessario considerarli come componenti del documento. Identificare classi generali di informazioni. Anche se presenti in varie parti del documento, alcune informazioni possono avere lo stesso significato e lo stesso ruolo, e quindi debbono essere identificati nella stessa maniera.

53 XML Fabio Vitali53 Altri suggerimenti (2) Identificare informazioni ripetute in varie parti del documento. Alcune informazioni (nomi propri o di organizzazioni, riferimenti ad immagini, date importanti, elementi ripetuti di una struttura, ecc.) debbono essere presenti in varie parti del testo in maniera identica, e debbono cambiare in maniera coerente.È utile avere un componente unico che registri una sola volta linformazione da stampare, e venga usato ovunque necessario. Identificare i componenti che provengono da sistemi informativi esistenti. Tipicamente un database ha già distinzioni di elementi basate sul contenuto. Se alcune informazioni provengono da un database è comodo e si risparmia tempo usare o basarsi sulla strutturazione dei dati già esistenti nel sistema informativo.

54 XML Parte IV La sintassi di XML 1.0 n Sezione I: visione generale u Elementi di un documento XML u Formato di un documento XML n Sezione II: Il contenuto di un DTD u Definizione di elementi u Definizione di attributi u Definizione di entità generali u Definizione di entità parametriche u Altri aspetti di XML

55 XML Fabio Vitali55 XML 1.0 n Una raccomandazione W3C del 10 febbraio n È definita come un sottoinsieme di SGML URL ufficiale: Traduzione ufficiale in italiano: n Molto più formalizzata della grammatica di SGML, usa una notazione formale, Extended Backus-Naur Form.

56 XML Fabio Vitali56 XML e Unicode XML (come Java) abbandona completamente ASCII e le codifiche ad un byte, e si basa direttamente su Unicode. Questo porta a due vantaggi nei riguardi dellinternazionalizzazione: u È possibile scrivere documenti misti, senza ricorrere a trucchi strani per identificare la parte che usa un alfabeto dalla pare che ne adopera un altro. u 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.

57 XML Fabio Vitali57 I componenti di XML Un documento XML contiene una varietà dei seguenti componenti u Elementi u Attributi u Entità Testo (detto anche #PCDATA ) u Commenti u Processing Instructions

58 XML Fabio Vitali58 Elementi, Attributi, Entità, #PCDATA, Commenti, Processing Instructions n Gli elementi sono le parti di documento dotate di un senso proprio. n Il titolo, lautore, i paragrafi del documento sono tutti elementi. n Un elemento è individuato da un tag iniziale, un contenuto ed un tag finale. n Non confondere i tag con gli elementi! Tre uomini in barca

59 XML Fabio Vitali59 n Gli attributi sono informazioni aggiuntive sullelemento che non fanno effettivamente parte del contenuto (meta-informazioni). n Essi sono posti dentro al tag iniziale dellelemento. Tipicamente hanno la forma nome=valore … Capitolo primo Elementi, Attributi, Entità, #PCDATA, Commenti, Processing Instructions

60 XML Fabio Vitali60 n Le entità sono frammenti di documento memorizzati separatamente e richiamabili allinterno del documento. n Esse permettono di riutilizzare lo stesso frammento in molte posizioni garantendo sempre lesatta corrispondenza dei dati, e permettendo una loro modifica semplificata. Oggi è una bella giornata. Come dice &FV;: divertitevi! Elementi, Attributi, Entità, #PCDATA, Commenti, Processing Instructions

61 XML Fabio Vitali61 n Rappresenta il contenuto vero e proprio del documento. n 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. Elementi, Attributi, Entità, #PCDATA, Commenti, Processing Instructions

62 XML Fabio Vitali62 I documenti XML possono contenere commenti, ovvero note da un autore allaltro, da un editore allaltro, ecc. 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 laltro, o per trattenere informazioni per se stessi, nel caso le dimenticassimo. Elementi, Attributi, Entità, #PCDATA, Commenti, Processing Instructions

63 XML Fabio Vitali63 n Le processing instructions (PI) sono elementi particolari (spesso di senso esplicitamente procedurale) posti dallautore o dallapplicazione per dare ulteriori indicazioni su come gestire il documento XML nel caso specifico n Per esempio, in generale è lapplicazione a decidere quando cambiare pagina. Ma in alcuni casi può essere importante specificare un comando di cambio pagina (oppure tutti i cambi pagina di un documento già impaginato).. Elementi, Attributi, Entità, #PCDATA, Commenti, Processing Instructions

64 XML Fabio Vitali64 I documenti XML Un documento in un linguaggio di markup definito sulla base di XML è composto dalle seguenti tre parti: u Dichiarazione XML (opzionale) F La specifica delle opzioni attivabili nel documento XML u Document Type Declaration (opzionale) F Le regole di validità a cui il documento deve sottostare u Istanza del documento F Il contenuto ed il markup effettivo del documento

65 XML Fabio Vitali65 Dichiarazione XML Document Type Declaration Document Instance La dichiarazione XML specifica le caratteristiche opzionali del documento in questione. Poiché esse sono ridotte al minimo, la dichiarazione XML è brevissima. Esistono esattamente tre valori che possono essere messi in una dichiarazione XML: u Il parametro version identifica quale versione di XML si sta usando. Ora lunico valore possibile è 1.0. Necessario. u Il parametro encoding permette di specificare, se il dubbio può sorgere, quale codifica di caratteri viene usata per il documento. Facoltativo. u Il parametro standalone permette di specificare se le informazioni necessarie per valutare e validare il documento sono interne o se ne esistono anche di esterne. Facoltativo.

66 XML Fabio Vitali66 n La dichiarazione del tipo del documento serve a specificare le regole che permettono di verificare la correttezza strutturale di un documento. n Vengono cioè elencati [i file che contengono] gli elementi ammissibili, il contesto in cui possono apparire, ed altri eventuali vincoli strutturali. n Nella terminologia XML, si parla di modellare una classe (cioè una collezione omogenea) di documenti attribuendogli un tipo. Dichiarazione XML Document Type Declaration Document Instance

67 XML Fabio Vitali67 Listanza del documento è quella parte del documento che contiene il testo vero e proprio, dotato del markup appropriato. Le applicazioni XML sono in grado di verificare se listanza del documento segue le regole specificate nel DTD, e a identificare le violazioni. Dichiarazione XML Document Type Declaration Document Instance

68 XML Fabio Vitali68 Documenti ben formati o validi XML distingue due tipi di documenti rilevanti per le applicazioni XML: i documenti ben formati ed i documenti validi. In SGML, un DTD è necessario per la validazione del documento. Anche 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.

69 XML Fabio Vitali69 Documenti XML ben formati Un documento XML si dice ben formato se: u Tutti i tag di apertura e chiusura corrispondono e sono ben annidati u Esiste un elemento radice che contiene tutti gli altri I tag vuoti (senza contenuto) utilizzano un simbolo speciale di fine tag: u Tutti gli attributi sono sempre racchiusi tra virgolette u Tutte le entità sono definite.

70 XML Fabio Vitali70 Parser validanti e non validanti n 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). n Un parser validante, in presenza di un DTD, è in grado di verificare la validità del documento, o di segnalare gli errori di markup presenti. n Un parser non validante invece, anche in presenza di un DTD è solo in grado di verificare la buona forma del documento. n Un parser non validante è molto più semplice e veloce da scrivere, ma è in grado di fare meno controlli. In alcune applicazioni, però, non è necessario validare i documenti, solo verificare la loro buona forma.

71 XML Esempi di sviluppo del DTD Ci sono quattro caratteristiche dei DTD XML che vale la pena considerare a fondo: La dichiarazione di tipo ( ) Elementi … Attributi … Entità: à

72 XML Fabio Vitali72 La dichiarazione di tipo Il è la dichiarazione del tipo di documento. Essa permette alle applicazioni XML di determinare le regole sintattiche da applicare alla verifica e validazione del documento. n La dichiarazione non è, ma contiene o fa riferimento alla Document Type Definition, o DTD, ove vengono elencati gli elementi validi e i loro vincoli. n Il DTD può essere posto in un file esterno, internamente al documento, o in parte esternamente ed in parte internamente.

73 XML Fabio Vitali73 Dichiarazione del DTD: n La prima forma di dichiarazione indica che il DTD è contenuto in un file esterno (per esempio, condivisa con altri documenti). Il DTD viene chiamato external subset perché è posto in un file esterno. n La seconda forma precisa il DTD internamente (cioè nello stesso file), che quindi non può essere condiviso da altri file. Il DTD si chiama in questo caso internal subset. n La terza forma precisa una parte del DTD come contenuta in un file esterno (e quindi condivisibile con altri documenti), e una parte come propria del documento, e non condivisibile.

74 XML Fabio Vitali74 Specifica di elementi Content-model: la specificazione formale del contenuto permesso nellelemento, secondo una sintassi specifica di gruppi di modelli.

75 XML Fabio Vitali75 Specifica di elementi Content model Tramite il content model posso specificare quali sono gli elementi leciti allinterno di un elemento, in quale numero e quale posizione rispetto agli altri. Ci sono cinque famiglie di content model: u Qualunque: un elemento può contenere qualunque elemento definito nel DTD u Vuoto: un elemento non ha contenuto, e spesso ha solo il tag iniziale. u Testo: un elemento può contenere solo testo (#PCDATA) u Strutturato: un elemento può contenere solo altri elementi u Misto: un elemento può contenere sia testo che altri elementi. XML ha solo UNA forma ammessa di content model misto.

76 XML Fabio Vitali76 Specifica di elementi Content model: ANY ed EMPTY u Lelemento X può contenere qualunque altro elemento specificato nel DTD, o anche testo u Lelemento X non può contenere niente. Debbo scrivere il tag con la sintassi tipica degli elementi vuoti:

77 XML Fabio Vitali77 Specifica di elementi Content model testo e strutturato u Lelemento X può solo contenere testo. E proibito mettere altri elementi al suo interno u Lelemento X può contenere solo elementi secondo la specifica data, usando i separatori e gli operatori di ripetizione specificati.

78 XML Fabio Vitali78 Specifica di elementi Separatori Separano specifiche determinando lordine o lobbligatorietà: u, (virgola): richiede la presenza di entrambe le specifiche nellordine precisato. Es.: (a, b): ci devono essere sia a che b, e prima ci deve essere a e poi b. u | (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.

79 XML Fabio Vitali79 Specifica di elementi Operatori di ripetizione (1) Permettono di specificare se un gruppo può comparire esattamente una volta, almeno una volta, oppure zero o più volte. u Niente: la specifica precedente deve comparire esattamente una volta. Es.: c, (a, b): a e b devono comparire in questordine esattamente una volta. È lecito solo: cab. Si dice che è una specifica richiesta e non ripetibile. u ? (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. Si dice che è una specifica facoltativa e non ripetibile.

80 XML Fabio Vitali80 Specifica di elementi Operatori di ripetizione (2) u + (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. Si dice che è una specifica richiesta e ripetibile. u * (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. Si dice che è una specifica facoltativa e ripetibile.

81 XML Fabio Vitali81 Specifica di elementi Content model misto u Lelemento X può contenere sia testo sia altri elementi in maniera ed ordine specificati. u Lunica forma accettabile di content model misto in XML è composta da una ripetizione di elementi alternativi, in cui il primo è #PCDATA. Cioè solo content model della forma qui sopra.

82 XML Fabio Vitali82 Un esempio semplice Vogliamo descrivere il contenuto del mio portfolio di azioni. Invento un frammento di DTD per descrivere le mie azioni: zacx corp ZCXM

83 XML Fabio Vitali83 Il file stock.dtd

84 XML Fabio Vitali84 Complichiamo lesempio: ripetizioni ed alternative Il portfolio è composto da più azioni. Di ogni azione posso possederne o meno. Se ne posseggo, allora registro il prezzo di acquisto, altrimenti il prezzo attuale. zacx corp ZCXM zaffymat inc ZFFX zysmergy inc ZYSZ

85 XML Fabio Vitali85 Il file portfolio.dtd

86 XML Fabio Vitali86 Un altro esempio: content model misto Un libro, fatto di capitoli e a loro volta di paragrafi. 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, …

87 XML Fabio Vitali87 Il file romanzo.dtd

88 XML Fabio Vitali88 Specifica di attributi La dichiarazione permette di definire una lista di attributi lecita ad un elemento XML dichiarato in precedenza. Gli attributi sono informazioni aggiuntive poste insieme allelemento. Tecnicamente non fa parte del contenuto del documento, ma descrive e specifica lelemento. Ci sono quattro famiglie di attributi importanti: u Qualunque stringa è lecita u E possibile scegliere solo uno dei valori proposti (lista) u Il valore deve essere unico su tutto il documento (ID) u Il valore deve essere uguale a quello di un ID esistente

89 XML Fabio Vitali89 Specifica di attributi Attributi stringa e lista u 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 u 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

90 XML Fabio Vitali90 Specifica di attributi Attributi ID e IDREF u Il tag iniziale di X può contenere un attributo chiamato att. Sono leciti solo valori unici su tutto il documento. Lelemento X assume identificabilità assoluta allinterno del documento: è un luogo notevole. Poiché il valore deve essere sempre diverso, non è possibile specificare un valore di default. u 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.

91 XML Fabio Vitali91 Specifica di attributi Valori di default negli attributi I valori di default importanti in XML sono di quattro tipi: u Valore esplicito: un stringa tra virgolette u Valore necessario: la keyword #REQUIRED. u Valore facoltativo: la keyword #IMPLIED. u Valore esplicito e non modificabile: la keyword #FIXED e una stringa tra virgolette. Usata per scopi particolari. La vedremo per XLink.

92 XML Fabio Vitali92 Il primo esempio, più: attributi testo e lista Ogni azione viene attribuita alla borsa a cui appartiene. Ogni prezzo ha specificata la valuta. zacx corp ZCXM zaffymat inc ZFFX zysmergy inc ZYSZ

93 XML Fabio Vitali93 Il file portfolio.dtd

94 XML Fabio Vitali94 Il secondo esempio, più: attributi ID e IDREF Lelemento dellindice punta al paragrafo che vi si riferisce: 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, …

95 XML Fabio Vitali95 Il file romanzo.dtd

96 XML Fabio Vitali96 Entità Le entità sono macro testuali a sostituire dei riferimenti brevi, univocamente associati al loro significato esteso. Ci sono due tipi di entità: u Generali: definite in un DTD, possono essere usate nellistanza di documento. u Parametriche: definite in un DTD, possono essere usate nello stesso DTD, subito dopo.

97 XML Fabio Vitali97 Entità generali u Ogni volta che scrivo il nome dellentità, &Z; il processore sostituisce la stringa corrispondente, pippo. u Unentità della forma &#NNN;, dove NNN sono cifre decimali, viene sostituita con il carattere corrispondente nella tabella caratteri di default. Oggi ho visto &Z; Che bella entità

98 XML Fabio Vitali98 Complichiamo lesempio: entità generali Forniamo supporto per le lettere accentate e forniamo un abbreviazione per i personaggi: Le sofferenze di &G; e &H; Eravamo in quattro: &G;, &WSH;, io, e &M;. … Ci sentivamo tutti piuttosto giù di corda, Nel file romanzo.dtd metteremo definizioni come:

99 XML Fabio Vitali99 Entità parametriche u Ogni volta che scrivo il nome dellentità, %Z; il processore sostituisce la stringa corrispondente, #PCDATA | K. u Posso usare questa notazione solo allinterno di un DTD

100 XML Fabio Vitali100 Complichiamo lesempio: entità parametriche (I) Centralizziamo il content model misto, in modo da poterlo cambiare in un colpo solo.

101 XML Fabio Vitali101 Complichiamo lesempio: entità parametriche (II) Separiamo in un file esterno parte del DTD. Ad esempio, la definizione delle entità carattere: File entity.dtd … File romanzo.dtd %chars; Etc....

102 XML Fabio Vitali102 Complichiamo lesempio: entità parametriche (III) Realizziamo un DTD compatibile XML e SGML: n File romanzo.dtd: File romanzoxml.dtd %romanzo.dtd File romanzosgml.dtd %romanzo.dtd

103 XML Fabio Vitali103 Altre caratteristiche di XML n Sezioni CDATA (per scrivere testi con caratteri del markup) n Rigore sintattico (case sensitivity, nessuna minimizzazione) n Entità predefinite (< >, &, ' ") n Gestione del white space (e sempre significativo) n Attributi riservati (xml-space, xml-lang) n Marked sections (parti attivabili del DTD)

104 XML Fabio Vitali104 Sezioni CDATA n A volte può essere comodo inserire un blocco di caratteri comprendenti anche & e <, senza preoccuparsi di nasconderli dentro ad entità. Si usa allora la sezione CDATA, che ha la seguente sintassi: Lunica sequenza di caratteri non accettabile è la sequenza ]]>, che definisce la fine della sezione CDATA Il parser XML passa allapplicazione finale tutti i caratteri che trova fino alla sequenza ]]> In HTML, Questo è un titolo ]]> indica un titolo

105 XML Fabio Vitali105 Altre caratteristiche di XML n Case sensitivity: in XML tutto il markup è case-sensitive (il maiuscolo è diverso dal minuscolo). È quindi necessario usare le maiuscole per ELEMENT, ATTLIST, ecc., e lelemento è diverso dallelemento. n Valori tra virgolette: tutti i valori di tutti gli attributi debbono avere le virgolette (semplici o doppie, ma in maniera coerente), anche se numeri o appartenenti ad una lista di valori predefiniti. Entità predefinite: sono pre-definite e non ridefinibili 5 entità:

106 XML Fabio Vitali106 Il white space Il white space sono tutti quei caratteri senza aspetto visibile, che influenzano la formattazione del documento. Essi includono sicuramente lo spazio, il tab, il carriage return ed il line feed, più eventuali altri caratteri. SGML è nato in ambiente IBM, e le righe erano separate da caratteri chiamati RS e RE (record start e record end). Essi sono poi confluiti in ASCII 13 (CR) e ASCII 10 (LF).

107 XML Fabio Vitali107 Il white space nel markup Allinterno dei tag, il white space è equivalente ad un singolo spazio, e può essere usato per separare attributi ed altro. è equivalente a

108 XML Fabio Vitali108 Il white space nel contenuto (1) Per leggibilità del documento SGML, gli autori possono inserire white space tra elementi e tra contenuto ed elementi. Fabio Vitali è equivalente a Fabio Vitali

109 XML Fabio Vitali109 Il white space nel contenuto (2) Nellesempio precedente, il parser, avendo visto dal DTD che il content model di autore non contiene #PCDATA, può dedurre che il white space non è parte del contenuto. Tuttavia possono esservi problemi di ambiguità: Questo e un paragrafo con degli spazi che non so come trattare. Poiché para ha ovviamente un content model misto, non so più distinguere tra white space significativo e white space di presentazione.

110 XML Fabio Vitali110 Il white space nel contenuto (3) Loperazione di rimuovere il white space presentazionale lasciando intatto il contenuto vero e proprio è detto normalizzazione del documento. Il white space può essere: u Preservato: tutti i caratteri di white space vengono passati intatti allapplicazione u Collassato: tutti i caratteri di white space vengono ridotti ad uno e passati come un singolo spazio. u Rimosso: tutti i caratteri di white space vengono cancellati non passati allapplicazione.

111 XML Fabio Vitali111 XML e il white space XML adotta convenzioni molto semplici e dirette per il white space: u New line: Per semplicità ed uniformità, XML trasforma ogni tipo di new line (CRLF, LF e CR) nel solo carattere LF. uIf it aint markup, its data: Ogni white space che appare nel contenuto del documento è rilevante, e deve essere passato intatto allapplicazione. u Tuttavia, un parser validante è tenuto a precisare allapplicazione quale white space è stato riscontrato in elementi con content model di tipo elemento, cosicché lapplicazione possa decidere cosa farne.

112 XML Fabio Vitali112 Attributi per white space e lingua Esistono in XML due attributi riservati (ma da definire se usati): xml:space (valori possibili: default o preserve) permette allautore di indicare allapplicazione se è opportuno che mantenga il white space xml:lang (valori possibili: i codici a due lettere di RFC 1766): permette allapplicazione di identificare la lingua in cui è scritto il contenuto di un elemento, per attivare funzionalità dipendenti dalla lingua: F Rendering corretto F Spell-checking F Full-text indexing F Editing

113 XML Parte V Altri protocolli di XML n XML-Namespaces n XPointer e XPath n XSL e XSLT n XLink n XML-Schema

114 XML Fabio Vitali114 XML-Namespaces Nella visione XML, i tipi di documenti si mescolano e si fondono tra loro in maniera complessa. Lo stesso documento potrebbe avere alcuni elementi definiti in un tipo ed altri in un altro. Un esempio comune è un documento XML di valori di borsa che adopera i tag di HTML per definire gli elementi di testo, ed un insieme di tag specifico per gli elementi di borsa. I problemi sono conciliare la presenza di elementi non definiti nel luno nel set di tag dellaltro, e soprattutto conciliare la presenza di elementi definiti con lo stesso nome in entrambi i set. I namespace in XML si propongono per risolvere questi problemi. XML-Namespaces è una recommendation di W3C del 1999.

115 XML Fabio Vitali115 Uso dei namespace Ogni nome (elementi, attributi, entità, ecc.) del documento XML è preceduto da un prefisso che specifica lorigine del nome stesso. Il prefisso è separato da il carattere : dal nome dellelemento o dellattributo. Poiché ogni namespace userà un prefisso diverso,è possibile capire quali elementi appartengono alluno e allaltro, e di evitare qualunque problema di collisione. Lattributo predefinito xmlns serve per introdurre i prefissi usati dai namespace del documento. Il valore dellattributo è un URI che non ha nessun valore dichiarativo, ma solo informativo. E possibile far convivere anche attributi e elementi di namespace diversi

116 XML Fabio Vitali116 Un esempio di namespace Supponiamo che venga creato un documento HTML che contiene degli elementi del nostro portfolio: Acquisto di azioni Ordine di acquisto Si ordina lacquisto delle seguenti azioni Simbolo Prezzo Numero ZCXM Lordine va eseguito oggi, al più presto

117 XML Fabio Vitali117 Namespace di default Lassenza del prefisso nellattributo xmlns indica la presenza di un namespace di default, per cui tutti i nomi privi di prefisso di debbono intendere appartenenti a quel namespace. Acquisto di azioni Ordine di acquisto Si ordina lacquisto delle seguenti azioni Simbolo Prezzo Numero ZCXM Lordine va eseguito oggi, al più presto

118 XML Fabio Vitali118 XPointer e XPath n Gli XPointer e gli XPath sono indirizzi di locazioni interne a documenti XML. Possono essere usati per indicare link da o a specifiche parti di documenti XML. Sono una elaborazione del nome in un URL: n Sono dunque usati in un locatore, tipicamente un URI o URL, per indicare un frammento di quella risorsa. n Un XPointer è composto di una sequenza di termini di locazione separati da barre. Ogni termine individua più precisamente un frammento della risorsa individuata in precedenza. Es.: /doc/chapter[5]/section[2] : la seconda sezione del quinto capitolo dell documento.

119 XML Fabio Vitali119 Location Path e Step Il tipo più importante di XPath è il Location Path. Questo può essere o assoluto o relativo. Un Location Path assoluto inizia con /. Un Location Path relativo, invece, fa riferimento ad un nodo dellalbero del documento detto Nodo Contesto (NC) Un Location Path è composto di una sequenza di passi di locazione (Location Steps) separati da /, e letti da sinistra a destra. Ogni termine individua più precisamente un frammento della risorsa individuata in precedenza. Es.: /child::chapter/descendant::para identifica gli elementi para che discendono da un elemento chapter del documento. Un location step ha tre parti: u Un asse, che individua la direzione del location step u Un test, che individua il tipo o il nome del nodo identificato u Zero o più predicati che raffinano linsieme di nodi selezionati La sintassi è: axis::test[pred1][pred2]…[pred N]

120 XML Fabio Vitali120 Assi Gli assi identificano la direzione rispetto alla struttura del documento in cui andare a cercare loggetto da restituire rispetto al nodo contesto (NC). Tra gli assi possibili troviamo: child, descendant : figlio diretto e a qualunque livello del NC parent, ancestor : il genitore immediato e a qualunque livello del NC self : il NC; attribute : gli attributi del NC preceding-sibling, following-sibling : i nodi allo stesso livello ma precedenti o seguenti il NC. preceding, following : i nodi a qualunque livello (ma fuori al NC) che precedono o seguono il NC.

121 XML Fabio Vitali121 Test Il test di un nodo identifica attraverso il nome o il tipo loggetto da restituire. Se si specifica un nome solo i nodi con quel nome vengono selezionati. Altrimenti si possono utilizzare: u text(): il nodo testo contenuto nel nodo indicato dallasse u comment(): il nodo commento u *: tutto il contenuto del nodo indicato dallasse Esempi: u child::text(): il testo di un elemento (il nodo testo figlio del nodo contesto) u attribute::* tutti gli attributi del nodo contesto

122 XML Fabio Vitali122 Predicati Un predicato filtra linsieme dei nodi rispetto alla direzione indicata dallasse per produrre un nuovo insieme di nodi. Il filtro può essere attuato sulla posizione, o valutando unespressione booleana Ad esempio, u child::para[3] individua il terzo nodo di nome para dentro al NC. u child::para[last()] individua lultimo nodo di nome para nel NC. u N.B.: child::para[3] è equivalente a child::para[position()=3] Altre funzioni: u count() - il numero di nodi u id() - lID univoco di un nodo u name() - il nome qualificato del nodo

123 XML Fabio Vitali123 Sintassi abbreviata In molti casi esistono delle forme abbreviate usabili invece della sintassi completa: child::x diventa x, attribute::x self diventa., descendant::x diventa //x, parent diventa.. u /doc/chapter[5]/section[2]: la seconda sezione del quinto capitolo dell documento. u chapter//para: tutti i para discendenti a qualunque livello del nodo chapter figlio del NC u //para: tutti i para discendenti a qualunque livello della radice. u tutti i para figli del NC che abbiano lattributo warning. u il quinto para figlio di NC ad avere lattributo typeuguale a warning. u il quinto para figlio di NC, ma solo se ha lattributo type uguale a warning.

124 XML Fabio Vitali124 XPointer XPointer permettono di specificare la parte fragment di un URL. Essi sono di tre tipi: u Un nome (che identifica lelemento il cui ID è il nome dato) F Equivalente a: …#xpointer(id(pippo)) u Una sequenza di attraversamento F Equivalente a: …#xpointer(*[2]/*[5]/*[3]) u Uno o più forme generali di frammento (General Fragment part) F

125 XML Fabio Vitali125 Estensioni a XPath XPointer estende il concetto di node in quello di locazione. Una locazione è un nodo, o un punto, o un range di un documento XML. Quindi XPointer definisce due nuovi location types: Point: è definito da un nodo ed un indice, e rappresenta una posizione descritto dallindice alinterno del nodo. Se il nodo non ha nodi figli, allora lindice si riferisce alla stringa contenuta nel nodo. XPointer(para/point(127)) u Range: è definito come due punti, il primo precedente al secondo. XPointer(id("sec2.1")/descendant::P[last()] to id("sec2.2")/descendant::P[last()])

126 XML Fabio Vitali126 XSL: un linguaggio di stylesheet Poiché nessun elemento di XML possiede un significato predefinito, il linguaggio di stylesheet si occupa di dare un significato agli elementi di un documento XML. XSL (Extended Stylesheet Language) è una proposta che permette di attribuire significati ben noti (come caratteri, font, ecc.) agli elementi di un documento XML. La proposta è divisa in due parti: un linguaggio di trasformazione da documenti XML a documenti XML (chiamato XSLT), ed un vocabolario di elementi XML con semantica di formattazione (chiamato XSL-FO, o anche solo XSL). Il linguaggio XSL non ha ancora uno stato concluso. XSLT è una recommendation W3C del novembre 1999, mentre XSL-FO è ancora in fase di discussione.

127 XML Fabio Vitali127 Come funziona XSLT Innanzitutto XSL è 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. Non è potentissimo, ma si possono fare molte cose.

128 XML Fabio Vitali128 Cosè un documento XSL? 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 dorigine in altri elementi del documento destinazione. Esistono due filosofie di riscrittura disponibili in XSLT, che vengono dette push e pull. u Push: basata su regole, usata tipicamente per trasformare documenti. Per ogni elemento del documenti di input, si cerca la regola più appropriata e la si usa per scrivere il risultato u Pull: basata su template, viene usata tipicamente per trasformare dati. In un documento pre-formattato per loutput, si vanno ad inserire le parti di documento tratte dal file XML dorigine.

129 XML Fabio Vitali129 Un esempio di pull (1) Il documento del portfolio ha una struttura di database, molto ripetitiva: zabyrint ltd ZABW zaffymat inc ZFFX zysmergy inc ZYSZ

130 XML Fabio Vitali130 Un esempio di pull (2) Questo è un foglio di stile XSLT di tipo pull per generare un documento HTML con quei dati: Nome Simbolo Quant.

131 XML Fabio Vitali131 Il foglio di stile per il pull Questo è sostanzialmente un documento HTML con qualche tag strano: xsl:for-each va a cercare uno ad uno una sequenza di elementi ed applica le istruzioni al suo interno per ciascun elemento xsl:value-of va a cercare il valore (cioè il contenuto) di ogni elemento allinterno di xsl:foreach, e lo inserisce al suo posto. xsl:template dice che questa regola è un template da applicare allelemento radice del documento XML di partenza ( match=/ ). E quindi possibile applicare la stessa regola anche a sottoparti di un documento XML. xsl:stylesheet è lelemento radice del foglio di stile e specifica i namespace che vengono utilizzati nel foglio di stile stesso (nel nostro caso, uno per le istruzioni XSL ed uno per il set di tag di destinazione, cioè HTML.

132 XML Fabio Vitali132 Un esempio di push (1) Il documento del romanzo, invece, ha una forma più libera e più strutturata: 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, …

133 XML Fabio Vitali133 Un esempio di push (2) Questo è un foglio di stile XSLT di tipo push:

134 XML Fabio Vitali134 Il foglio di stile per il push Questo non assomiglia ad un documento HTML, ma ad una serie di istruzioni di compilazione separate: xsl:template è la regola da applicare se lelemento in esame corrisponde al valore dellattributo match. Di volta in volta applicherò il template della radice (/), dellelemento section, dellelemento para, dellelemento emph, ecc. xsl:apply-templates spinge a cercare, allinterno dellelemento che stiamo considerando, se esistono altri template applicabili.E il modo per far ripartire ricorsivamente la ricerca di altri template. Quindi il motore XSL cerca sempre un template per la radice, e trovandolo esegue quello che cè dentro. Se ci sono istruzioni del tipo xsl:for-each, esamina il contenuto della radice e sostituisce ogni xsl:value-of con il valore dellelemento trovato. Se invece ci sono istruzioni del tipo xsl:apply-templates cerca, per ogni elemento allinterno dellelemento, un template adatto e ripete ricorsivamente la procedura.

135 XML Fabio Vitali135 Usare XSL E necessario indicare al browser dove trovare lo stylesheet da usare. Questo può essere fatto in tre modi: u Specificando nellintestazione MIME del collegamento HTTP la locazione del foglio di stile u Specificando un gruppo di documenti, uno dei quali è il foglio di stile Specificando con una Processing Instruction (PI) il collegamento: … Lultima soluzione è lunica che funziona oggi con Internet Explorer 5.0, ma non è ancora ufficiale. In prospettiva, credo che la soluzione migliore sia la seconda.

136 XML Fabio Vitali136 XLink XPath, XLink e XPointer sono tre documenti di W3C per la specifica di link ipertestuali sui documenti XML. Originariamente erano ununica proposta chiamata XLL (da cui la terna XML, XLL e XSL), poi divisa in tre per semplicità. u XPointer specifica i meccanismi per riferirsi a parti del documento XML (SGML permette di riferirsi solo ad elementi con lattributo ID, HTML solo ad elementi con lattributo NAME). XPath specifica i meccanismi per indicare percorsi allinterno di un documento XML. E usato anche da XSLT per lattributo match. u XLink usa i meccanismi di indirizzamento di XPointer per descrivere link anche sofisticati tra documenti XML.

137 XML Fabio Vitali137 XLink Gli XLink sono elementi di un documento XML che hanno significato e comportamento di link ipertestuale. Un elemento XML è identificato come un XLink se possiede degli attributi riservati. Stiamo sfruttando il concetto di architectural form introdotto da HyTime Questa è una soluzione di compromesso tra il riservare nomi specifici di elementi (che avrebbe limitato la libertà di creazione dei DTD) e il lasciare tutta la gestione dei link ai fogli di stile (che avrebbe negato di attribuire inequivocabilmente agli elementi la natura di link). Gli XLink sono di due tipi: u Link semplici: elementi inline e uni-direzionali u Link estesi: inline o out-of-line, spesso multi-direzionali.

138 XML Fabio Vitali138 Funzionamento di XLink XLink definisce un namespace e alcuni attributi globali in questo namespace. Includere il namespace equivale ad ammettere XLink nel proprio documento. Qualunque namespace definito come "http://www.w3.org/1999/xlink definisce degli XLink Ad esempio: Clicca qui!

139 XML Fabio Vitali139 XLink semplici La presenza dellattributo xml:type con valore simple identifica lelemento come un XLink semplice. Un link semplice ha esattamente due risorse collegate, di cui una è locale ed una è remota. Dunque il link è sempre inline. W3C Lattributo href identifica il o i locatori coinvolti. Un locatore è un URL. Il modo più semplice di definire elementi è specificare in un DTD (o nel subset inline di DTD) la presenza dellattributo: ]>... W3C

140 XML Fabio Vitali140 XLink estesi Un XLink esteso associa un numero arbitrario di risorse, alcune locali, altre remote. Un link si dice inline se cè almeno una risorsa locale. Un link esteso deve contenere elementi tratti dai seguenti: u Lelemento locator, che indica lindirizzo di una risorsa remota) u Lelemento arc che specifica regole di attraversamento tra le risorse del link u Lelemento resource che indica una risorsa locale (e quindi inline) del documento. I link estesi sono utili per: F Creare link in uscita da documenti che non possono essere modificati (e quindi non permettono link inline) F Creare link da o per documenti in formati non XML. F Eseguire lattivazione di collezioni di link a richiesta. F Specificare link mutli-direzionali e multi-destinazione.

141 XML Fabio Vitali141 Link inline e out-of-line Un link HTML è un link inline: il testo linkante o linkato è il contenuto dellelemento A, e il link appartiene al documento in cui appare. I link out-of-line sono link che vengono memorizzati in un documento, e appaiono in un altro. Questo è molto comodo per creare link a o da risorse read- only (CD-ROM) o su cui non si hanno permessi di modifica (documenti altrui). XLink determina il tipo di link tramite la presenza dellelemento resource

142 XML Fabio Vitali142 Un esempio di link esteso Clicca qui

143 XML Fabio Vitali143 Un altro esempio di link esteso Ecco qui

144 XML Fabio Vitali144 Lo stesso esempio ]> Clicca qui

145 XML Fabio Vitali145 Quasi lo stesso esempio (2) ]> Clicca qui

146 XML Fabio Vitali146 Linkset esterni Visto che molti link finiscono con lessere esterni al documento, come si fa ad associare un documento con lelenco dei link definiti su di esso? u Il metodo migliore è usando un metodo out-of-band: per esempio, un header della trasmissione HTTP u Altrimenti, esiste un valore riservato per lattributo role, external- linkset, per creare un link esteso che punti alla locazione del set di link relativo al documento:

147 XML Fabio Vitali147 Altri attributi Altri importanti attributi sono: u title: contiene una stringa intelligibile allutente di spiegazione del senso della risorsa (usabile su simple, locator, resource e arc) u show (valori possibili: embed, replace, new): specifica come visualizzare o elaborare la risorsa specificata. new indica che la risorsa va visualizzata in un contesto nuovo, come una finestra nuova; replace indica che la risorsa nuova sostituisce la vecchia nel contesto esistente. embed indica che il contesto della risorsa nuova è la risorsa locale, a cui va sostituita. Per esempio, rimpiazzando il testo del link con il testo della destinazione. (usabile su simple e arc) u actuate (valori possibili: onLoad e onRequest): specifica quando lattivazione del link debba avvenire. onRequest indica che deve essere lutente ad attivare lazione, per esempio facendo click su un pulsante. onLoad significa che il link deve essere attivato appena la risorsa locale viene caricata. (usabile su simple e arc)

148 XML Fabio Vitali148 XML Schema XML Schema è una proposta per sostituire i DTD di XML con qualcosa di più potente e flessibile. La proposta è divisa in tre parti: u Unintroduzione alle caratteristiche di XML Schema (non normativa) u Una parte dedicata alle strutture del linguaggio u Una parte dedicata ai tipi di dati definibili nel linguaggio.

149 XML Fabio Vitali149 Motivazione (1) 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 lenfasi iniziale era su internazionalizzazione, strutturazione, facilità di conversione, ecc. Raccoglieva in pieno leredità di SGML. Lo sviluppo di XML era difatti condotto da membri della comunità SGML.

150 XML Fabio Vitali150 Motivazione (2) Nasce poi lidea 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 dellapplicazione 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 è uninterfaccia (Adam Bosworth): u Uninterfaccia tra autore e lettore, attraverso XSL e XLink, per portare significato tra creatore ed utente u Uninterfaccia tra applicazione ed applicazione, attraverso XML Schema, per esprimere contratti sui formati, e verificarne il rispetto.

151 XML Fabio Vitali151 Motivazione (3) Tutta la faccenda del trasferimento dei dati si semplifica: i documenti strutturati e gerarchici sono un formato ragionevole di sintassi praticamente per qualunque cosa: documenti di testo, record di database, ecc. Nella W3C Note di Agosto 1999 ( ) "Many data-oriented applications are being defined which build their own data structures on top of an XML document layer, effectively using XML documents as a transfer mechanism for structured data;

152 XML Fabio Vitali152 Validazione e buona forma La buona forma di un documento XML è una proprietà puramente sintattica. La validazione, viceversa, è la verifica di un impegno preso sopra al formato, ad un livello già semantico: u Mi impegno a scrivere dei documenti che siano formati da capitoli, ciascuno con un titolo e vari paragrafi, e ogni immagine con la sua didascalia. Per esprimere documenti di testo, i DTD probabilmente bastano, ma per esprimere blocchi di dati strutturati, è necessario un meccanismo di verifica più raffinato. 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.

153 XML Fabio Vitali153 XML Schema e DTD I DTD non sono espressi con XML, così da dover creare strumenti appositi per la validazione. 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. Inoltre permette di agire in maniera obect-oriented, permettendo di ampliare i tipi disponibili e di estenderne e precisarne le proprietà. Infine, XML Schema è scritto in XML, permettendo luso di applicazioni XML per la verifica della validità dei dati espressi.

154 XML Fabio Vitali154 XML Schema E una delle attività del working group su XML. Ha prodotto 6 generazioni di working draft, di cui lultima, del 7 aprile, dovrebbe essere pressoché definitiva. E diviso in tre parti: u XML Schema Part 0: Primer (unintroduzione) u XML Schema Part 1: Structures (struttura del documento XML Schema) u XML Schema Part 2: Datatypes (modello dei dati e meccanismi di estensione dei tipi) Recommendation W3C prima dellestate?

155 XML Fabio Vitali155 Formato di un XML Schema Un documento di XML Schema è racchiuso in un elemento, e può contenere, in varia forma ed ordine, i seguenti elementi: ed per inserire, in varia forma, altri frammenti di schema da altri documenti e per la definizione di tipi denominati usabili in seguito ed per la definizione di elementi ed attributi globali del documento. e per definire serie di attributi e gruppi di content model complessi e denominati. per definire notazioni non XML allinterno di un documento XML per esprimere commenti per esseri umani o per applicazioni diverse dal parser di XML Schema.

156 XML Fabio Vitali156 I tipi in XML Schema XML Schema usa i tipi per esprimere vincoli sul contenuto di elementi ed attributi. u Un tipo semplice è un tipo di dati che non può contenere markup e non può avere attributi. In pratica è una sequenza di caratteri. u Un tipo complesso è un tipo di dati che può contenere markup e avere attributi. Esiste un grande numero di tipi predefiniti, di tipo semplice: string, decimal, float, boolean, uriReference, date, time, ecc. Ogni tipo è caratterizzato da alcune proprietà, dette facets, che ne descrivono vincoli e formati (permessi ed obblighi). E data possibilità di derivare nuovi tipi, sia per restrizione che per estensione di permessi ed obblighi.

157 XML Fabio Vitali157 Un esempio

158 XML Fabio Vitali158 Facets Per ogni tipo io posso precisare dei facets, delle caratteristiche indipendenti tra di loro che specificano aspetti del tipo: u length, minLength, maxLength: numero richiesto, minimo e massimo di caratteri u minExclusive, minInclusive, maxExclusive, maxInclusive: valore massimo e minimo, inclusivo ed esclusivo u precision, scale: numero di cifre significative e di decimali significativi u pattern: espressione regolare a cui deve soddisfare il valore u enumeration: lista allinterno dei quali scegliere il valore. u period, duration, encoding, ecc.

159 XML Fabio Vitali159 Derivazione di tipi I tipi possono formare un albero complesso di derivazioni, permettendo a nuovi tipi di attingere a definizioni di altri tipi. E possibile estendere i tipi in due maniere: u Per restrizione (derivedBy=restriction) ad esempio specificando facets aggiuntivi. u Per estensione (derivedBy=extension) ad esempio estendendo il content model lecito. N.B.: lestensione non ha senso per i tipi semplici. Inoltre è possibile specificare equivalenze tra gli elementi, con lattributo equivClass, il che permette di specificare degli elementi come totalmente sostituibili nei content model. Attenzione: elementi, non tipi!

160 XML Fabio Vitali160 Esempi di derivazione (1)

161 XML Fabio Vitali161 Esempi di derivazione (2)

162 XML Fabio Vitali162 Tipi complessi Oltre ai facets, nella definizione di un tipo complesso debbo anche poter precisare un content model ed una serie di attributi leciti. Per questo uso gli elementi, e. Questi hanno vari attributi importanti: u Name: il nome del tag o dellattributo u Ref: il nome di un elemento o attributo definito altrove (globale) u Type: il nome del tipo, se non esplicitato come content u maxOccurs, minOccurs: il numero minimo e massimo di occurrenze u Fixed, default, nullable, ecc.

163 XML Fabio Vitali163 Content model complessi (1) Come nei DTD si usano virgole e caret per specificare obblighi e scelte tra gli elementi di un content model complesso, così in XML schema si usano e. Questi sostituiscono anche le parentesi. u (A, B) diventa u (A | B) diventa

164 XML Fabio Vitali164 Content model complessi (2) u (A, ( B | C)) diventa Il content model misto aggiunge semplicemente lattributo content con valore mixed. Altri valori: elementOnly (default), empty, textOnly. (#PCDATA | B | C )* diventa

165 XML Fabio Vitali165 Attributi La dichiarazione di attributi può avvenire con lelemento, dentro alla dichiarazione dellelemento corrisponde a:

166 XML Fabio Vitali166 Gruppi di attributi E anche possibile raccogliere questi attributi esternamente in un gruppo:

167 XML Fabio Vitali167 Annotazioni Nei DTD lunico posto dove mettere note e istruzioni di compilazione sono i commenti. Però i commenti sono a perdere: possono essere mangiati in qualunque fase dellelaborazione. In XML Schema, invece, esiste un posto specifico dove mettere note ed istruzioni, lelemento. Lelemento può contenere elementi (pensati per essere letti da esseri umani) oppure elementi, pensati per essere digeriti da applicazioni specifiche elemento pippo

168 XML Fabio Vitali168 Altri aspetti Namespace u In XML schema ogni nome definito appartiene ad un namespace specificato. I tipi estendono tipi predefiniti o definiti nello schema. In ogni caso vanno specificati con il namespace appropriato. Inclusioni e importazioni u In XML Schema, esistono meccanismi per dividere lo schema in più file, o per importare definizioni appartenenti ad altri namespace. Unicità e chiavi u In XML Schema, è possibile richiedere che certi valori siano unici, o che certi valori siano chiavi di riferimenti, analoghi alla coppia ID/IDREF in XML classico. Tuttavia, è possibile specificare pattern molto complessi come elementi chiave.

169 XML Fabio Vitali169 Riferirsi ad uno schema … Con lattributo schemaLocation dentro allistanza del documento XML diamo un suggerimento sulla posizione dello schema al validatore (ma la stessa informazione può essere data off-line, ad esempio perché predefinita, o in un header della connessione HTTP).

170 XML Parte VI Strumenti per XML n Editor n Browser n XML Conversion Tools n Document Storage Systems n DTD Development Tools

171 XML Fabio Vitali171 Editors Questa categoria comprende gli strumenti utilizzabili per la creazione di documenti XML. u Xmetal - SoftQuad Software Inc. (Win32) u Notepad - Microsoft (Win32) u Xeena - IBM Alphaworks (Java)

172 XML Fabio Vitali172 Xmetal (1) Prodotto commerciale completo: u creazione di DTD u creazione di stylesheet CSS u integrazione con DBMS

173 XML Fabio Vitali173 Xmetal (2)

174 XML Fabio Vitali174 XMLNotepad Freeware, utilizza il supporto XML di IE5

175 XML Fabio Vitali175 Xeena Freeware e portabile

176 XML Fabio Vitali176 Browsers Questa categoria comprende gli strumenti per la visualizzazione e la navigazione di documenti XML u Internet Explorer 5 - Microsoft (Win32, Mac, HP-UX) u Netscape 6 - Netscape (Win32, Mac, Linux, OpenVMS, FreeBSD) u Xplorer - IBM Alphaworks (IBM)

177 XML Fabio Vitali177 Internet Explorer 5 supporta XML, DOM, CSS e XSL

178 XML Fabio Vitali178 Netscape 6 preview release, supporta XML, DOM e CSS (ma non XSL)

179 XML Fabio Vitali179 Xplorer Freeware e portabile. E' solo un visualizzatore locale

180 XML Fabio Vitali180 XML Conversion Tools Non XML to XML converters u trasformano dati non XML in XML; XML to XML converters u trasformano dati XML da un formato in un altro;

181 XML Fabio Vitali181 Non XML to XML Converters Questi strumenti trasformano dati non XML in XML u DB2XML - Volker Turau (Java) F trasforma il risultato di query SQL in XML F ??? u OmniMark - OmniMark Technologies Corp. (Win, Unix) F trasforma documenti di qualunque tipo in XML F

182 XML Fabio Vitali182 XML to XML Converters Questi strumenti trasformano documenti XML da un formato in un'altro formato u LotusXSL- IBM alphaWorks (Java) F processore XSL u TransformXML - Frank Boumphrey (Win32) F utilizza un linguaggio proprietario

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

184 XML Fabio Vitali184 Oracle 8i Database con supporto per XML u inserimento di documenti XML come dati primitivi (ricerche testuali) u importazione dati da XML u esportazione dati in XML

185 XML Fabio Vitali185 eXcelon (1) XML Data Store u gestione nativa dei dati XML u interrogazione mediante XML query languages (XQL) u accesso ai dati attraverso interfacce DOM

186 XML Fabio Vitali186 eXcelon (2)

187 XML Fabio Vitali187 DTD Development Tools Questa categoria comprende gli strumenti per la creazione e la manutenzione dei DTD u DTD editors u DTD generators

188 XML Fabio Vitali188 ezDTD Editor visuale di DTD

189 XML Fabio Vitali189 Data Descriptors by Example Crea DTD basandosi su documenti XML di esempio.

190 XML Fabio Vitali190 Siti Web interessanti n The XML Cover Pages n The Whirlwind Guide to XML Tools and Vendors n Free XML tools and software n W3C XML page

191 XML Fabio Vitali191 Riferimenti (1) n XML J. Bosak, XML, Java, and the future of the Web, T. Bray, J. Paoli, C.M. Sperberg-McQueen, Extensible Markup Language (XML) 1.0, W3C Recommendation, 10 February 1998, T. Bray, The annotated XML Specification,1998, n XML Namespace T. Bray, D. Hollander, A. Layman, Namespaces in XML, W3C Recommendation, 14 January 1999, xml-names T. Bray, XML Namespaces by Example, J. Clark, XML Namespaces,

192 XML Fabio Vitali192 Riferimenti (2) n XSLT James Clark, XSL Transformations (XSLT) Version 1.0, W3C Recommendation 16 November 1999, E.R. Harold, XSL Transformations (XSLT), capitolo 14 del libro XML Bible, disponibile in rete: James Clark, XSLT in Perspective, XPointer e XLink S. DeRose, E. Maler, D. Orchard, B. Trafford, XML Linking Language (XLink), W3C Working Draft, 21 February 2000, J. Clark, S. DeRose, XML Path Language (XPath), Version 1.0, W3C Recommendation 16 November 1999, S. DeRose, R. Daniel Jr., E. Maler, XML Pointer Language (XPointer), W3C Working Draft 6 December 1999,

193 XML Fabio Vitali193 Riferimenti (3) n XML Schema D. C. Fallside, XML Schema Part 0: Primer, W3C Working Draft, 25 February 2000, H. S. Thompson, D. Beech, M. Maloney, N. Mendelsohn, XML Schema Part 1: Structures, W3C Working Draft 25 February 2000, P. V. Biron, A. Malhotra, XML Schema Part 2: Datatypes, W3C Working Draft 25 February 2000,


Scaricare ppt "XML La famiglia di linguaggi XML Fabio Vitali Università di Bologna."

Presentazioni simili


Annunci Google