The SGML processing part of this package is implemented in DSSSL, which is a standard [iso10179] for device independent formatting of SGML documents. DSSSL includes both a style language and a (DTD to DTD) transformation language.
I have used James Clark's Jade implementation of DSSSL. This implements the style language, but not the transformation language.[Note 13] Jade has back-ends which generate RTF, MIF and rather odd TeX requiring a specialised TeX format. Clark added an SGML-transformation back-end, as a Jade extension of the standard, which uses non-standard flow-object constructors to specify SGML elements, entities and the like. In addition, I added a back-end which generates LaTeX.
It follows that the stylesheets which implement this Starlink package are not standards-conforming, and are specific to Jade. This needs a little justification.
SGMLSpm
package (see CPAN) can parse the output of
nsgmls
. This is perfectly legitimate, but I know from
experience that it can become rather messy.[Note 14]This does not in any way affect the standards conformance of the rest of the SGML set - the various DTDs and the HyTime support - since the processing of documents is by design completely independent of the standards which define their markup.
See Appendix E.6 for online resources.
Appendix E.4 includes documentation for some of the important DSSSL stylesheets.
Notes on the code:
slcommon.dsl
stylesheet is supposed to cover
all of that - when it happens, this is typically an error, rather
than some great subtlety.slnavig.dsl
code which was the
section I began development with - there are still relics of this
here and there. There isn't a lint for Jade, so it's not trivial to
find and remove these.James Clark's Jade distribution, at
<http://www.jclark.com/jade/>
, has been frozen at Jade 1.2.1.
Jade development has now forked, with `OpenJade' being developed by
the community. This is based at
<http://jade-cvs.avionitek.com/>
. I hope to move to this
distribution when time is available.
The DSSSL source code which produces the HTML and LaTeX output has been parameterised to a limited extent. As described in Appendix E.4, it can therefore be customised either on the Jade command line, or by providing Jade with an alternative DSSSL parameters file.
Jade has a -V
option which takes a DSSSL variable name as
argument; this variable is then given the value #t
(true),
overriding any other definition in a stylesheet. Several of the
stylesheets' parameters are designed to be settable this way. You can
either give this option explicitly on a Jade command line, or pass it
to Jade via the sgml2docs
command line (see Section 6.2):
sgml2docs '--jadeflags=-Vshow-element-ids' ...
If this type of customising is insufficient, then you may take a
copy of the appropriate parameters file in $STARLINK_SGML_DIR/dsssl/sl/html/slparams.dsl
(or the
corresponding .../latex
file), call it, say
my-params.dsl
, and change what parameters
you like. The stylesheets refer to the parameters files by the public
identifiers PUBLIC "-//Starlink//TEXT DSSSL Common Parameterisation//EN"
,
PUBLIC "-//Starlink//TEXT DSSSL HTML Parameterisation//EN"
and PUBLIC "-//Starlink//TEXT DSSSL LaTeX Parameterisation//EN"
,
and these are mapped to the real files by the catalogue file in $STARLINK_SGML_DIR/dtd/CATALOG.starlink
. To direct the system to
your own parameter file instead, create a catalogue file of your own
(conventionally given the name CATALOG
), and include the
appropriate line like
(you can give a path relative to the location of the catalogue, and it's best if you quote the entry exactly as here). To direct the SGML system to this catalogue, you must include the file at the beginning of thePUBLIC "-//Starlink//TEXT DSSSL HTML Parameterisation//EN" my-params.dsl
SGML_CATALOG_FILES
environment variable:
(or use the correspondingSGML_CATALOG_FILES=./CATALOG:$SGML_CATALOG_FILES
setenv
command).