SiteMake - how this site used to be generated

Other languages


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.

DatesCreated: 2003-01-31 19:03:19 Last modification: 2009-08-18 13:10:59