Linguaggi per la descrizione dei documenti SGML,HTML,XML SGML (Standard General Markup Language) • Molteplicità di documenti di tipo diverso (es. web): articoli, cataloghi, rubriche, tabelle di dati etc.. • Ciascuno dotato di una sua struttura logica (articolo: titolo, sottotitolo, autore, data ,etc..). Tutti memorizzati utilizzando il formato a carattere (ASCII), ma con convenzioni differenti (prima il nome poi il cognome, campi fissi da 30 byte, nome delimitato da “$”..). • Difficoltà di gestione dell’archivio (rintracciabilità di un testo , del nome dell’autore o tutti gli articoli da lui scritti..). • Necessità di un formato di rappresentazione strutturato. Aggiunta al testo di marcature (tag) per renderlo strutturato. •SGML (Standard General Markup Language). Sviluppato nel 1986 da International Organization for Standardization. •Metalinguaggio: descrive un insieme di marcatori e le regole per il loro uso •HTML (Hyper Text Markup Language) e’ il primo linguaggio che deriva da SGML, semplificandone le regole. Contiene un insieme di tag e di regole per il loro uso. •Struttura di HTML: <HTML><HEAD>…. </HEAD><BODY>….</BODY></HTML>. •Successiva estensione di HTML con marcatori per la visualizzazione delle pagine (specifica del font, sua dimensione, colore del testo, dello sfondo..). •Soluzioni proprietarie (Netscape,Explorer..). •Utilizzato soprattutto come linguaggio per la descrizione fisica dei documenti (visualizzazione sullo schermo). HTML Hypertext Markup Language • HTML è costituito da un insieme di “tag” predefiniti che descrivono aspetti relativi alla presentazione del documento: tipi di caratteri, spaziatura tra le linee di testo, dimensione dei caratteri etc.. • Il linguaggio è interpretato dal browser che riproduce il documento a seconda delle indicazioni contenute nei tag. • Non è possibile utilizzare il linguaggio HTML per descrivere le strutture dei dati o più in generale per descrivere il contenuto di un documento. HTML (Hyper Text Mark-up Language) • Problema: nota la strurttura logica del materiale contenuto in una pagina (capitoli, paragrafi, figure..) come definire la struttura grafica del documento (grassetto, maiuscolo, corsivo, testo colorato, sfondo colorato etc.)? • Linguaggi di mark-up. Es: HTML • Utilizzo di tag: parola chiave racchiusa tra parentesi angolate. Es: Es:<HTML> marca l’inizio di un documento HTML. • <BR> e <P> indicano l’inizio di una nuova riga e di un nuovo paragrafo • <Body BG COLOR=Yellow> specifica che il documento avra’ come colore di fonfo il giallo •I file HTML sono documenti di testo contenenti etichette (tag) • Le etichette descrivono la struttura del documento e danno suggerimenti per l’impaginazione. • Sono divisi in due parti, preambolo (head) e corpo (body). <HTML> <HEAD> <TITLE> Questo il titolo del documento </TITLE> </HEAD> <BODY> Questo e’ il corpo del documento </ BODY > </HTML> Esempi di etichette HTML Ciao a tutti<BR>questo è un esempio</BR> di codice HTML Ciao a tutti questo è un esempio di codice HTML Intestazioni Salve!<BR><H1> Questa intestazione è importante</H1><BR> <H2> Questa un po’ meno</H2> Salve! Questa intestazione è importante Questa un po’ meno <HTML> <HEAD> <TITLE>Primo esempio </TITLE> </ HEAD> <BODY> Primo esempio di pagina web scritto in HTML. Anche se il testo va a capo nella pagina visualizzata, per andare a capo bisogna usare il tag <BR> oppure il tag <P> che oltre che andare a capo inserisce una riga vuota. </BODY> </HTML> Primo esempio di pagina web scritta in HTML. Anche se il testo va a capo, per andare a capo nella pagina visualizzata bisogna usare il tag oppure il tag che oltre che ad andare a capo inserisce una riga vuota. Altri tag. La coppia <CENTER>….>CENTER> centra nella finestra il testo contenuto all’interno. Variazione dimensionale del font: <H1>….fino a <H6> Liste non ordinate sono racchiuse tra i tag <UL>…</UL>. Liste ordinate sono racchiuse tra i tag <OL>…</OL>. In entrambi i casi gli elementi della lista sono racchiusi tra <L1>…</L1> Linea orrizzontale: <HR WIDTH=“100%”> disegna una linea larga come la finestra. <HTML> <HEAD><TITLE> Esempi di formattazione </TITLE></HEAD> <BODY BGCOLOR=Yellow> <H1><CENTER> Titolo Centrato </CENTER> </H1> <H2><CENTER> Sotto-Titolo Centrato </CENTER> </H2> <H3><CENTER> Sotto-Sotto-Titolo Centrato </CENTER> </H3> <HR WIDTH= “100”%> <H2>Lista non ordinata </H2> <UL> <LI> Primo elemento </LI> <LI> Secondo elemento </LI> <LI> Terzo elemento </LI> </UL> <HR WIDTH= “100”%> <H2>Lista non ordinata </H2> <OL> <LI> Primo elemento </LI> <LI> Secondo elemento </LI> <LI> Terzo elemento </LI> </OL> </BODY> </HTML> TITOLO CENTRATO Sotto-titolo Centrato Sotto-sotto-titolo Centrato ----------------- ---------------------------------------------------------------------------------------------------- Lista non ordinata • Primo elemento • Secondo elemento • Terzo elemento ----------------- -------------------------------------------------------------------------------------------- Lista ordinata 1. Primo elemento •Terzo elemento 2. Secondo elemento 3. Terzo elemento Inserimento figure Formati più utilizzati: JPEG (adatto ad immagini di grande formato) e GIF (adatto per immagini di piccolo formato). <IMG SRC= “Immagini/ leonardo.jpg”> oppure <IMG SRC= “Immagini/ leonardo.jpg” WIDTH=200 HEIGHT =68> Ecco una foto <IMG SRG= “incontro.gif” ALIGN=middle> diventa Ecco una foto FOTO Limiti di HTML •Linguaggio chiuso e non modificabile: insieme prefissato di tag. Orientato prevalentemente all’impaginazione grafica sul video di documenti web. •Scarsamente strutturato e con una sintassi troppo “tollerante”. Dipendenza dal tipo di browser utilizzato. •Una pagina web deve essere progettata per uno schermo dotato di determinate caratteristiche (risultati impredicibili su altri dispositivi di visualizzazione o sulla stampa su carta). •Non adatto a rappresentare strutture complesse (record di data-base, descrizione bibliografica..) • 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 ufficiale. Il risultato di tale battaglia era che un sito Web che voleva utilizzare le estensioni proprietarie di un browser rischiava di risultare inaccessibile agli altri browser. La situazione peggiorò con l'introduzione del Dynamic HTML, le cui implementazioni erano quasi totalmente arbitrarie. • In questo panorama il W3C era costretto a rincorrere le evoluzioni de facto dell'HTML e doveva scegliere quali caratteristiche standardizzare e quali invece lasciare fuori dalle specifiche ufficiali dell'HTML. • Necessità di un linguaggio di markup che offrisse maggiore libertà nella definizione dei tag pur rimanendo nell'ambito del rispetto di uno standard. Fu così che 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. Nel dicembre '97 le specifiche di XML venivano pubblicate come Proposed Recommendation. Tuttavia, 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. Esso 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. • Un documento XML è un file di testo che contiene una serie di tag, attributi e testo secondo regole sintattiche ben definite. • Struttura logica di XML Un documento XML è intrinsecamente caratterizzato da una struttura gerarchica. Esso è 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à. Queste informazioni sono chiamate attributi in forma di coppie nome/valore. • L'organizzazione degli elementi segue un ordine gerarchico che prevede un elemento principale, chiamato root element o semplicemente root o radice. • La radice contiene l'insieme degli altri elementi del documento. Possiamo rappresentare graficamente la struttura di un documento XML tramite un albero, generalmente noto come document tree • Nella figura abbiamo un root element denominato articolo che contiene una lista di elementi che rappresentano i vari paragrafi dell'articolo. Ciascun paragrafo a sua volta contiene del testo, degli esempi di codice e delle immagini. La maggior parte degli elementi di questo document tree possiede degli attributi: titolo, tipo, file. • 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 se non il buon senso e l'esperienza. • 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. La rappresentazione fisica del documento XML visto prima può essere la seguente : <?xml version=“1.0” encoding = ISO-8859-1”> <musica> <produttore> <nome> Karim</nome> <sede> Roma</sede> <catalogo> <disco anno= “1961”> <titolo>Nuvole Barocche </titolo> <artista>Fabrizio De Andrè </artista> </disco> <disco anno= “1965”> <titolo> La città vecchia </titolo> <artista>Fabrizio De Andrè </artista> </disco> …… </catalogo> </produttore> …….. </musica> <?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"> <testo> Blocco di testo del secondo paragrafo </testo> <codice> Esempio di codice </codice> <testo> Altro blocco di testo </testo> </paragrafo> <paragrafo tipo="bibliografia"> <testo> Riferimento ad un articolo </testo> </paragrafo> </articolo> • Tutti i documenti XML devono essere ben formati (well formed). Questo concetto è assimilabile in qualche modo alla correttezza ortografica di una lingua. • 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 (per esempio, la dichiarazione della versione di XML) - Ogni elemento deve avere un tag di chiusura o, se vuoti, possono prevedere la forma abbreviata (/>) - Gli elementi devono essere opportunamente nidificati, cioè i tag di chiusura devono seguire l'ordine inverso dei rispettivi tag di apertura - XML fa distinzione tra maiuscole e minuscole, per cui i nomi dei tag e degli attributi devono coincidere nei tag di apertura e chiusura anche in relazione a questo aspetto - I valori degli attributi devono sempre essere racchiusi tra singoli o doppi apici • XML offre la libertà di definire i tag a seconda delle necessità, ma perché non si generi confusione è necessario un meccanismo che ne vincoli l'utilizzo all'interno dei documenti. Si può stabilire quali tag possono essere utilizzati e come per rispecchiare una struttura logica predefinita. • In altre parole 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. Dunque 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. • Due sono gli approcci più diffusi alla creazione di grammatiche per documenti XML: DTD - Document Type Definition XML Schema. • Tutti i possibili impieghi di XML 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. 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. 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 • Da un punto di vista cronologico, il primo approccio per la definizione di grammatiche per documenti XML è rappresentato dai Document Type Definition (DTD). •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. • 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. 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. DTD (Document Type Definition) •XML non prescrive i nomi dei diversi marcatori, ma solo la sintassi generica per la loro definizione ed il loro utilizzo nella identificazione degli elementi di testo. • DTD è un insieme di specifiche che stabiliscono quali sono i nomi ammissibili per i marcatori, i nomi per i loro attributi e quali relazioni di inclusione possono sussistere tra loro. Descrive rigorosamente le possibilità strutturali del documento in esame. •Un documento XML che soddisfa le specifiche di una DTD si dice validated (convalidato) rispetto a quella DTD. Esistono degli strumenti automatici che possono verificare se un documento è consistente con quanto è prescritto dalla sua DTD. La classe dei documenti che rispettano la struttura del documento può essere definita dalla DTD seguente: <!ELEMENT musica (produttore +)><!ELEMENT produttore (nome, sede, catalogo)> <!ELEMENT nome (#PCDATA) <!ELEMENT sede (#PCDATA) <!ELEMENT catalogo (disco+)> <!ELEMENT disco (titolo,artista)> <!ATTLIST disco anno CDATA#REQUIRED> <!ELEMENT titolo (#PCDATA)> <!ELEMENT artista (#PCDATA)> Musica è l’elemento radice. Contiene una lista di uno o più produttori. Ogni produttore è composto da una tripletta di elementi :nome, sede e catalogo. I primi due (come anche in seguito titolo e artista) contengono solo testo libero (PCDATA), mentre catalogo contiene una lista di uno o più elementi disco,ognuno con un attributo anno (REQUIRED, non può essere omesso), un titolo ed il nome dell’artista. ESEMPIO <Rubrica> <Voce> <Nome> Mario Bianchi </Nome> <Numero> 0665745689 </Numero> <Indirizzo> via della viola 37 00132 Roma </Indirizzo> </Voce> .……….. <Voce> <Nome> Sandro Verdi </Nome> <Numero>0235769856</Numero> <Indirizzo>via delle rose 63 20127 Milano </Indirizzo> </Voce> <Rubrica> DTD per la rubrica <!DOCTYPE RUBRICA[ <!ELEMENT RUBRICA (VOCE+)> <!ELEMENT VOCE (NOME, NUMERO, INDIRIZZO)> <!ELEMENT NOME (#PCDATA)> <!ELEMENT NUMERO (#PCDATA)> <!ELEMENT INDIRIZZO(#PCDATA)> ]> •La DTD può essere inserita all’inizio del documento XML o memorizzata in un file diverso cui fa riferimento. •La DTD può essere privata (scritta dall’utente stesso) oppure pubblica (reperita in rete). •La DTD di un documento XML non fornisce alcuna informazione semantica: definire che un certo elemento deve essere contenuto in un documento XML non è sufficiente per chiarire la sua semantica e come l’informazione verrà utilizzata da chi riceve il documento. •Quando l’informazione viene estratta, deve esserci un programma che comprende la semantica. Standard per la descrizione di domini applicativi in XML •E’ possibile,da parte di consorzi di standardizzazione, definire tipi di documenti XML (tramite DTD e schemas) in modo che possa essere fissata la semantica di ciascuno degli elementi e attributi di un documento che viene scambiato tra le parti interessate. SBML (System Biology Markup Language)(http://sbml.org) GML ( Geography Markup Language)(http://www.opengeospatial.org) HealthCareLevel Seven (http://www.hl7.org) XBRL (XML based Business Reporting standard (http://www.xbrl.org) GJXDM (Global Justice XML Data Model) (http://it.oip.gov/jxdm). Rosetta net consortium ha definito un numero di tipi di documenti e la loro semantica per transazioni B2B nel settore IT. Ontologie Specifiche formali di concettualizzazioni che descrivono una comprensione comune di un dominio, la quale è concordata da una pluralità di soggetti e può essere deliberatamente condivisa tra persone diverse ed applicazioni diverse. Semantic web Affidare al meccanismo di scambio di dati alla base dei web services anche una descrizione dei domini realizzata tramite ontologie. Al momento è necessario (web services) concordino sull’uso dei termini della transazione che si vuole realizzare. XML offre solo interoperabilità di tipo sintattico e strutturale, ma non una reale condivisione di conoscenza, quando non vi sia già una semantica condivisa. Ontologie. Web semantico linguaggi di interrogazione e trasformazione Trasformazione •I browser non possono interpretare i tag (a differenza di HTML). • XML non consente la descrizione della presentazione grafica degli elementi logici del testo. Si utilizzano allo scopo appositi linguaggi detti fogli di stile. • Si può utilizzare uno stesso documento codificato in XML per diverse modalità di pubblicazione (carta, CD-ROM, www, audio..) cambiando il foglio di stile associato. • Il linguaggio di stile più usato è XSL (eXtensible Stylesheet Language). Linguaggio di programmazione basato su regole di trasformazione, che consentano non solo di decidere il formato grafico, ma anche di scegliere quali elementi visualizzare e in che ordine Interrogazione Xpath. Sintassi simile a quella dei pathname dei file per individuare gli elementi in base alla loro posizione nell’albero che rappresenta il documento (cioè per navigare nella struttura) Es: doc (musica.xml)//catalogo/disco Estrae tutti gli elementi <disco> contenuti in elementi <catalogo> del documento musica xml. doc (musica.xml)//catalogo/disco[artista “Bob Dylan”] doc (musica.xml)//catalogo/disco[artista “Bob Dylan”]/titolo Parsing • Parsing: Analisi delle regole sintattiche. • Un documento XML che abbia superato l’analisi sintattica si dice “well formed” (ben formato). • Esistono due tipi di parser: • SAX (Simple API for XML). Durante la lettura del file XML, ne individua i vari elementi e per ognuno di essi esegue le opportune azioni (documenti molto lunghi che non potrebbero essere contenuti in memoria centrale). • DOM (Document Object Module). Legge l’intero documento XML e lo trasforma in un albero che risiede in memoria centrale (va bene per documenti che richiedono un’elaborazione complessa, ma di dimensioni limitate). Parsing Il modo standard per codificare il documento proprio di XML consente l’utilizzo di strumenti automatici per analizzare il documento ed estrarre il suo contenuto e la sua struttura (parsing). Software di base •Browser XML. Consentano la semplice lettura di documenti XML Open source, Internet Explorer, Netscape 6. •Non sono compresi , normalmente parser di validazione del documento rispetto alla DTD . •Parser di validazione e XSLT sono disponibili come prodotti open source. •Editor XML (file di testo) : forniscono funzionalità come evidenziazione con colori diversi dei vari tag, controllo sulla coerenza sintattica, la validazione rispetto alla DTD di riferimento e la visualizzazione della struttura ad albero. •MS XML Notepad, XML Pro,ect. XML SPY (molto popolare in Italia) XML e data-base •E’ possibile esporre in formato XML il risultato delle interrogazioni. La codifica di una tabella relazionale in XML è semplice. •Esempio: Microsoft SQL Server permette di richiedere la codifica in XML del risultato di una interrogazione aggiungendo all’interrogazione la clausola “FOR XML” •E’ possibile aggiornare un data-base relazionale partendo dai dati in formato XML; quasi tutti i data base relazionali offrono programmi di utilità a questo scopo in grado di estrarre i dati con cui aggiornare le tabelle relazionali. XHTML (eXtensible Hypertext Markup Language) • Sfruttando le somiglianze sintattiche è stato definito un linguaggio di markup per le pagine web che mette a disposizione le possibilità di HTML con una sintassi XML •Semplifica la programmazione di browser per computer e cellulariSoftware di base Analogie e differenze con HTML •Entrambi derivano da SGML, ma HTML è stato specializzato nella parte relativa alla visualizzazione dei dati. •XML non è orientato alla visualizzazione dei dati, ma è un metodo assolutamente generale di descrivere i dati. •Somiglianze sintattiche ( i tag sono indicati allo stesso modo, <nome tag> </nome tag>). •A differenza di HTML, in XML i tag sono “liberi”, cioè definiti dal programmatore. •Sintassi di XML più rigida (ogni tag aperto deve essere anche chiuso, vi è differenza tra maiuscole e minuscole..). •XML ha una struttura ad albero , cioè gerarchica.