The SGML standard (ISO 8879) defines something called a 'formal public
identifier' (clause 10.2), but whether public identifiers must be FPIs
or not is defined by the SGML declaration used.
In other words: public identifiers can be whatever you want, but you
can declare them to be FPIs.
The FPI syntax is described with BNF at
<URL:http://www.tiac.net/users/bingham/sgmlsyn/sgmlsyn.htm#P79>
| and/or of how one is resolved to whatever it refers to.
The usual way to resolve a public identifier is to use a so-called
catalog file. Currently there are two syntaxes for catalog files SGML
Open Catalog files (supported by lots of SGML tools plus DXP and
xmlproc) and XCatalogs (supported by xmlproc).
<URL:http://www.sgmlopen.org/html/a401.htm>
<URL:http://www.ccil.org/~cowan/XML>
| Yet there is a lot of regularity in the examples I see. I've never
| seen anything specifying the structure used. What am I missing?
Clause 10.2 of the ISO 8879 standard. The best place to get hold of it
is Goldfarbs The SGML Handbook, which has a lot of explanatory text
supplementing the standard itself.
--Lars M.