Name

xmlcatalog — Command line tool to parse and manipulate XML or SGML catalog files.

Synopsis

xmlcatalog [[--shell] | [--create] | [--add type orig replace] | [--del values] | [--noout] | [--verbose]] [catalogfile] [entities]

Introduction

xmlcatalog is a command line application allowing users to monitor and manipulate XML and SGML catalogs. It is included in libxml2.

Its functions can be invoked from a single command from the command line, or it can perform multiple functions in interactive mode. It can operate on both XML and SGML files.

Command Line Options

--shell filename
Run a shell allowing interactive queries on catalog file filename.
--create filename
Create a new XML catalog. Outputs to stdout, ignoring filename unless --noout is used, in which case it creates a new catalog file filename.
--add 'type' 'orig' 'replace' filename

Add an entry to catalog file filename. type indicates the type of entry. Possible types are 'public', 'system', 'uri', 'rewriteSystem', 'rewriteURI', 'delegatePublic', 'delegateSystem', 'delegateURI' and 'nextCatalog'. 'orig' is the original reference to be replaced, and 'replace' is the URI of the replacement entity to be used. The --add option will not overwrite filename, outputing to stdout, unless --noout is used. The --add will always take three parameters even if some of the XML catalog constructs will have only a single argument.

If the --add option is used following the --sgml option, only a single argument, a filename, is used. This is used to add the name of a catalog file to an SGML supercatalog, a file that contains references to other included SGML catalog files.

--del 'values' filename
Remove entries from the catalog file filename matching 'values'. The --del option will not overwrite filename, outputing to stdout, unless --noout is used.
--noout
Save output to the named file rather than outputing to stdout.
--sgml
Uses SGML Super catalogs for --add and --del options
-v or --verbose
output debugging information.

Shell Commands

Invoking xmlcatalog with the --shell filename option opens a command line shell allowing interactive access to the catalog file identified by filename. Invoking the shell provides a command line prompt after which commands can be entered.

public 'PublicID'
Execute a public identifier lookup of the catalog entry for 'PublicID'. The corresponding entry will be output to the command line.
system 'SystemID'
Execute a public identifier lookup of the catalog entry for 'SystemID'. The corresponding entry will be output to the command line.
add 'type' 'orig' 'replace'
Add an entry to the catalog file. type indicates the type of entry. Possible types are 'public', 'system', 'uri', 'rewriteSystem', 'rewriteURI', 'delegatePublic', 'delegateSystem', 'delegateURI' and 'nextCatalog'. 'orig' is the original reference to be replaced, and 'replace' is the URI of the replacement entity to be used.
del 'values'
Remove the catalog entry corresponding to 'values'.
dump
Print the current catalog.
debug
Print debugging statements showing the steps xmlcatalog is executing.
quiet
Stop printing debugging statements.
exit
Quit the shell.

Return values

xmlcatalog's return codes provide information that can be used when calling it from scripts.

0: normal

1: Failed to remove an entry from the catalog

2: Failed to save to the catalog, check file permissions

3: Failed to add an entry to the catalog

4: Failed to lookup and entry in the catalog

Catalogs

Catalog behavior can be changed by redirecting queries to the user's own set of catalogs. This can be done by setting the XML_CATALOG_FILES environment variable to a list of catalogs. An empty one should deactivate loading the default /etc/xml/catalog default catalog.

References

libxml web page

libxml catalog support web page:

James Clark's SGML catalog page:

OASIS XML catalog specification: