[XML-SIG] Maintaining catalogs

Gregor Hoffleit gregor@hoffleit.de
Tue, 27 Feb 2001 16:24:34 +0100


On Tue, Feb 27, 2001 at 10:11:19AM -0500, Andrew Kuchling wrote:
> For a project, I'd like to install a DTD on the system and
> automatically add its public identifier to the catalog.  Is there a
> standard place to put SGML/XML catalogs on Unix systems?
> /usr/(local)?/lib/sgml?  /etc/sgml/?

Debian has a package sgml-base that sets up some infrastructure for managing
SGML files. All SGML description files live in /usr/lib/sgml. The catalog
file is /etc/sgml.catalog, /usr/lib/sgml/catalog is a symlink pointing to
the real file /etc/sgml.catalog.

sgml-base contains a tool install-sgmlcatalog that's used to add and remove
entries to the catalog file. The README (see below) contains an example how
that's supposed to be done.

    Gregor


    




Guidelines for SGML packages
============================

Package dependencies
--------------------

All SGML packages that provide a DTD or entity description file have
to depend on "sgml-base". This package installs the "install-sgmlcatalog"
script and provides the necessary directory structure.


The SGML Description Files
--------------------------

The location of SGML description files (DTD's, entities, etc.) is
/usr/lib/sgml . All DTD's should be installed in /usr/lib/sgml/dtd ,
all entity description files should go into /usr/lib/sgml/entities .


The SGML Catalog
----------------

The SGML catalog file is /etc/sgml.catalog , but should be refered to
through the symbolic link /usr/lib/sgml/catalog . Furthermore, all
path specifications given in the SGML catalog have to be relativ
to /usr/lib/sgml .

Please don't modify the SGML catalog directly in the postinst/postrm
scripts of your package--you should use the install-sgmlcatalog script
for that.

Here is a simple example: Consider the package "foo" which provides the
DTD foo.dtd and an entity description file "foo-general". The package
will install the following files:

	/usr/lib/sgml/dtd/foo.dtd
        /usr/lib/sgml/entities/foo-general
        /usr/lib/foo/sgml.catalog
        
The sgml.catalog file will look like this:

	DOCTYPE foodoc            dtd/foo.dtd
	ENTITY %foo-general       entities/foo-general

That's the postinst script:

	#!/bin/sh
        install-sgmlcatalog --install /usr/lib/foo/sgml.catalog foo

and the postrm script:

	#!/bin/sh
        install-sgmlcatalog --remove foo

Please check the install-sgmlcatalog(8) manpage for details.


Feedback
--------

Please send me an email for bugs/suggestions/critics on these guidelines.

--
May 8, 1997
Christian Schwarz <schwarz@debian.org>