<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>
<META content=text/html;charset=iso-8859-1 http-equiv=Content-Type><!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<META content='"MSHTML 4.72.2106.6"' name=GENERATOR>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT color=#000000 size=2>Here are three random things which may be useful
to consider.</FONT></DIV>
<DIV><FONT color=#000000 size=2></FONT> </DIV>
<DIV><FONT size=2>1) The first is that DSSSL allows you to have external
functions. So even though DSSSL itself has no way to query the pagination
system, DSSSL does allow you to stick in your own queries or functions. You can
do all sorts of tricks with these. I dont know to what extent JADE supports
this, though. One trouble with stream-based SGML processors is that they often
have an output buffer (or are in a pipe) so unless you can flush the output
buffers, your SGML processor may be left stranded if it waits for some feedback
from a downstream program.</FONT></DIV>
<DIV><FONT size=2></FONT> </DIV>
<DIV><FONT color=#000000 size=2>A DSSSL system built on top of a general purpose
Scheme would be most likely to cope with feedback from layout engines.
Tony Graham of the DSSSL list would be a good contact in this
regard.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=2>2) People often put pagination information in processing
instructions. Or the information can be kept in an external database with,
for example, HyTime locators. If you can decide in advance to only break pages
on paragraph boundaries, then you can piggyback the pagination information on
top of element markup.</FONT></DIV>
<DIV><FONT size=2></FONT> </DIV>
<DIV><FONT size=2>3) If you find you have many of these concurrent structures,
you may opt for "point markup", which is rather extreme, and would be
an interesting challenge for some stream-based processors. In point markup, your
main text is just marked up using </FONT></DIV>
<DIV><FONT size=2></FONT><FONT color=#000000 size=2><!DOCTYPE document
[</FONT></DIV>
<DIV><FONT size=2> <!ELEMENT text ( #PCDATA |
point)*></FONT></DIV>
<DIV><FONT size=2> <!ELEMENT point EMPTY></FONT></DIV>
<DIV><FONT size=2> <!ATTLIST point id ID #REQUIRED
></FONT></DIV>
<DIV><FONT size=2></FONT><FONT color=#000000 size=2></FONT> </DIV>
<DIV><FONT color=#000000 size=2>Then you have as separate element trees for each
kind of structure: these trees probably contain no character data of their own,
just IDREFs to the start and end of their range. In this way you can
represent concurrent, overlapping hierarchies in SGML. For </FONT><FONT
size=2>example:</FONT></DIV>
<DIV><FONT color=#000000 size=2></FONT> </DIV>
<DIV><FONT color=#000000><FONT size=2> <FONT
color=#000000><!ELEMENT document (tree+, text)></FONT></FONT></FONT><FONT
size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT color=#000000><FONT size=2></FONT></FONT><FONT
size=2> <!ELEMENT tree (start,
tree*, end)></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2> <!ELEMENT ( start |
end ) EMPTY ></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT
size=2> <!ATTLIST
tree type
NMTOKEN #IMPLIED ></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT
size=2> <!ATTLIST (start | end ) refid IDREF
#REQUIRED ></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>]></FONT></FONT><FONT
size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>
<document></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>
<tree name="pages"></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
<start refid="x1"/>
</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000 size=2><FONT
size=2>
<tree name="page1"></FONT>
<DIV><FONT color=#000000><FONT
size=2>
<start refid="x1"/></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
<end refid="x4"/></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
</tree></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000 size=2><FONT
size=2>
<tree name="page2"></FONT>
<DIV><FONT color=#000000><FONT
size=2>
<start refid="x4"/></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
<end refid="x5"/></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
</tree></FONT></FONT></FONT></FONT><FONT size=2></FONT></DIV></DIV></DIV>
<DIV><FONT color=#000000><FONT
size=2> </FONT></FONT><FONT
size=2><FONT color=#000000> </FONT><FONT color=#000000><end
refid="x5"/></FONT></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>
</tree></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000 face="" size=2></FONT>
<DIV><FONT color=#000000><FONT size=2>
<tree name="p"></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
<start refid="x2"/></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
<tree name="b"></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
<start refid="x3"/></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
<end refid="x5"/></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
</tree></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
<end refid="x5"/></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>
</tree></FONT></FONT><FONT size=2></FONT></DIV></DIV>
<DIV><FONT color=#000000><FONT size=2>
<text><point id="x1"/>here is <point
id="x2"/>some<point id="x3"/></FONT></FONT><FONT
size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT
size=2>
data <point id="x4">of no interest.<point
id="x5"/></text></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>
</document></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000 size=2></FONT> </DIV>
<DIV><FONT size=2>This structure has the advantage of neatness, and provides a
lot of modeling power</FONT></DIV>
<DIV><FONT size=2>for just one extra level of indirection. If you used HREF
rather than REFID, you can use</FONT></DIV>
<DIV><FONT size=2>external point markup too.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT color=#000000><FONT size=2>The effect, of course, is to have
concurrently</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT
size=2> <pages><page1>here is some</FONT>
<DIV><FONT color=#000000><FONT
size=2>
data </page1><page2>of no
interest.</page2></pages></FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT
size=2>and</FONT></DIV></DIV>
<DIV><FONT size=2> <p>here is
<b>some</b></FONT>
<DIV><FONT color=#000000><FONT
size=2>
data of no interest.</p></FONT></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT
size=2></FONT> </DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT
size=2></FONT> </DIV></DIV>
<DIV><FONT size=2><FONT size=2>Rick Jelliffe</FONT></FONT></DIV>
<DIV><FONT size=2></FONT> </DIV>
<DIV><FONT size=2>Author, "The XML & SGML Cookbook", out in May
from Prentice Hall.</FONT></DIV></BODY></HTML>