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