# Relazione tra XML e SGML

SGML e' un meta-linguaggio, ovvero un insieme di regole generalizzate usate per creare molteplici linguaggi speciali che prendono il nome di markup language. Le applicazioni piu' note di SGML sono HTML, TIM (Telecommunication Interchange Markup); inoltre SGML viene largamente usato dalle grandi industrie di tecnologia come strumento di immagazzinamento e scambio di informazioni di qualsiasi tipo. E' poi utilizzato in tipografia (ad esempio nella stampa delle delibere) per creare il documento che poi le macchine tipografiche andranno a stampare secondo la loro interpretazione specifica delle strutture SGML.

L'SGML stesso non ha mai suscitato particolare interesse tra gli sviluppatori Web, probabilmente a causa soprattutto della sua complessita' e delle difficolta' che l'utilizzo di questo linguaggio comporta.

L'obiettivo era di includere nell'XML, solo le parti dell'SGML necessarie per la pubblicazione sul Web. XML eredita da SGML la capacita' di definire con estrema facilita' nuovi marcatori, creando di fatto dei linguaggi di markup personalizzati, mentre la complessita' e le caratteristiche opzionali che appesantivano l'SGML sono state pertanto eliminate dall'XML.

Pregi di SGML :

La sua potenza e' la flessibilita'. E' uno standard (ISO 8879:1986) che puo' essere applicato ad ogni tipo dato; e' espandibile ed e' fortemente strutturato. Queste caratteristiche lo rendono capace di risolvere problemi di elaborazione dell'informazione tra i piu' complessi, garantendo un perfetto riutilizzo dei dati. Inoltre e' non-proprietario ed indipendente dalla piattaforma.

Limiti di SGML :

Ha una struttura molto pesante, comprensiva di un gran numero di opzioni che lo rendono poco maneggevole da un eventuale software di manipolazione dei dati, quindi puo' rappresentare un grosso scoglio per i programmatori che lavorano sul Web. Comunque sia il problema piu' importante e' che SGML richiede un DTD (Document Type Definition) per l'identificazione di tutte le relazioni tra le entita' che compongono il documento SGML, e di uno Style-Sheet cioe' un foglio di stile che stabilisce il modo di rappresentare e/o visualizzare i dati e le strutture definite nel DTD. Inoltre ogni documento SGML deve necessariamente essere validato e quindi oltre ad un controllo sintattico viene controllata anche la semantica delle strutture di dati presenti nel documento (ad esempio non potra' succedere che un titolo di capitolo viene dopo il relativo sottotitolo). Si capisce quindi che in mancanza di uno di questi elementi, o in caso di corruzione dei dati, le istanze SGML saranno visualizzate come codice incomprensibile per l'utente finale. Il risultato di queste considerazioni e' che per le applicazioni sul World Wide Web (WWW) le istanze SGML non sono praticamente portabili data la loro intrinseca pesantezza e non robustezza.