<!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>&nbsp;</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>&nbsp;</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.&nbsp; 
Tony Graham of the DSSSL list would be a good contact in this 
regard.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=2>2) People often put pagination information in processing 
instructions.&nbsp; 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>&nbsp;</DIV>
<DIV><FONT size=2>3) If you find you have many of these concurrent structures, 
you may opt for &quot;point markup&quot;, 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&nbsp;</FONT></DIV>
<DIV><FONT size=2></FONT><FONT color=#000000 size=2>&lt;!DOCTYPE document 
[</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT text ( #PCDATA | 
point)*&gt;</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT point EMPTY&gt;</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp; &lt;!ATTLIST point&nbsp; id ID #REQUIRED 
&gt;</FONT></DIV>
<DIV><FONT size=2></FONT><FONT color=#000000 size=2></FONT>&nbsp;</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.&nbsp; 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>&nbsp;</DIV>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp; <FONT 
color=#000000>&lt;!ELEMENT document (tree+, text)&gt;</FONT></FONT></FONT><FONT 
size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT color=#000000><FONT size=2></FONT></FONT><FONT 
size=2>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT tree&nbsp;&nbsp;&nbsp;&nbsp; (start, 
tree*, end)&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp; &lt;!ELEMENT ( start | 
end ) EMPTY &gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT 
size=2>&nbsp;&nbsp;&nbsp; &lt;!ATTLIST&nbsp;&nbsp;&nbsp; 
tree&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type 
NMTOKEN #IMPLIED &gt;</FONT></DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT 
size=2>&nbsp;&nbsp;&nbsp; &lt;!ATTLIST (start | end )&nbsp;&nbsp; refid IDREF 
#REQUIRED &gt;</FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>]&gt;</FONT></FONT><FONT 
size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp; 
&lt;document&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;tree name=&quot;pages&quot;&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;start refid=&quot;x1&quot;/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000 size=2><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;tree name=&quot;page1&quot;&gt;</FONT>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;start refid=&quot;x1&quot;/&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;end refid=&quot;x4&quot;/&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/tree&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000 size=2><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;tree name=&quot;page2&quot;&gt;</FONT>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;start refid=&quot;x4&quot;/&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;end refid=&quot;x5&quot;/&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/tree&gt;</FONT></FONT></FONT></FONT><FONT size=2></FONT></DIV></DIV></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></FONT><FONT 
size=2><FONT color=#000000>&nbsp;&nbsp;&nbsp; </FONT><FONT color=#000000>&lt;end 
refid=&quot;x5&quot;/&gt;</FONT></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/tree&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000 face="" size=2></FONT>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;tree name=&quot;p&quot;&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;start refid=&quot;x2&quot;/&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;tree name=&quot;b&quot;&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;start refid=&quot;x3&quot;/&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;end refid=&quot;x5&quot;/&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/tree&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;end refid=&quot;x5&quot;/&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/tree&gt;</FONT></FONT><FONT size=2></FONT></DIV></DIV>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;text&gt;&lt;point id=&quot;x1&quot;/&gt;here is &lt;point 
id=&quot;x2&quot;/&gt;some&lt;point id=&quot;x3&quot;/&gt;</FONT></FONT><FONT 
size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
data &lt;point id=&quot;x4&quot;&gt;of no interest.&lt;point 
id=&quot;x5&quot;/&gt;&lt;/text&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2>&nbsp;&nbsp;&nbsp; 
&lt;/document&gt;</FONT></FONT><FONT size=2></FONT></DIV>
<DIV><FONT color=#000000 size=2></FONT>&nbsp;</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>&nbsp;</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>&nbsp;&nbsp;&nbsp; &lt;pages&gt;&lt;page1&gt;here is some</FONT>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
data &lt;/page1&gt;&lt;page2&gt;of no 
interest.&lt;/page2&gt;&lt;/pages&gt;</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>&nbsp;&nbsp;&nbsp; &lt;p&gt;here is 
&lt;b&gt;some&lt;/b&gt;</FONT>
<DIV><FONT color=#000000><FONT 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
data of no interest.&lt;/p&gt;</FONT></FONT></DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT 
size=2></FONT>&nbsp;</DIV>
<DIV><FONT color=#000000><FONT size=2></FONT></FONT><FONT 
size=2></FONT>&nbsp;</DIV></DIV>
<DIV><FONT size=2><FONT size=2>Rick Jelliffe</FONT></FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>Author, &quot;The XML &amp; SGML Cookbook&quot;, out in May 
from Prentice Hall.</FONT></DIV></BODY></HTML>