."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"
\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]
.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' 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 \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-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 "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
Copyright 2001
.Sp
John Fleck  <jfleck@inkstain.net>This is release 0.2 of the xmlcatalog Manual.