#library

built-in shelf

Purpose

#library is a built-in stream shelf that starts out with one item for each entry in every library rule in the OmniMark program, or in a -library file at run-time. The key of each item is a public identifier, and the value of each item is the corresponding system identifier.

The #library shelf is initialized from the -library specifications on the command line only if, somewhere in the OmniMark program, there is some action that initiates SGML or XML parsing (i.e. a do sgml-parse or do xml-parse action). If there is no such markup parsing action, the -library command-line arguments are ignored. However, if there are any library rules in an OmniMark program, they are always used to initialize the #library shelf.

The default current item of the #library shelf is the lastmost item, as is the case with programmer-declared shelves.

One of the main uses of the #library stream is shown by the way the %epq and %epv format items are interpreted. For example, %epq does a keyed lookup of the entity's public identifier on the #library shelf to map the public identifier to a system identifier.

If the OmniMark program contains no external-text-entity rules, any change made to the #library stream also determines how OmniMark's built-in entity manager interprets public identifiers in referenced external text entities.