An XML document can be thought of as consisting of "regions": the DTD, the document instance, and the areas in between and around them. Most of the work done in converting an XML document is done while in the document instance, but some processing, especially of processing instructions and XML 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 XML document if they are a member of an active group and if their condition, if any, succeeds.
The rules are:
In an XML 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 until the end of the document element. As a consequence, any processing instructions and XML 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 XML comments following the end of that element are part of the epilog.
If an XML prolog contains errors that prevent the parser from continuing to parse the instance, then a
prolog-in-error rule, if any, will be performed instead of a
prolog-end rule, prior to
terminating the parse.