.\"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"
.ad l
.hy 0
.HP 8
\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\-\-nonet\fR | \fB\-\-path\ \fIpaths\fR\fR | \fB\-\-load\-trace\fR | \fB\-\-htmlout\fR | \fB\-\-nowrap\fR | \fB\-\-valid\fR | \fB\-\-postvalid\fR | \fB\-\-dtdvalid\ \fIURL\fR\fR | \fB\-\-dtdvalidfpi\ \fIFPI\fR\fR | \fB\-\-timing\fR | \fB\-\-output\ \fIfile\fR\fR | \fB\-\-repeat\fR | \fB\-\-insert\fR | \fB\-\-compress\fR | \fB\-\-html\fR | \fB\-\-xmlout\fR | \fB\-\-push\fR | \fB\-\-memory\fR | \fB\-\-maxmem\ \fInbbytes\fR\fR | \fB\-\-nowarning\fR | \fB\-\-noblanks\fR | \fB\-\-nocdata\fR | \fB\-\-format\fR | \fB\-\-encode\ \fIencoding\fR\fR | \fB\-\-dropdtd\fR | \fB\-\-nsclean\fR | \fB\-\-testIO\fR | \fB\-\-catalogs\fR | \fB\-\-nocatalogs\fR | \fB\-\-auto\fR | \fB\-\-xinclude\fR | \fB\-\-noxincludenode\fR | \fB\-\-loaddtd\fR | \fB\-\-dtdattr\fR | \fB\-\-stream\fR | \fB\-\-walker\fR | \fB\-\-pattern\ \fIpatternvalue\fR\fR | \fB\-\-chkregister\fR | \fB\-\-relaxng\fR | \fB\-\-schema\fR | \fB\-\-c14n\fR] [\fB\fIxmlfile\fR\fR]
.ad
.hy

.SH "INTRODUCTION"

.PP
The xmllint program parses one or more XML files, specified on the command line as \fIxmlfile\fR (or the standard input if the filename provided is \- )\&. 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\-\-nocdata\fR
Substitute CDATA section by equivalent text nodes\&.

.TP
\fB\-\-nsclean\fR
Remove redundant namespace declarations\&.

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

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

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

.TP
\fB\-\-path\fR \fIpaths\fR
Use the list (separated by space or column) of filesystem path specified by \fIpaths\fR to load DTDs or entities \&.

.TP
\fB\-\-load\-trace\fR
Display to stderr all the documents loaded during the processing\&.

.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\-\-dtdvalidfpi\fR \fIFPI\fR
Use the DTD specified by the Public Identifier \fIFPI\fR for validation, note that this will require a Catalog exporting that Public Identifier to work\&.

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

.TP
\fB\-\-output\fR \fIfile\fR
Define a file path where xmllint will save the result of parsing\&. Usually the programs build a tree and save it on stdout, with this option the result XML instance will be saved onto a file\&.

.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\-\-html\fR
Use the HTML parser\&.

.TP
\fB\-\-xmlout\fR
Used in conjusntion with \fB\-\-html\fR\&. Usually when HTML is parsed the document is saved with the HTML serializer, but with this option the resulting document is saved with the XML serializer\&. This is primarily used to generate XHTML from HTML input\&.

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

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

.TP
\fB\-\-maxmem\fR \fInnbytes\fR
Test the parser memory support\&. \fInnbytes\fR is the maximum number of bytes the library is allowed to allocate\&. This can also be used to make sure batch processing of XML files will not exhaust the virtual memory of the server running them\&.

.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\-\-noxincludenode\fR
Do XInclude processing but do not generate XInclude start and end nodes\&.

.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\-\-walker\fR
Test the walker module, which is a reader interface but for a document tree, instead of using the reader API on an unparsed document it works on a existing in\-memory tree\&. Used in debugging\&.

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

.TP
\fB\-\-pattern\fR \fIpatternvalue\fR
Used to exercise the pattern recognition engine, which can be used with the reader interface to the parser\&. It allows to select some nodes in the document based on an XPath (subset) expression\&. Used for debugging\&.

.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\-\-c14n\fR
Use the W3C XML Canonicalisation (C14N) to serialize the result of parsing to stdout\&. It keeps comments in the result\&.

.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 \fInode\fR\fR
Display node if given or current node\&.

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

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

.TP
\fBdu \fIpath\fR\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 \fIname\fR\fR
Load a new document with the given name\&.

.TP
\fBls \fIpath\fR\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 \fIname\fR\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 \fIname\fR\fR
Write the current node to the given filename\&.

.SH "CATALOGS"

.PP
Catalog behavior can be changed by redirecting queries to the user's own set of catalogs\&. This can be done by setting the \fIXML_CATALOG_FILES\fR environment variable to a list of catalogs\&. An empty one should deactivate loading the default \fI/etc/xml/catalog\fR default catalog\&.

.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 "ERROR RETURN CODES"

.PP
On the completion of execution, Xmllint returns the following error codes:

.TP
0
No error

.TP
1
Unclassified

.TP
2
Error in DTD

.TP
3
Validation error

.TP
4
Validation error

.TP
5
Error in schema compilation

.TP
6
Error writing output

.TP
7
Error in pattern (generated when [\-\-pattern] option is used)

.TP
8
Error in Reader registration (generated when [\-\-chkregister] option is used)

.TP
9
Out of memory error

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