We are reposting this document in case people would like to revisit this. All credits go to R. Alexander Milowski.
The DSSSL Developer’s Toolkit (dsssltk) provides a means for different DSSSL implementations in Java to share components such as parsers, transformation engines and flow object semantics. The toolkit contains three Java packages: dsssl.engine, dsssl.grove, and dsssl.flowobject.
The dsssl.engine package:
The dsssl.engine package provides access to the DSSSL processor. It allows compilation of DSSSL expressions, style sheets, and transformations into Java objects.
The dsssl.grove package:
This package provides access to the data model of an SGML or XML document. It allows parsers to access a construct called a “Grove Constructor” which allows parsers to be abstracted from actual grove implementations. In this way, one parser for a particular data type (e.g. SGML) can populate different grove implementations.
The dsssl.flowobject package:
This package provides access to the resulting formatted document after a style has been applied. In addition, it provides and “Flow Object Constructor” interface that allows style engines to operate on different flow object implementations. It also contains the infrastructure for “loadable” flow object semantics.
A Standards Effort:
The DSSSL Developer’s Toolkit was developed by Copernican Solutions Incorporated as part of the development of the Seng/DSSSL engine. It was developed as a separate part to allow interchange of DSSSL applications in Java and is intended to be standardized. Starting in June of 1997 we will be working with other developers in the industry to expand this toolkit and standardize it further.
The DSSSL Developer’s Toolkit provides an abstract interface for accessing groves, flow object trees, and DSSSL processors. It is intended to provide a standard API for DSSSL implementations in Java.
There are three basic packages: dsssl.grove, dsssl.flowobject, and dsssl.engine. Each of these packages represents a translation of the DSSSL standard into Java considering the following goals:
- Within an implementation, different components for groves, flowobjects, and engines should be able to be mixed.
- Groves and flowobject trees may need to be stored in more than one place.
- Grove production is separate from parsing of data formats such as SGML or XML.
- Flow object definitions need to be loadable.