XMLCATALOG(1) xmlcatalog Manual XMLCATALOG(1)

# [NAME](#NAME)

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

# [SYNOPSIS](#SYNOPSIS)

.HP 264u

**xmlcatalog**  
[  
| **--sgml**  
| **--shell**  
| **--convert**  
| **--create**  
| **--del VALUE(S)**  
| \[ | **--add TYPE ORIG REPLACE**  | **--add FILENAME** ]  
| **--noout**  
| **--no-super-update**  
| \[ | **-v** | **--verbose** ]  
]  
{*CATALOGFILE*}  
{*ENTITIES*...}

# [DESCRIPTION](#DESCRIPTION)

.PP **xmlcatalog** is a command line application allowing users to monitor and manipulate XML and SGML catalogs. It is included in [**libxml**(3)](/man/os/libxml2/libxml.3).

.PP 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.

# [OPTIONS](#OPTIONS)

.PP **xmlcatalog** accepts the following options (in alphabetical order):

.PP **--add TYPE ORIG REPLACE**

Add an entry to CATALOGFILE. *TYPE* indicates the type of entry. Possible types are: *public*, *system*, *uri*, *rewriteSystem*, *rewriteURI*, *delegatePublic*, *delegateSystem*, *delegateURI*, *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 CATALOGFILE, outputting 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.

.RE

.PP **--add FILENAME**

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.

.RE

.PP **--convert**

Convert SGML catalog to XML.

.RE

.PP **--create**

Create a new XML catalog. Outputs to stdout, ignoring *filename* unless **--noout** is used, in which case it creates a new catalog file *filename*.

.RE

.PP **--del VALUE(S)**

Remove entries from *CATALOGFILE* matching *VALUE(S)*. The **--del** option will not overwrite *CATALOGFILE*, outputting to stdout, unless **--noout** is used.

.RE

.PP **--noout**

Save output to the named file rather than outputting to stdout.

.RE

.PP **--no-super-update**

Do not update the SGML super catalog.

.RE

.PP **--shell**

Run a shell allowing interactive queries on catalog file *CATALOGFILE*. For the set of available commands see the section called “SHELL COMMANDS”.

.RE

.PP **--sgml**

Uses SGML super catalogs for **--add** and **--del** options.

.RE

.PP **-v**, **--verbose**

Output debugging information.

.RE

.PP Invoking **xmlcatalog** non-interactively without a designated action (imposed with options like **--add**) will result in a lookup of the catalog entry for *ENTITIES* in the catalog denoted with *CATALOGFILE*. The corresponding entries will be output to the command line. This mode of operation, together with **--shell** mode and non-modifying (i.e. without **--noout**) direct actions, allows for a special shortcut of the void *CATALOGFILE* specification (possibly expressed as "" in the shell environment) appointing the default system catalog. That simplifies the handling when its exact location is irrelevant but the respective built-in still needs to be consulted.

# [SHELL COMMANDS](#SHELL_COMMANDS)

.PP Invoking **xmlcatalog** with the **--shell CATALOGFILE** option opens a command line shell allowing interactive access to the catalog file identified by *CATALOGFILE*. Invoking the shell provides a command line prompt after which the following commands (described in alphabetical order) can be entered.

.PP **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*, *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 CATALOGFILE, outputting 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.

.RE

.PP **debug**

Print debugging statements showing the steps **xmlcatalog** is executing.

.RE

.PP **del VALUE(S)**

Remove the catalog entry corresponding to *VALUE(S)*.

.RE

.PP **dump**

Print the current catalog.

.RE

.PP **exit**

Quit the shell.

.RE

.PP **public PUBLIC-ID**

Execute a Formal Public Identifier lookup of the catalog entry for *PUBLIC-ID*. The corresponding entry will be output to the command line.

.RE

.PP **quiet**

Stop printing debugging statements.

.RE

.PP **system SYSTEM-ID**

Execute a Formal Public Identifier lookup of the catalog entry for *SYSTEM-ID*. The corresponding entry will be output to the command line.

.RE

# [ENVIRONMENT](#ENVIRONMENT)

.PP **XML\_CATALOG\_FILES**

XML 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 space-separated list of catalogs. Use percent-encoding to escape spaces or other characters. An empty variable should deactivate loading the default catalog from /etc/xml/catalog or, more specifically, ${sysconfdir}/xml/catalog.

.RE

# [DIAGNOSTICS](#DIAGNOSTICS)

.PP **xmlcatalog** return codes provide information that can be used when calling it from scripts.

.PP **0**

No error

.RE

.PP **1**

Failed to remove an entry from the catalog

.RE

.PP **2**

Failed to save to the catalog, check file permissions

.RE

.PP **3**

Failed to add an entry to the catalog

.RE

.PP **4**

Failed to look up an entry in the catalog

.RE

# [SEE ALSO](#SEE_ALSO)

.PP [**libxml**(3)](/man/os/libxml2/libxml.3)

.PP More information can be found at

•  
[**libxml**(3)](/man/os/libxml2/libxml.3) web page **https://gitlab.gnome.org/GNOME/libxml2**

.RE

•  
[**libxml**(3)](/man/os/libxml2/libxml.3) catalog support web page at **https://gitlab.gnome.org/GNOME/libxml2/-/wikis/Catalog-support**

.RE

•  
James Clark's SGML catalog page **http://www.jclark.com/sp/catalog.htm**

.RE

•  
OASIS XML catalog specification **http://www.oasis-open.org/committees/entity/spec.html**

.RE

# [AUTHOR](#AUTHOR)

**John Fleck** &lt;jfleck@inkstain.net&gt;

# [COPYRIGHT](#COPYRIGHT)

Copyright © 2001, 2004

09/04/2026 libxml2

---

Document: xmlcatalog(1) from libxml2 2.15.4-r0 (Chainguard OS)
Source: https://gitlab.gnome.org/GNOME/libxml2.git
