.\"Generated by db2man.xsl. Don't modify this, modify the source.
.de Sh \" Subsection
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.TH "XMLCATALOG" 1 "" "" "xmlcatalog Manual"
.SH NAME
xmlcatalog \- Command line tool to parse and manipulate XML or SGML catalog files.
.SH "SYNOPSIS"

.nf
\fBxmlcatalog\fR [\fB--shell\fR | \fB--create\fR | \fB--add \fItype\fR \fIorig\fR \fIreplace\fR\fR
           | \fB--del \fIvalues\fR\fR | \fB--noout\fR | \fB--verbose\fR] [\fB\fIcatalogfile\fR\fR]
           [\fB\fIentities\fR\fR]
.fi

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

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

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

.TP
\fB--add\fR \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', 'delegateSystem'amd 'rewriteURI'\&. \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 \fB--add\fR option will not overwrite \fIfilename\fR, outputing to stdout, unless \fB--noout\fR is used\&. The \fB--add\fR will always take three parameters even if some of the XML catalog constructs will have only a single argument\&.

If the \fB--add\fR option is used following the \fB--sgml\fR option, only a single argument, a \fIfilename\fR, 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\&.

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

.TP
\fB--noout\fR
Save output to the named file rather than outputing to stdout\&.

.TP
\fB--sgml\fR
Uses SGML Super catalogs for --add and --del options

.TP
\fB-v\fR or \fB--verbose\fR
output debugging information\&.

.SH "SHELL COMMANDS"

.PP
Invoking xmlcatalog with the \fB--shell\fR  \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\&.

.TP
\fBpublic\fR \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\&.

.TP
\fBsystem\fR \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\&.

.TP
\fBadd \fR \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\&.

.TP
\fBdel\fR \fI'values'\fR
Remove the catalog entry corresponding to \fI'values'\fR\&.

.TP
\fBdump\fR
Print the current catalog\&.

.TP
\fBdebug\fR
Print debugging statements showing the steps xmlcatalog is executing\&.

.TP
\fBquiet\fR
Stop printing debugging statements\&.

.TP
\fBexit\fR
Quit the shell\&.

.SH "RETURN VALUES"

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

.PP
0: normal

.PP
1: Failed to remove an entry from the catalog

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

.PP
3: Failed to add an entry to the catalog

.PP
4: Failed to lookup and entry in the catalog

.SH "REFERENCES"

.PP
libxml web page: \fIhttp://www.xmlsoft.org/\fR

.PP
libxml catalog support web page:: \fIhttp://www.xmlsoft.org/catalog.html\fR

.PP
James Clark's SGML catalog page:: \fIhttp://www.jclark.com/sp/catalog.htm\fR

.PP
OASIS XML catalog specification: : \fIhttp://www.oasis-open.org/committees/entity/spec.html\fR

.SH AUTHOR
John Fleck.
