|
Tutti conoscono bene o male l'HTML, il formato di dati che viene utilizzato
per le pagine Web (talvolta definito a sproposito un "linguaggio di programmazione").
È anche abbastanza risaputo che l'HTML è una applicazione dell' SGML,
ma il più delle volte quando si arriva a chiedere cosa è l'SGML cominciano
a comparire i primi scuotimenti di spalle.
Esaminiamo allora lo Standard General Markup Language e chiariamo in che
senso l'HTML è una applicazione dell'SGML. Questo discorso si applica in
toto all'XML, che è una versione semplificata dell'SGML, e di conseguenza
all'obiettivo del nostro articolo. L'SGML è un formalismo per descrivere
formati di marcatura di testo. Non è dunque un linguaggio, è un meta-linguaggio:
utilizzando l'SGML si descrive un insieme di marcatori e le regole per
l'uso. Questi marcatori poi vengono utilizzati per costruire un documento.
A che serva una cosa del genere è presto detto: immaginiamo di avere
molti documenti di tipo diverso. Per esempio un grosso organismo come il
DoD (Department of Defense) degli USA (casualmente uno dei maggiori sponsor
dell'SGML) potrebbe avere il problema di dover archiviare in maniera consistente
migliaia e migliaia di documenti di tipo diversissimo: articoli di programmazione
in ADA come pure trattati di strategia militare. Per esempio in un articolo
di programmazione ci saranno parti ricorrenti come titolo, autore, titoletto
di paragrafo, listatini.
Archiviare i documenti in maniera consistente significa anche riuscire
a sottoporre ad elaborazione un enorme database di documenti. Deve essere
possibile effettuare ricerche, per esempio, per titolo, o autore, ma anche
arrivare a ottenere tutti i listati ADA scritti da un dato autore. Non
basta un semplice formato ASCII per fare una cosa del genere (per esempio,
come si fa a rintracciare all'interno di in un testo il nome dell'autore
o il listato senza apposite convezioni di marcatura?), occorre un formato
più strutturato. Un formato che aggiunga al testo delle marcature, o tag,
per renderlo strutturato. Si può quindi immaginare di archiviare gli articoli
di programmazione utilizzando un formato come quello mostrato in Figura
1.
Questo metodo di marcare i documenti, qualcono noterà, assomiglia all'HTML,
solo che i marcatori sono diversi. Esatto! In realtà,lo scopo dell'SGML
è quello di descrivere il tipo del documento, ovvero:
i tag che può contentere,
le entità del testo: caratteri e altri elementi equivalenti ai caratteri:
per esempio in HTML >; è l'entità per inserire il simbolo di maggiore
nel testo,
Le regole di "buona formazione": per esempio in HTML un documento correttamente
ha la forma <HTML><HEAD>…</HEAD><BODY>…</BODY></HTML>
Una infinità di altri dettagli più o meno importanti.
Con l'SGML si può descrivere qualunque tipo di document: per far questi
si usa l'SGML per scrivere un DTD (Document Type Descriptor). I parser
di SGML utilizzano il DTD per sapere come trattare documenti. Ll'HTML non
è che un particolare insieme di marcatori descritto da una specifica in
SGML. Esistono i DTD per l'HTML 2, per l'HTML 3, per l'HTML 3.2, e così
via (ognuno di questi standard utilizza tag diversi), quindi l'HTML è una
applicazione dell'SGML in quanto i documenti sono conformi alle regole
dell'SGML e possono essere elaborati da sistemi che lo gestiscono.
In origine si intendeva arrivare ad un Web che supportasse il puro SGML;
in attesa di sviluppare browser adeguati (l'SGML è molto complesso) venne
utilizzata una particolare marcatura adatta allo sviluppo di documenti
ipertestuali, l'HypertText Markup Language. Notare che l'HTML in origine
doveva descrivere la pagina molto in astratto, in modo da consentire in
un secondo tempo la visualizzazione, che veniva personalizzata a seconda
del browser che si disponeva. L'HTML 2 è molto schematico: intestazioni,
paragrafi, liste puntate e numerate e poco più. Lo stretto necessario per
andare oltre il testo semplice senza arrivare alla descrizione fisica della
pagina.
Netscape però a suo tempo ha cominciato ad estendere il browser in maniera
proprietaria, aggiungendo tag per abbellire le pagine che venivano visualizzati
bene con il suo browser. Per questo motivo, l'HTML si è arricchito sempre
di più di elementi che ne snatuaravano lo scopo: il semplice tag CENTER
è un elemento di descrizione fisica di quello che deve essere una descrizione
logica del documento. La descrizione della visualizzazione doveva essere
affidata agli stili, cosa che è stata in parte recuperata per il Web con
l'introduzione dei Cascading Style Sheet. Bene o male che sia, le cose
sono andate così, e l'HTML invece di rimanere un formato di descrizione
logica e astratta dei documenti (al quale se ne dovevano affiancare altri
più specifici per le varie esigenze come articoli scientifici, testi di
programmazione o ricettari), è stato arricchito allo spasimo diventando
un completo formato di descrizione fisica dei documenti, con tanto di tag
per specificare il font, la dimensione, il colore del testo o le perfino
la gif dello sfondo.
|