=============================================
SiteMake - how this site used to be generated
=============================================
:Id: SW/sitemake
:CreationDate: 2003-01-31 19:03:19
:tags: software
Motivations
===========
Ever since I discovered XML_ and XSLT_, I've been looking for an easy
and confortable way to keep content and presentation totally
separate. I started using XWeb_, which is a good program, but with
some problems:
* it's written in Java (OK, OK, this is personal taste)
* it "tweaks" files to add (navigational) information, and I thought
it was not necessary
* it does (did?) not have dependency control functionalities (like
``make``)
Shortly after version 0.3 I lost sync with the official codebase
because of some modifications of mine, and I did not follow later
developments.
Given the high level of correctness attained by the `Gnome XSLT
library`_, I decided to try and look if it was possible to use just
``xsltproc`` and ``make`` to obtain the same results.
So I developed a DTD to describe the structure of the site, a
stylesheet to convert this structure into a makefile, and retouched
the stylesheets to keep them working after the modifications.
How it works
============
Given a description of the site's structure in the file
``sitemap.xml``, the stylesheet ``compile.xsl`` generates a
``Makefile`` containing rules for the transformation of every page,
along with their prerequisites.
In this way calling ``make`` causes the regenaration of only those
files whose source have actually been modified. Moreover, each
stylesheet implicitly gets two parameters: ``sitemapuri``
containing the URI of the sitemap relative to the stylesheet, and
``active`` which is an XPath expression indicating, inside
the sitemap, the node corresponding to the page being
transformed. This way the stylesheets can access all relevant
navigational information.
You can `consult the software's sources`__.
.. _XML: https://www.w3.org/TR/REC-xml
.. _XSLT: https://www.w3.org/TR/xslt
.. _XWeb: https://xweb.sourceforge.net
.. _`Gnome XSLT library`: https://gitlab.gnome.org/GNOME/libxslt/-/wikis/home
.. __: https://www.thenautilus.net/cgit/sitemake/