RE: DSSSL engine in LISP?

Subject: RE: DSSSL engine in LISP?
From: "Frank A. Christoph" <christo@xxxxxxxxxxxxxxxxxx>
Date: Mon, 19 Jul 1999 15:53:46 +0900
Brandon Ibach wrote:
> Daniel Mahler wrote:
> > BTW Can someone define "grove plans" and "ESIS streams" <=50 words :)
> >
>    I don't know about 50 words, but...
>    A grove can represent any information.

About inasmuch as a binary string can represent any information.

>  It is made up of a
> collection of nodes.  The nodes generally form a tree structure,
> though technically, a grove is a directed graph.  Each node has a set
> of properties.  The names, data types, and other aspects of a node's
> properties are determined by the "class" of the node (which is,
> itself, a property of the node).  Some properties are "nodal", meaning
> that they refer to other nodes.  This is what forms the structure of
> the grove.
>    A "grove plan" lays out the classes and properties of nodes in a
> particular grove.  So, there is an SGML Grove Plan which includes node
> classes like "sgml-document", "element", "attribute-assignment" and
> "char".
>    For a more formal explanation of groves, read Chapter 9 of the
> DSSSL spec.  For an even more formal one than that, I believe the
> HyTime spec goes into even greater detail (right?).

Let me just add to this.

An grove is just a glorified syntax tree. The syntax is defined by the
property set. The "level of detail" is defined by the grove plan; the grove
plan decides how much of the information contained in the source makes it
into the grove. For example, usually you don't care about whitespace, and it
has no representation in a syntax tree; but you can include whitespace
information by enlarging the grove plan.

I think the choice to use the word "grove" was made because, in general, a
DSSSL implementation is supposed to be able to take as input several
documents at once: thus, there are several trees. "Forest" is the more
common term here, but people in the SGML world seem to have something
against using existing jargon.

>    My understanding is that ESIS streams don't really have to do with
> groves.  When you parse an SGML document, there is a whole range of
> information that the parser can generate.  ESIS is just a standard
> subset of this information.  I believe, if you just run the "nsgmls"
> utility (from SP), it will generate ESIS for your document.

Yes, ESIS is a standardized subset of the information in an SGML document;
in particular, it encompasses approximately the "structural" information.
This includes, for example, the element tree, but not whitespace
information; more significantly, ESIS does not distinguish between what part
of the data was given by an entity reference and what part was given
concretely. The notion of ESIS is described in Appendix B, Attachment 1 of
the SGML standard (p. 588 of the Goldfarb book).

SP can generate an easy-to-parse stream of output whose level of detail
corresponds approximately to the ESIS subset. The particular syntax of the
output has nothing to do with ESIS itself, AFAIK.

Jade's grove implementation has a fixed grove plan, which includes
approximately the ESIS information.

--FC


 DSSSList info and archive:  http://www.mulberrytech.com/dsssl/dssslist


Current Thread