About new functionalities for OpenJade

Subject: About new functionalities for OpenJade
From: "Didier PH Martin" <martind@xxxxxxxxxxxxx>
Date: Wed, 11 Aug 1999 21:54:44 -0400
Hi,

Some of you may remember that I was working on a particular thread:

have a XML/SGML document used as an input document for DSSSL processing and
then have form this single document multiple outputs. More particularly to
have the following behavior:

the SGML/XML document contains arbitrary constructs (i.e. elements), these
constructs are associated to certain DSSSL rules that:

a) creates new groves and associated flow object tree.

For instance, the usage of such system would be to create a batch file to
process a collection of files.

I added to the reflection some new constraints from comments made by some
users in this list:

a) there is a need to aggregate several input files for a single output file
b) a need to create from a single file several output files

Also, during my research on batch files, I came to the conclusion that each
file referred in the batch processing document (expressed as a SGML/XML
document) need probably to be associated to its own DSSSL script. So for
instance, the following document may be used as a batch file:

<?xml version="1.0"?>
<batch>
<process file="usr/dir1/dir2/mydoc.xml" script="usr/dir1/dir2/mydoc.dsl"/>
etc...
</batch>

In the case where XML files respect the last W3C specifications and include
a processing instruction, the source file - script file is made with this
processing instruction. However, there is a need that this processing
instruction is overridden or that no processing instruction is present and
therefore some association has to be made. The above script may override or
create the document-script association.

What is required form the DSSSL script environment is:
a) dynamically create a new grove and an new output file
b) properly garbage collect the grove.

In the case where a batch processing file is used, then:

a) this file is transformed into a grove and processed by a DSSSL script.
b) the script creates new groves - in order no to tax too much resources,
groves should be garbage collected because, in this case, there is no
intention to aggregate or do more processing when the root
(process-children) is finished.
c) In the case of page oriented output, some modifications have to be done
on the simple-page-sequence to allow the creation of a new output file.

I came to the conclusion that to implement this in OpenJade:

a) a grove is released or garbage collected when the root element
(implicitly or explicitly) process-children recursive processing is
completed. When this occurs, the grove is released.
b) a new characteristic has to be added to the simple-page-sequence to allow
the creating of a new output file.

If both conditions are met, then a fully transportable batch processing
script is possible. SGML or XML based domain language created for batch
processing could be anything we want, as long as the OpenJade environment
provides conditions (a) grove released when the root (process-children) is
accomplished and (b) a new characteristic is added to page oriented flow
objects like the simple-page-sequence.

There is still one issue, I have no mechanisms to dynamically change the
script when several documents are processed. Actually, only one script (and
externally included scripts) can process the collection of documents. I did
not found any mechanisms (easy to implements, not too error prone, or not
too out of sight of DSSSL) to dynamically change the script based on the new
input document being processed. The actual constructs do not allow this.

Here is the status of the work done and which integrates several comments
made on this list recently.

Any comments? Your comments may help the reflections about the subject and
help create a better implementation. several minds sharing their thought is
often better than a single one. Science evolved that way ;-)

talking for the OpenJade team.
regards
Didier PH Martin
mailto:martind@xxxxxxxxxxxxx
http://www.netfolder.com


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


Current Thread