===========================================
SiteMake - come veniva generato questo sito
===========================================
:Id: SW/sitemake
:CreationDate: 2003-01-31 19:03:19
:tags: software
Le motivazioni
==============
Da quando ho scoperto `XML`_ e `XSLT`_, ho cercato un modo semplice e
comodo per gestire in maniera del tutto separata contenuto e
presentazione. All'inizio usavo `XWeb`_, ottimo programma, ma con
alcuni difetti:
* è scritto in Java (OK, OK, questa è una questione personale...)
* "trucca" i file per aggiungervi informazioni (di navigazione), e io
pensavo non fosse necessario
* non ha (aveva?) funzionalità di controllo dipendenze (tipo ``make``)
Poco dopo la versione 0.3 ho perso la sincronizzazione con la codebase
ufficiale a causa di qualche mia modifica al codice, e non ne ho più
seguiti gli sviluppi.
Dato l'ottimo livello di correttezza raggiunto dalla `libreria Gnome
XSLT`_, ho deciso di vedere se fosse possibile usare soltanto
``xsltproc`` e ``make`` per ottenere gli stessi effetti.
Ho quindi sviluppato un DTD per descrivere la struttura del sito, uno
stylesheet per convertire questa struttura in un makefile, e ho
ritoccato gli stylesheet per adeguarli alle modifiche.
Funzionamento
=============
Data una descrizione della struttura del sito, nel file
``sitemap.xml``, lo stylesheet ``compile.xsl`` genera un ``Makefile``
contenente le istruzioni per la trasformazione di tutte le pagine, e i
loro prerequisiti.
In questo modo, chiamando ``make`` vengono rigenerati soltanto i file
i cui sorgenti sono stati effettivamente modificati. Inoltre, ad ogni
stylesheet vengono passati implicitamente due parametri:
``sitemapuri`` che indica la URI della sitemap relativa allo
stylesheet, e ``active`` che è un'espressione XPath che identifica,
dentro la sitemap, il nodo corrispondente alla pagina che si sta
trasformando. In questo modo gli stylesheet possono accedere a tutte
le informazioni di navigazione utili.
Potete `consultare i sorgenti`__ del software.
.. _XML: http://www.w3.org/TR/REC-xml
.. _XSLT: http://www.w3.org/TR/xslt
.. _XWeb: http://xweb.sourceforge.net
.. _`libreria Gnome XSLT`: http://xmlsoft.org/XSLT
.. __: http://www.thenautilus.net/cgit/sitemake/