Go to the previous, next section.

Installing PSGML

Place the *.el and the *.elc files in a directory where Emacs can find it. If you obtained PSGML without *.elc files, you can create them by letting Emacs byte compile the *.el files (use M-x byte-compile-file). Parsing SGML in Emacs Lisp is slow and needs all the speed it can get.

Put the following line in your .emacs:

(autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t )

Modify search path for external entities

SGML can refer to external files (really entities) either with public identifiers or with system identifiers. PSGML uses the variable sgml-public-map to map public identifiers to file names.

A public identifier looks like

PUBLIC "ISO 8879:1986//ENTITIES Added Latin 1//EN"

where "ISO 8879:1986" is the owner, "ENTITIES" is the text class and "Added Latin 1" is the text description (and "EN" is language). The default path would look for this file in

/usr/local/lib/sgml/ISO_8879:1986/entities/Added_Latin_1

Note: blanks are transliterated to `_' (and also `/' to `%') and the text class is down cased.

The default for sgml-public-map giving the above path is

("/usr/local/lib/sgml/%o/%c/%d")

The sgml-public-map variable can contain a list of file name templates where owner is substituted for `%O', public text class for `%C', and public text description for `%D'. The text class will be converted to lower case and the owner and description will be transliterated according to the variable sgml-public-transliterations. The templates in the list is tried in order until an existing file is found. An element can also be a dotted pair (regexp . filename), the filename is a string treated as above, but only if the regular expression, regexp, matches the public identifier.

A system identifier looks like

SYSTEM "htmlplus.dtd"

where "htmlplus.dtd" is a system specific identifier. PSGML treats system identifiers as file names and looks for them in the directories listed in the variable sgml-system-path (default is either in current directory or in `~/sgml').

Go to the previous, next section.