12. SGML and SGML-Tools

Nei paragrafi precedenti, ho tralasciato gran parte della storia su DocBook. XML infatti ha un fratello maggiore, chiamato SGML o Standard Generalized Markup Language.

Fino a metà del 2002, nessuna discussione su DocBook sarebbe stata completa senza una lunga escursione su SGML, le differenze tra SGML e XML e una accurata descrizione della toolchain SGML DocBook. Ora la vita è molto più semplice; una toolchain XML DocBook è ora disponibile come open-source, funziona bene come la toolchain di SGML ed è molto più facile da usare. Se pensate che non avrete mai a che fare con vecchi documenti redatti in SGML DocBook, potete tranquillamente saltare il resto di questa sezione.

12.1. DocBook SGML

Originariamente DocBook nasce come una applicazione SGML, e c'era anche un progetto di toolchain SGML DocBook, che ora è praticamente morto. Ci sono alcune piccole differenze tra i DTD DocBook SGML e i DTD DocBook XML, ma per una discussione introduttiva possiamo tranquillamente ingorarle. L'unica differenza evidente all'utente è che i tag SGML senza contenuto non hanno bisogno del trailing slash (/) in chiusura del tag. (L'utilizzo del trailing slash in XML rende il lavoro del parser molto più facile perché non c'è bisogno che il programma conosca il DTD e quindi quali tag aperti hanno bisogno di chiusura.)

Tutte le versioni di HTML fino alla 4.01 (quindi antecedenti a XHTML) erano esse stesse applicazioni di SGML. Anche TEI era nato originariamente come applicazione SGML. I gruppi che lavoravano su questi tre DTD sono passati all'XML per lo stesso motivo degli sviluppatori di DocBook: è decisamente molto più semplice. L'SGML era estremamente complesso, sostanzialmente ingestibile. Le specifiche sono raccolte in ben 150 pagine dense di regole e non c'è ancora un software che le abbia mai implementate tutte.

La toolchain che avevo mostrato prima era molto semplificato: mostrava solo la toolchain di XML. Ecco qui riportata la versione storicamente corretta:

La toolchain DSSSL è quella che elabora i documenti SGML DocBook. È sotto il suo controllo che un documento in formato SGML passa attraverso uno o due motori per i fogli di stile, Jade e OpenJade. Questi lo trasformano in un formato tipo TeX-macro markup, che verrà successivamente elaborato dal pacchetto JadeTeX per passarlo in DVI e successivamente in Postscript.

12.2. SGML tools

Il progetto docbook-tools fornisce strumenti in open-source per convertire DocBook SGML in HTML, Postscript ed altri formati. Questo pacchetto è fornito con Red Hat ed altre distribuzioni Linux. È mantenuto da Mark Galassi.

Jade è un motore utilizzato per applicare fogli di stile DSSSL a documenti SGML. È mantenuto da James Clark.

OpenJade è un progetto comunitario iniziato poiché i fondatori ritenevano che la manutenzione di Jade da parte di James Clark fosse troppo saltuaria. I programmi di docbook-tools utilizzano OpenJade.

PassiveTeX è il pacchetto di macro di LaTeX che xmlto utilizza per produrre DVI da XML-DocBook. JadeTex è il pacchetto di macro di LaTeX che OpenJade utilizza per produrre DVI da SGML-DocBook.

12.3. Ecco perché l'SGML DocBook è morto

La toolchain DSSSL è praticamente morta, a meno di nuovi sviluppi futuri. La toolchain XSLT ha raggiunto lo stato di produzione a metà del 2002; una versione operativa è stata distribuita con la RedHat 7.3. È su questo che gli sviluppatori di Docbook stanno spendendo la maggior parte dei loro sforzi.

Sono tre le ragioni per cui si è passati a XML. Primo, ci si è resi conto che l'SGML è troppo complicato da usare; secondo, il DSSSL ha finito per essere insostenibile da utilizzare; terzo, alcune parti fondamentali della toolchain DSSL si sono rivelate troppo deboli e irrimediabilmente ingarbugliate.

Rispetto all'SGML, l'XML ha un insieme di funzioni più ridotto, ma sufficiente per la maggior parte dei suoi scopi e sicuramente più facili sia da capire e sia da implementare nei parser che le interpretino. Gli strumenti di elaborazione SGML (come ad esempio i validatori parser) dovevano contenere regole per la gestione di numerose caratteristiche che i DocBook e gli altri sistemi di testo a markup non utilizzano affatto. La rimozione di tutte queste caratteristiche supplementari ha reso molto più semplice l'XML e molto più veloci i relativi strumenti di elaborazione.

Il linguaggio utilizzato per dedscrivere i DTD SGML è talmente spinoso e proibitivo da rendere la scrittura di un DTD SGML una sorta di arte oscura. I DTD XML invece possono essere descritti in un dialetto di XML stesso. Non c'è quindi alcun bisogno di avere un linguaggio diverso per scrivere DTD. Una descrizione XML di un DTD XML è detta schema. Il termine DTD verrà probabilemente soppiantato proprio da quest ultimo, col modificarsi degli standard.

Al di là di tutto, dobbiamo dire che la toolchain DSSSL è morta proprio perché il DSSSL e il linguaggio di descrizione dello stylesheet SGML della toolchain, sono troppo arcani per molti, e ha reso i fogli di stile troppo difficili da scrivere e modificare. (Era un dialetto Scheme. Il vostro autore, un conoscitore di LISP da lungo tempo, ha scosso la testa in un attimo di stupore, al pensiero che questo potesse allontanare la gente)

I fan di XML amano riassumere tutto questo con una frase: "XML: è più buono e appesantisce meno".

12.4. SGML-Tools

SGML-Tools era il nome di un DTD utilizzato dal Linux Documentation Project, sviluppato quale anno fa quando le attuali toolchain DocBook non esistevano. Il linguaggio SGML-Tools markup era più semplice di DocBook, ma anche meno flessibile. La toolchain formatter/DTD/stylesheet originale di SGML-Tools è stata abbandonata per molto tempo, ma il suo successore SGML-tools Lite è ancora mantenuto.

Il LDP sta abbandonando l'SGML-Tools in favore di DocBook, ma è possibile ancora incappare in qualche vecchio HOWTO. Questi possono essere riconosciuti dalla voce nell'intestazione "<!doctype linuxdoc system>". Se vi capita tra le mani, convertitelo in un XML DocBook e date alla vecchia versione una veloce sepoltura.