=========================================== 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/