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.