.\"
.\" This page was created on 2001-09-03 9:00:42 by makeman.pl
.\" ``makeman.pl'' is part of the ``MakeMan'' project.
.\" For more information, please see http://mama.sourceforge.net
.\"
.TH xmlcatalog 1 

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

.SH SYNOPSIS
\fBxmlcatalog\fR
[ \fI\-\-shell\fR ] [ \fI\-\-create\fR ] [ \fI\-\-add \fR ] [ \fI\-\-del \fR ] [ \fI\-\-noout\fR ] [ \fI\-\-verbose\fR ] [ \fIcatalogfile\fR ] [ \fIentities\fR ] 

.SH "Introduction"

.PP

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


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


.SH "Command Line Options"

.PP

\-\-shell \fIfilename\fR \- Run a shell
allowing interactive queries on catalog file
\fIfilename\fR.


.PP

\-\-create \fIfilename\fR \- Create a new
XML catalog. Outputs to stdout, ignoring
\fIfilename\fR unless \-\-noout is
used, in which case it creates a new catalog file
\fIfilename\fR.


.PP

\-\-add \fI'type'\fR
\fI'orig'\fR \fI'replace'\fR
\fIfilename\fR \- Add an entry to catalog file
\fIfilename\fR. \fItype\fR indicates
the type of entry. Possible types are 'public', 'system', 'rewriteSystem',
'delegatePublic' and 'delegateSystem'. \fI'orig'\fR
is the original reference to 
be replaced, and \fI'replace'\fR is the
URI of the replacement entity to be used. The
\-add option will not overwrite
\fIfilename\fR, 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.


.PP

\-\-del \fI'values'\fR
\fIfilename\fR \- Remove entries from the catalog file
\fIfilename\fR matching
\fI'values'\fR. The \-\-del option
will not overwrite \fIfilename\fR, outputing to
stdout, unless \-\-noout is used.


.PP

\-\-noout \- Save output to the named file rather than
outputing to stdout.


.PP

\-v or \-\-verbose \- output debugging
information.


.SH "Shell Commands"

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


.PP

public \fI'PublicID'\fR \- Execute a
public identifier lookup of the catalog entry for
\fI'PublicID'\fR. The corresponding entry will be
output to the command line.


.PP
 system \fI'SystemID'\fR \- Execute a
public identifier lookup of the catalog entry for
\fI'SystemID'\fR. The corresponding entry will be
output to the command line.


.PP

add  \fI'type'\fR
\fI'orig'\fR \fI'replace'\fR \-
Add an entry to the catalog
file. \fItype\fR indicates the type of
entry. Possible types are 'public', 'system', 'rewriteSystem',
'delegatePublic' and 'delegateSystem'. \fI'orig'\fR
is the original reference to  be replaced, and
\fI'replace'\fR is the URI of the
replacement entity to be used.


.PP

del \fI'values'\fR \- Remove the
catalog entry corresponding to \fI'values'\fR.


.PP

dump \- Print the current catalog.


.PP

debug \- Print debugging statements showing the steps
xmlcatalog is executing.


.PP

quiet \- Stop printing debugging statements.


.PP

exit \- Quit the shell.


.SH "References"

.PP

.IP
libxml web page: http://www.xmlsoft.org/ (Link to \fIhttp://www.xmlsoft.org/\fR)

.IP

libxml catalog support web page: http://www.xmlsoft.org/catalog.html (Link to \fIhttp://www.xmlsoft.org/catalog.html\fR)

.IP

James Clark's SGML catalog page: http://www.jclark.com/sp/catalog.htm (Link to \fIhttp://www.jclark.com/sp/catalog.htm\fR)

.IP

OASIS XML catalog
specification: http://www.oasis\-open.org/committees/entity/spec.html (Link to \fIhttp://www.oasis-open.org/committees/entity/spec.html\fR)



