Re: JADE/DSSSL: What is allowed at the top level?

Subject: Re: JADE/DSSSL: What is allowed at the top level?
From: Brandon Ibach <bibach@xxxxxxxxxxxxxx>
Date: Fri, 5 Nov 1999 17:18:15 -0600
Quoting Arien Malec <amalec@xxxxxxxx>:
> I wanted to store styles in an alist. To do this, I defined a top-level
> variable:
> (define *style-alist* '())
> I then defined a procedure to enter styles into that variable:
> (define (add-style style-label the-style) ...
   For starters, the contents of the *style-alist* variable need to be
specified in the first define, as variables can not be redefined
during execution.   DSSSL lacks the imperative features of Scheme,
such as (set!) and friends.

> The problem is that I can't use this procedure at the top level. Nor
> could I use a "let" at the top level. I suppose this is because the
> stylesheet isn't an arbitrary Scheme script with new sorts of special
> forms, but is a language of special forms inside of which one can use
> Scheme? Correct?
   Essentially, yes.

> Now, I could move all my definitions of styles into the body of the
> define above, but I want to get my conceptual understanding correct.
> What is the general model for processing a DSSSL stylesheet? What is
> allowed at the top level? Where in the spec can I find additional
> information?
   At the top level, you're just making declarations.  The DSSSL
engine processes these declarations, then processes the root node of
the document grove by selecting a processing rule from those declared
at the top level.  If any of the rest of the document is to be
processed, it must be triggered from this rule.

> BTW: assoc doesn't seem to be defined? I'm using OpenJade 1.3
   Hmmm...  I'm pretty sure (assoc) is defined in 1.3 (though it
wasn't in earlier versions).  If not, there's a version you can place
into your stylesheet in the Procedure Library at

-Brandon :)

 DSSSList info and archive:

Current Thread