<html><head><meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"><title>xmlcatalog</title><meta name="generator" content="DocBook XSL Stylesheets V1.45"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry"><h1 class="title">xmlcatalog</h1><div class="refnamediv"><h2>Name</h2><p>xmlcatalog &#8212; Command line tool to parse and manipulate XML or
      SGML catalog files.</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><tt>xmlcatalog</tt>  [--shell | --create | --add <i><tt>type</tt></i>
	  <i><tt>orig</tt></i> <i><tt>replace</tt></i> | --del <i><tt>values</tt></i> | --noout | --verbose] [<tt><i><tt>catalogfile</tt></i></tt>] [<tt><i><tt>entities</tt></i></tt>]</p></div></div><div class="refsect1"><a name="introduction"></a><h2>Introduction</h2><p>
      xmlcatalog is a command line application
      allowing users to monitor and manipulate XML and
      SGML catalogs. It is included in
      libxml2.
    </p><p>
      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.
    </p></div><div class="refsect1"><a name="cloptions"></a><h2>Command Line Options</h2><div class="variablelist"><dl><dt><span class="term"><tt>--shell</tt> <i><tt>filename</tt></i></span></dt><dd>
	    Run a shell
	    allowing interactive queries on catalog file
	    <i><tt>filename</tt></i>.
	  </dd><dt><span class="term"><tt>--create</tt> <i><tt>filename</tt></i></span></dt><dd>
	    Create a new
	    XML catalog. Outputs to stdout, ignoring
	    <i><tt>filename</tt></i> unless <tt>--noout</tt> is
	    used, in which case it creates a new catalog file
	    <i><tt>filename</tt></i>.
	  </dd><dt><span class="term"><tt>--add</tt> <i><tt>'type'</tt></i> <i><tt>'orig'</tt></i> <i><tt>'replace'</tt></i> <i><tt>filename</tt></i></span></dt><dd><p>
	    Add an entry to catalog file
	    <tt>filename</tt>. <i><tt>type</tt></i> indicates
	    the type of entry. Possible types are 'public', 'system', 'rewriteSystem',
	    'delegatePublic' and 'delegateSystem'. <i><tt>'orig'</tt></i>
	    is the original reference to 
	    be replaced, and <i><tt>'replace'</tt></i> is the
	    URI of the replacement entity to be used. The
	    <tt>--add</tt> option will not overwrite
	    <i><tt>filename</tt></i>, outputing to stdout, unless
	    <tt>--noout</tt> is used. The <tt>--add</tt> will always
	    take three parameters even if some of the XML catalog
	    constructs will have only a single argument.

	  </p><p>
	    If the <tt>--add</tt> option is used following the
	    <tt>--sgml</tt> option, only a single argument, a
	    <i><tt>filename</tt></i>, 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.
	  </p></dd><dt><span class="term"><tt>--del</tt> <i><tt>'values'</tt></i> <i><tt>filename</tt></i></span></dt><dd>
	    Remove entries from the catalog file
	    <i><tt>filename</tt></i> matching
	    <i><tt>'values'</tt></i>. The <tt>--del</tt> option
	    will not overwrite <i><tt>filename</tt></i>, outputing to
	    stdout, unless <tt>--noout</tt> is used.
	  </dd><dt><span class="term"><tt>--noout</tt></span></dt><dd>
	    Save output to the named file rather than
	    outputing to stdout.
	  </dd><dt><span class="term"><tt>-v</tt> or <tt>--verbose</tt></span></dt><dd>
	    output debugging
	    information.
	  </dd></dl></div></div><div class="refsect1"><a name="shell"></a><h2>Shell Commands</h2><p>Invoking xmlcatalog with the
      <tt>--shell</tt> <i><tt>filename</tt></i> option opens
    a command line shell allowing interactive access to the catalog file
      identified by <i><tt>filename</tt></i>. Invoking the shell
    provides a command line prompt after which commands can be entered.
    </p><div class="variablelist"><dl><dt><span class="term"><tt>public</tt> <i><tt>'PublicID'</tt></i></span></dt><dd>
	    Execute a
	    public identifier lookup of the catalog entry for
	    <i><tt>'PublicID'</tt></i>. The corresponding entry will be
	    output to the command line.
	  </dd><dt><span class="term"><tt>system</tt> <i><tt>'SystemID'</tt></i></span></dt><dd>
	    Execute a
	    public identifier lookup of the catalog entry for
	    <i><tt>'SystemID'</tt></i>. The corresponding entry will be
	    output to the command line.
	  </dd><dt><span class="term"><tt>add </tt> <i><tt>'type'</tt></i> <i><tt>'orig'</tt></i> <i><tt>'replace'</tt></i></span></dt><dd>
	    Add an entry to the catalog
	    file. <i><tt>type</tt></i> indicates the type of
	    entry. Possible types are 'public', 'system', 'rewriteSystem',
	    'delegatePublic' and 'delegateSystem'. <i><tt>'orig'</tt></i>
	    is the original reference to  be replaced, and
	    <i><tt>'replace'</tt></i> is the URI of the
	    replacement entity to be used.
	  </dd><dt><span class="term"><tt>del</tt> <i><tt>'values'</tt></i></span></dt><dd>
	    Remove the
	    catalog entry corresponding to <i><tt>'values'</tt></i>.
	  </dd><dt><span class="term"><tt>dump</tt></span></dt><dd>
	    Print the current catalog.
	  </dd><dt><span class="term"><tt>debug</tt></span></dt><dd>
	    Print debugging statements showing the steps
	    xmlcatalog is executing.
	  </dd><dt><span class="term"><tt>quiet</tt></span></dt><dd>
	    Stop printing debugging statements.
	  </dd><dt><span class="term"><tt>exit</tt></span></dt><dd>
	    Quit the shell.
	  </dd></dl></div></div><div class="refsect1"><h2>References</h2><p><a href="http://www.xmlsoft.org/" target="_top">libxml web page</a></p><p><a href="http://www.xmlsoft.org/catalog.html" target="_top">libxml
    catalog support web page:</a></p><p><a href="http://www.jclark.com/sp/catalog.htm" target="_top">James Clark's
    SGML catalog page:</a></p><p><a href="http://www.oasis-open.org/committees/entity/spec.html" target="_top">OASIS
    XML catalog specification: </a></p></div></div></body></html>
