An SGML document can be thought of as consisting of "regions": the SGML Declaration, the DTD, the document instance, and the areas in between and around them. Most of the work done in converting an SGML document is done while in the document instance, but some processing, especially of processing instructions and SGML comments, is done while in other regions.
OmniMark has a set of markup rules that are performed at the boundaries between these regions, and that allow such distinctions to be made. Any of these rules can contain conditions and local-declarations. They are each performed at the appropriate point in parsing an SGML document if they are a member of an active group, and if their condition, if any, succeeds.
The rules are:
A note on terminology: In an SGML document the prolog ends and the document starts immediately prior to the start of the document element (that is the topmost element in the instance). The document instance continues to the end of the SGML document. As a consequence, any processing instructions and SGML comments between the DTD and the start of the first element in the instance are officially part of the prolog, and any processing instructions or SGML comments following the end of that element are part of the epilog.