Various support files (makefile templates, makefile includes, configuration scripts) for building course handbooks

Nigel Stanger authored on 10 Jun 2013
calendar Fixed file permissions. 11 years ago
configuration Added .gitignore. 11 years ago
make-includes Fixed file permissions. 11 years ago
makefile-templates Fixed file permissions. 11 years ago
README.md Fixed a couple of typos and updated some items. 11 years ago
README.md

Required environment variables

TEACHING_SHARED This variable specifies the path to the top level of the teaching shared directory hierarchy, wherever you happen to have put it (e.g., on my machine this is set to /Users/nstanger/Documents/Teaching/Shared).

ALL_PAPERS_ROOT This variable specifies the path to the top level directory for all papers taught, i.e., the directory that contains the individual paper directory hierarchies. This assumes that you have all your current paper directories contained within a single hierarchy. If you don’t, you’re in trouble ☺. For example, on my machine this is set to /Users/nstanger/Documents/Teaching (which contains symbolic links to the current directories for INFO212, INFO321, ...).

HANDBOOK_INSTALL_ROOT This variable specifies the path to the top level directory on the web server, under which the files for this paper will be installed (that is, the directory that contains the individual paper directory hierarchies). Under Windows this would typically point to \\INFO-NTS-12\DBCourses$ (but this may require munging depending on how UNC paths are dealt with). On my machine this is set to /Volumes/SHARED/Teaching/DatabaseCourses/Web_Deployment, as the share gets mounted under /Volumes/SHARED.

XSLT This variable specifies your preferred XSLT processor. Currently the valid options are saxon for SAXON 6.5.x, saxon-b for SAXON-B 9.x, xalan-c for the C++ implementation of Xalan and xalan-j for the Java implementation of Xalan (weirdly, the latter two have different command line options). For example, on my machine this is set to saxon-b (this is also the recommended setting, as the others don’t support XSLT 2.0 as well, if at all).

Including content files

Content files are included using XML includes. Source files are processed by xmllint (a utility that comes with libxml) to produce an intermediate XML file that contains all of the included fragments. This is then processed normally. Paths in XML includes should always be relative to the current directory, since we can’t predict where in the file system hierarchy the source will be.

A typical include might looks something like this:

<xi:include href="../../../Tutorials/Foo/Bar.xml” xpointer=”xpointer(/document/*)" />

All fragments are represented by an XML document of class “fragment”. The outermost <document> element is stripped off by the XPath expression in the xpointer attribute.