Mulberry home page

DSSSList Archive

Mulberry Home Page
Previous by Date
Next by Date
Previous by Thread
Next by Thread
Index by Thread
Index by Date
Index by Subject
Index by Author

Re: Design for (interactively) customizable DSSSL stylesheets

From: James Clark <>
Date: Sat, 29 Mar 1997 15:27:31 +0700
At 11:05 28/03/97 -0500, Paul Prescod wrote:

>I think that James' idea would work fine as the DSSSL equivalent. It
>isn't clear to me where he is proposing the *parameter values* of those
>parameters should go: on a command line, in a %usermods;, in a file
>pre-pended to the DSSSL script? It matters, because it would change how
>the script itself is written: 
>Does it need to import %usermods;? 
>Does it need to be missing a DOCTYPE so that the relevant values can be
>Is it rather a fully valid DSSSL spec. with "default values" in a
>special section that is erased and changed? 
>Is it a fully valid DSSSL spec *except* that certain things are not

The customization would go in a separate file like this:

<!doctype style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!entity base system "docbook.dsl" cdata dsssl>
<style-specification use=x>
(define %visual-acuity% "large-type")
<external-specification id=x document=base>

I think this sort of approach could be extended to allow a user friendly
style-sheet creation mechanism.  You would have a hand-written library of
DSSSL definitions.  These would include:

- procedures that can be used on the RHS of construction rules (things like
$component$ or $paragraph$ in Jon's Docbook style sheet)

- definitions of variables that are used by those procedures

- procedures for numbering, cross-referencing and so on

Associated with this library would be a library description encoded in SGML
or XML which would describe the procedures and variables provided by the
library in a manner which would allow a style sheet editor to provide a user
friendly interface for creating a stylesheet that used the library. The
stylesheet created (and edited) by the stylesheet editor would have a very
restricted format: it would override variable definitions in the library,
and it would have element rules whose construction rules just called
procedures in the library.