<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY xmlcatalog "<command>xmlcatalog</command>">
]>
<refentry>
<refentryinfo>
<title>xmlcatalog Manual</title>
<productname>libxml2</productname>
<copyright>
<year>2001</year>
<year>2004</year>
</copyright>
<author>
<firstname>John</firstname>
<surname>Fleck</surname>
<affiliation>
<address>
<email>jfleck@inkstain.net</email>
</address>
</affiliation>
</author>
<!-- date should be the date of the latest change or the release version -->
<date>$Date$</date>
<!-- still a bit buggy output, will talk to docbook-xsl upstream to fix this -->
<!-- <releaseinfo>This is release 0.3 of the xmlcatalog Manual.</releaseinfo> -->
<!-- <edition>0.3</edition> -->
</refentryinfo>
<refmeta>
<refentrytitle>xmlcatalog</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>xmlcatalog</refname>
<refpurpose>
Command line tool to parse and manipulate <acronym>XML</acronym>
or <acronym>SGML</acronym> catalog files.
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>xmlcatalog</command>
<group choice="opt">
<arg choice="plain"><option>--sgml</option></arg>
<arg choice="plain"><option>--shell</option></arg>
<arg choice="plain"><option>--create</option></arg>
<arg choice="plain"><option>--del <replaceable>VALUE(S)</replaceable></option></arg>
<arg choice="plain">
<group choice="opt">
<arg choice="plain">
<option>--add
<replaceable>TYPE</replaceable>
<replaceable>ORIG</replaceable>
<replaceable>REPLACE</replaceable>
</option>
</arg>
<arg choice="plain"><option>--add <replaceable>FILENAME</replaceable></option></arg>
</group>
</arg>
<arg choice="plain"><option>--noout</option></arg>
<arg choice="plain"><option>--no-super-update</option></arg>
<arg choice="plain">
<group choice="opt">
<arg choice="plain"><option>-v</option></arg>
<arg choice="plain"><option>--verbose</option></arg>
</group>
</arg>
</group>
<arg choice="req" rep="norepeat"><replaceable>CATALOGFILE</replaceable></arg>
<arg choice="req" rep="repeat"><replaceable>ENTITIES</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id="description">
<title>DESCRIPTION</title>
<para>
&xmlcatalog; is a command line application allowing users to monitor and
manipulate <acronym>XML</acronym> and <acronym>SGML</acronym> catalogs. It
is included in <citerefentry>
<refentrytitle>libxml</refentrytitle>
<manvolnum>3</manvolnum>
</citerefentry>.
</para>
<para>
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 <acronym>XML</acronym> and <acronym>SGML</acronym> files.
</para>
</refsect1>
<refsect1 id="options">
<title>OPTIONS</title>
<para>
&xmlcatalog; accepts the following options (in alphabetical order):
</para>
<variablelist>
<varlistentry>
<term>
<option>--add
<replaceable>TYPE</replaceable>
<replaceable>ORIG</replaceable>
<replaceable>REPLACE</replaceable>
</option>
</term>
<listitem>
<para>
Add an entry to <filename>CATALOGFILE</filename>. <replaceable>TYPE</replaceable>
indicates the type of entry. Possible types are: <simplelist type="inline">
<member><parameter>public</parameter></member>
<member><parameter>system</parameter></member>
<member><parameter>uri</parameter></member>
<member><parameter>rewriteSystem</parameter></member>
<member><parameter>rewriteURI</parameter></member>
<member><parameter>delegatePublic</parameter></member>
<member><parameter>delegateSystem</parameter></member>
<member><parameter>delegateURI</parameter></member>
<member><parameter>nextCatalog</parameter></member>
</simplelist>. <replaceable>ORIG</replaceable> is the original
reference to be replaced, and <replaceable>REPLACE</replaceable>
is the <acronym>URI</acronym> of the replacement entity to be
used. The <option>--add</option> option will not overwrite
<filename>CATALOGFILE</filename>, outputting
to <filename class="devicefile">stdout</filename>, unless
<option>--noout</option> is used. The <option>--add</option> will
always take three parameters even if some of the <acronym>XML</acronym>
catalog constructs will have only a single argument.
</para>
<!--
FIXME - Is my list of possible types correct? Are SGML types the same?
-->
</listitem>
</varlistentry>
<varlistentry>
<term><option>--add <replaceable>FILENAME</replaceable></option></term>
<listitem>
<para>
If the <option>--add</option> option is used following
the <option>--sgml</option> option, only a single argument,
a <replaceable>FILENAME</replaceable>, is used. This is used to add
the name of a catalog file to an <acronym>SGML</acronym> supercatalog,
a file that contains references to other included <acronym>SGML</acronym>
catalog files.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--create</option></term>
<listitem>
<para>
Create a new <acronym>XML</acronym> catalog. Outputs
to <filename class="devicefile">stdout</filename>,
ignoring <replaceable>filename</replaceable> unless <option>--noout</option> is
used, in which case it creates a new catalog
file <replaceable>filename</replaceable>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--del <replaceable>VALUE(S)</replaceable></option></term>
<listitem>
<para>
Remove entries from <replaceable>CATALOGFILE</replaceable>
matching <replaceable>VALUE(S)</replaceable>. The <option>--del</option>
option will not overwrite <replaceable>CATALOGFILE</replaceable>,
outputting to <filename class="devicefile">stdout</filename>,
unless <option>--noout</option> is used.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--noout</option></term>
<listitem>
<para>
Save output to the named file rather than outputting
to <filename class="devicefile">stdout</filename>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--no-super-update</option></term>
<listitem>
<para>
Do not update the <acronym>SGML</acronym> super catalog.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--shell</option></term>
<listitem>
<para>
Run a shell allowing interactive queries on catalog
file <replaceable>CATALOGFILE</replaceable>. For the set of available
commands see <xref linkend="shell"/>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--sgml</option></term>
<listitem>
<para>
Uses <acronym>SGML</acronym> super catalogs for <option>--add</option>
and <option>--del</option> options.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option></term>
<term><option>--verbose</option></term>
<listitem>
<para>Output debugging information.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="shell">
<title>SHELL COMMANDS</title>
<para>
Invoking &xmlcatalog; with
the <option>--shell <replaceable>CATALOGFILE</replaceable></option> option opens
a command line shell allowing interactive access to the catalog file
identified by <replaceable>CATALOGFILE</replaceable>. Invoking the shell
provides a command line prompt after which the following commands (described in
alphabetical order) can be entered.
</para>
<variablelist>
<varlistentry>
<term>
<option>add
<replaceable>TYPE</replaceable>
<replaceable>ORIG</replaceable>
<replaceable>REPLACE</replaceable>
</option>
</term>
<listitem>
<para>
Add an entry to the catalog file. <replaceable>TYPE</replaceable>
indicates the type of entry. Possible types are: <simplelist type="inline">
<member><parameter>public</parameter></member>
<member><parameter>system</parameter></member>
<member><parameter>uri</parameter></member>
<member><parameter>rewriteSystem</parameter></member>
<member><parameter>rewriteURI</parameter></member>
<member><parameter>delegatePublic</parameter></member>
<member><parameter>delegateSystem</parameter></member>
<member><parameter>delegateURI</parameter></member>
<member><parameter>nextCatalog</parameter></member>
</simplelist>. <replaceable>ORIG</replaceable> is the original
reference to be replaced, and <replaceable>REPLACE</replaceable>
is the <acronym>URI</acronym> of the replacement entity to be
used. The <option>--add</option> option will not overwrite
<filename>CATALOGFILE</filename>, outputting
to <filename class="devicefile">stdout</filename>, unless
<option>--noout</option> is used. The <option>--add</option> will
always take three parameters even if some of the <acronym>XML</acronym>
catalog constructs will have only a single argument.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>debug</option></term>
<listitem>
<para>
Print debugging statements showing the steps &xmlcatalog; is executing.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>del <replaceable>VALUE(S)</replaceable></option></term>
<listitem>
<para>
Remove the catalog entry corresponding to <replaceable>VALUE(S)</replaceable>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>dump</option></term>
<listitem>
<para>Print the current catalog.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>exit</option></term>
<listitem>
<para>Quit the shell.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>public <replaceable>PUBLIC-ID</replaceable></option></term>
<listitem>
<para>
Execute a Formal Public Identifier look-up of the catalog entry
for <replaceable>PUBLIC-ID</replaceable>. The corresponding entry will be
output to the command line.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>quiet</option></term>
<listitem>
<para>Stop printing debugging statements.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>system <replaceable>SYSTEM-ID</replaceable></option></term>
<listitem>
<para>
Execute a Formal Public Identifier look-up of the catalog entry
for <replaceable>SYSTEM-ID</replaceable>. The corresponding entry will be
output to the command line.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="environment">
<title>ENVIRONMENT</title>
<variablelist>
<varlistentry>
<term><envar>XML_CATALOG_FILES</envar></term>
<listitem>
<para><acronym>XML</acronym> catalog behavior can be changed by redirecting
queries to the user's own set of catalogs. This can be done by setting
the <envar>XML_CATALOG_FILES</envar> environment variable to a list
of catalogs. An empty one should deactivate loading the
default <filename>/etc/xml/catalog</filename> catalog.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="diagnostics">
<title>DIAGNOSTICS</title>
<para>
&xmlcatalog; return codes provide information that can be used when
calling it from scripts.
</para>
<variablelist>
<varlistentry>
<term><errorcode>0</errorcode></term>
<listitem>
<para>No error</para>
</listitem>
</varlistentry>
<varlistentry>
<term><errorcode>1</errorcode></term>
<listitem>
<para>Failed to remove an entry from the catalog</para>
</listitem>
</varlistentry>
<varlistentry>
<term><errorcode>2</errorcode></term>
<listitem>
<para>Failed to save to the catalog, check file permissions</para>
</listitem>
</varlistentry>
<varlistentry>
<term><errorcode>3</errorcode></term>
<listitem>
<para>Failed to add an entry to the catalog</para>
</listitem>
</varlistentry>
<varlistentry>
<term><errorcode>4</errorcode></term>
<listitem>
<para>Failed to look up an entry in the catalog</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="seealso">
<title>SEE ALSO</title>
<para><citerefentry>
<refentrytitle>libxml</refentrytitle>
<manvolnum>3</manvolnum>
</citerefentry>
</para>
<para>
More information can be found at
<itemizedlist>
<listitem>
<para><citerefentry>
<refentrytitle>libxml</refentrytitle>
<manvolnum>3</manvolnum>
</citerefentry> web page <ulink url="http://www.xmlsoft.org/"/>
</para>
</listitem>
<listitem>
<para><citerefentry>
<refentrytitle>libxml</refentrytitle>
<manvolnum>3</manvolnum>
</citerefentry> catalog support web page
at <ulink url="http://www.xmlsoft.org/catalog.html"/>
</para>
</listitem>
<listitem>
<para>James Clark's <acronym>SGML</acronym> catalog
page <ulink url="http://www.jclark.com/sp/catalog.htm"/>
</para>
</listitem>
<listitem>
<para><acronym>OASIS</acronym> <acronym>XML</acronym> catalog specification
<ulink url="http://www.oasis-open.org/committees/entity/spec.html"/>
</para>
</listitem>
</itemizedlist>
</para>
</refsect1>
</refentry>