<!ELEMENT text - - (front?, body, back?) >
<!ELEMENT (front,body,back) - o (div+) >
<!ELEMENT div - o (head*, (%component.seq | div) )>
There are lots of wrinkles, but that's the basic notion. Read the
chapter on Default Text Structure (DS) for details. You'll see from the
above that this allows
(a) identifiable chunks ("divs") at any depth of nesting
(b) headings whose semantics are derived from their context (a "head"
inside a div at level n is not the same as one inside a div at level
n+1)
(c) modularization -- the definition of %component.seq is dependent on
the way in which the dtd has been assembled. Some documents are not
composed of paragraphs, for example.
And three loud cheers also for those expressing the view that
non-verifiable SGML does not exist. It *is* possible to write a dtd
capable of handling very large classes of documents without
compromising either the requirement of formal verifiability or the
requirement of usability.
Lou Burnard
p.s. WILL SOMEONE PLEASE FIX THIS DAMNFOOL LISTSERV LOOP! Interesting
though this discussion group is, I do not want to get 6 copies of every
message, even the ones I write myself.