.\"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 "XMLLINT" 1 "" "" "xmllint Manual"
.SH NAME
xmllint \- command line XML tool
.SH "SYNOPSIS"

.nf
\fBxmllint\fR [\fB--version\fR | \fB--debug\fR | \fB--shell\fR | \fB--debugent\fR |
        \fB--copy\fR | \fB--recover\fR | \fB--noent\fR | \fB--noout\fR | \fB--htmlout\fR
        | \fB--nowrap\fR | \fB--valid\fR | \fB--postvalid\fR | \fB--dtdvalid
        \fIURL\fR\fR | \fB--timing\fR | \fB--repeat\fR | \fB--insert\fR | \fB--compress\fR
        | \fB--sgml\fR | \fB--html\fR | \fB--push\fR | \fB--memory\fR | \fB--nowarning\fR
        | \fB--noblanks\fR | \fB--format\fR | \fB--testIO\fR | \fB--encode \fIencoding\fR\fR
        | \fB--catalogs\fR | \fB--nocatalogs\fR | \fB--auto\fR | \fB--xinclude\fR
        | \fB--loaddtd\fR | \fB--dtdattr\fR | \fB--dropdtd\fR | \fB--stream\fR
        | \fB--chkregister\fR | \fB--relaxng\fR | \fB--schema\fR | \fB--nonet\fR]
        [\fBxmlfile\fR]
.fi

.SH "INTRODUCTION"

.PP
The xmllint program parses one or more XML files, specified on the command line as \fIxmlfile\fR. It prints various types of output, depending upon the options selected. It is useful for detecting errors both in XML code and in the XML parser itself.

.PP
It is included in libxml2.

.SH "OPTIONS"

.TP
\fB--version\fR
Display the version of libxml2 used.

.TP
\fB--debug\fR
Parse a file and output an annotated tree of the in-memory version of the document.

.TP
\fB--shell\fR
Run a navigating shell. Details on available commands in shell mode are below.

.TP
\fB--debugent\fR
Debug the entities defined in the document.

.TP
\fB--copy\fR
Test the internal copy implementation.

.TP
\fB--recover\fR
Output any parsable portions of an invalid document.

.TP
\fB--noent\fR
Substitute entity values for entity references. By default, xmllint leaves entity references in place.

.TP
\fB--noout\fR
Suppress output. By default, xmllint outputs the result tree.

.TP
\fB--htmlout\fR
Output results as an HTML file. This causes xmllint to output the necessary HTML tags surrounding the result tree output so the results can be displayed in a browser.

.TP
\fB--nowrap \fR
Do not output HTML doc wrapper.

.TP
\fB--valid \fR
Determine if the document is a valid instance of the included Document Type Definition (DTD). A DTD to be validated against also can be specified at the command line using the \fB--dtdvalid\fR option. By default, xmllint also checks to determine if the document is well-formed.

.TP
\fB--postvalid\fR
Validate after parsing is completed.

.TP
\fB--dtdvalid\fR \fIURL\fR
Use the DTD specified by \fIURL\fR for validation.

.TP
\fB--timing\fR
Output information about the time it takes xmllint to perform the various steps.

.TP
\fB--repeat\fR
Repeat 100 times, for timing or profiling.

.TP
\fB--insert\fR
Test for valid insertions.

.TP
\fB--compress\fR
Turn on gzip compression of output.

.TP
\fB--sgml\fR
Use the DocBook SGML parser. This allows documents written in SGML DocBook to be converted into an in-memory tree and treated as if they were written in XML.

.TP
\fB--html\fR
Use the HTML parser.

.TP
\fB--push\fR
Use the push mode of the parser.

.TP
\fB--memory\fR
Parse from memory.

.TP
\fB--nowarning\fR
Do not emit warnings from the parser and/or validator.

.TP
\fB--noblanks\fR
Drop ignorable blank spaces.

.TP
\fB--format\fR
Reformat and reindent the output. The $XMLLINT_INDENT environment variable controls the indentation (default value is two spaces " ").

.TP
\fB--testIO\fR
Test user input/output support.

.TP
\fB--encode\fR \fIencoding\fR
Output in the given encoding.

.TP
\fB--catalogs\fR
Use the catalogs from $SGML_CATALOG_FILES. Otherwise /etc/xml/catalog is used by default.

.TP
\fB--nocatalogs\fR
Do not use any catalogs.

.TP
\fB--auto\fR
Generate a small document for testing purposes.

.TP
\fB--xinclude\fR
Do XInclude processing.

.TP
\fB--loaddtd\fR
Fetch external DTD.

.TP
\fB--dtdattr\fR
Fetch external DTD and populate the tree with inherited attributes.

.TP
\fB--dropdtd\fR
Remove DTD from output.

.TP
\fB--stream\fR
Use streaming API - useful when used in combination with --relaxng or --valid options for validation of files that are too large to be held in memory.

.TP
\fB--chkregister\fR
Turn on node registration. Useful for developeres testing libxml2 node tracking code.

.TP
\fB--relaxng\fR \fIschema\fR
Use RelaxNG file named \fIschema\fR for validation.

.TP
\fB--schema\fR \fIschema\fR
Use a W3C XML Schema file named \fIschema\fR for validation.

.TP
\fB--nonet\fR
Do not use the Internet to fetch DTD's or entities.

.SH "SHELL"

.PP
 xmllint offers an interactive shell mode invoked with the \fB--shell\fR command. Available commands in shell mode include:

.TP
\fBbase\fR
display XML base of the node

.TP
\fBbye\fR
leave shell

.TP
\fBcat node\fR
Display node if given or current node.

.TP
\fBcd path\fR
Change the current node to \fIpath\fR (if given and unique) or root if no argument given.

.TP
\fBdir path\fR
Dumps information about the node (namespace, attributes, content).

.TP
\fBdu path\fR
Show the structure of the subtree under path or the current node.

.TP
\fBexit\fR
Leave the shell.

.TP
\fBhelp\fR
Show this help.

.TP
\fBfree\fR
Display memory usage.

.TP
\fBload name\fR
Load a new document with the given name.

.TP
\fBls path\fR
List contents of \fIpath\fR (if given) or the current directory.

.TP
\fBpwd\fR
Display the path to the current node.

.TP
\fBquit\fR
Leave the shell.

.TP
\fBsave name\fR
Saves the current document to \fIname\fR if given or to the original name.

.TP
\fBvalidate\fR
Check the document for error.

.TP
\fBwrite name\fR
Write the current node to the given filename.

.SH "DEBUGGING CATALOGS"

.PP
Setting the environment variable \fIXML_DEBUG_CATALOG\fR using the command \fB"export XML_DEBUG_CATALOG="\fR outputs debugging information related to catalog operations.

.SH AUTHORS
John Fleck, Ziying Sherwin, Heiko Rupp.
