.\"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] [\fBcatalogfile\fR]
           [\fBentities\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 pagehttp://www.xmlsoft.org/

.PP
: libxml catalog support web page:http://www.xmlsoft.org/catalog.html

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

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

.SH AUTHOR
John Fleck.
