Public identifiers in the SGML declaration

The public identifiers that can appear in the SGML declaration, for the base character sets, for the capacity set, and for the concrete syntax, are processed in much the same way as with the #dtd entity. They are identified with the keywords #charset, #capacity, and #syntax, respectively. They are like the #dtd entity in most respects:

  • They are unnamed entities, and so are not matched by external-text-entity #implied but have to be mentioned explicitly.
  • They can be tested using the entity is tests together with their identifying keywords.
  • The %q format item gives the strings #charset, #capacity, and #syntax for these entities.
  • They are considered to be parameter, not general, entities.

Entities referenced by public identifiers in the SGML declaration have the following properties:

  • They always have a public identifier, and never a system identifier.
  • OmniMark's built-in entity manager provides appropriate values for many of the public identifiers that commonly appear in the SGML declaration.
  • Any text provided for entities associated with the public identifiers in the SGML declaration must have a format that is acceptable to OmniMark's built-in SGML parser.

The ISO character entities are defined in external files rather than being "hard coded" inside OmniMark's built-in entity manager, with the files divided as described in Appendix D.4 of ISO 8879, the SGML standard.