.\" ** You probably do not want to edit this file directly **
.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
.\" Instead of manually editing it, you probably should edit the DocBook XML
.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
.TH "XMLLINT" "1" "$Date$" "libxml2" ""
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.SH "NAME"
xmllint \- command line XML tool
.SH "SYNOPSIS"
.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\ "\fR\fB\fIPATH(S)\fR\fR\fB"\fR \fB\-\-load\-trace\fR \fB\-\-htmlout\fR \fB\-\-nowrap\fR \fB\-\-valid\fR \fB\-\-postvalid\fR \fB\-\-dtdvalid\ \fR\fB\fIURL\fR\fR \fB\-\-dtdvalidfpi\ \fR\fB\fIFPI\fR\fR \fB\-\-timing\fR \fB\-\-output\ \fR\fB\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\ \fR\fB\fINBBYTES\fR\fR \fB\-\-nowarning\fR \fB\-\-noblanks\fR \fB\-\-nocdata\fR \fB\-\-format\fR \fB\-\-encode\ \fR\fB\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\ \fR\fB\fIPATTERNVALUE\fR\fR \fB\-\-chkregister\fR \fB\-\-relaxng\ \fR\fB\fISCHEMA\fR\fR \fB\-\-schema\ \fR\fB\fISCHEMA\fR\fR \fB\-\-c14n\fR] {\fIXML\-FILE(S)\fR... \-}
.HP 8
\fBxmllint\fR \fB\-\-help\fR
.SH "DESCRIPTION"
.PP
The
\fBxmllint\fR
program parses one or more
XML
files, specified on the command line as
\fIXML\-FILE\fR
(or the standard input if the filename provided is
\fB\-\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
\fBxmllint\fR
is included in
\fBlibxml\fR(3).
.SH "OPTIONS"
.PP
\fBxmllint\fR
accepts the following options (in alphabetical order):
.TP
\fB\-\-auto\fR
Generate a small document for testing purposes.
.TP
\fB\-\-catalogs\fR
Use the
SGML
catalog(s) from
\fBSGML_CATALOG_FILES\fR. Otherwise
XML
catalogs starting from
\fI/etc/xml/catalog\fR
are used by default.
.TP
\fB\-\-chkregister\fR
Turn on node registration. Useful for developers testing
\fBlibxml\fR(3)
node tracking code.
.TP
\fB\-\-compress\fR
Turn on
\fBgzip\fR(1)
compression of output.
.TP
\fB\-\-copy\fR
Test the internal copy implementation.
.TP
\fB\-\-c14n\fR
Use the W3C
XML
Canonicalisation (C14N) to serialize the result of parsing to
\fIstdout\fR. It keeps comments in the result.
.TP
\fB\-\-dtdvalid \fR\fB\fIURL\fR\fR
Use the
DTD
specified by an
\fIURL\fR
for validation.
.TP
\fB\-\-dtdvalidfpi \fR\fB\fIFPI\fR\fR
Use the
DTD
specified by a Formal Public Identifier
\fIFPI\fR
for validation, note that this will require a catalog exporting that Formal Public Identifier to work.
.TP
\fB\-\-debug\fR
Parse a file and output an annotated tree of the in\-memory version of the document.
.TP
\fB\-\-debugent\fR
Debug the entities defined in the document.
.TP
\fB\-\-dropdtd\fR
Remove
DTD
from output.
.TP
\fB\-\-dtdattr\fR
Fetch external
DTD
and populate the tree with inherited attributes.
.TP
\fB\-\-encode \fR\fB\fIENCODING\fR\fR
Output in the given encoding.
.TP
\fB\-\-format\fR
Reformat and reindent the output. The
\fBXMLLINT_INDENT\fR
environment variable controls the indentation. The default value is two spaces " ").
.TP
\fB\-\-help\fR
Print out a short usage summary for
\fBxmllint\fR.
.TP
\fB\-\-html\fR
Use the
HTML
parser.
.TP
\fB\-\-htmlout\fR
Output results as an
HTML
file. This causes
\fBxmllint\fR
to output the necessary
HTML
tags surrounding the result tree output so the results can be displayed/viewed in a browser.
.TP
\fB\-\-insert\fR
Test for valid insertions.
.TP
\fB\-\-loaddtd\fR
Fetch an external
DTD.
.TP
\fB\-\-load\-trace\fR
Display all the documents loaded during the processing to
\fIstderr\fR.
.TP
\fB\-\-maxmem \fR\fB\fINNBYTES\fR\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\-\-memory\fR
Parse from memory.
.TP
\fB\-\-noblanks\fR
Drop ignorable blank spaces.
.TP
\fB\-\-nocatalogs\fR
Do not use any catalogs.
.TP
\fB\-\-nocdata\fR
Substitute CDATA section by equivalent text nodes.
.TP
\fB\-\-noent\fR
Substitute entity values for entity references. By default,
\fBxmllint\fR
leaves entity references in place.
.TP
\fB\-\-nonet\fR
Do not use the Internet to fetch
DTDs or entities.
.TP
\fB\-\-noout\fR
Suppress output. By default,
\fBxmllint\fR
outputs the result tree.
.TP
\fB\-\-nowarning\fR
Do not emit warnings from the parser and/or validator.
.TP
\fB\-\-nowrap\fR
Do not output
HTML
doc wrapper.
.TP
\fB\-\-noxincludenode\fR
Do XInclude processing but do not generate XInclude start and end nodes.
.TP
\fB\-\-nsclean\fR
Remove redundant namespace declarations.
.TP
\fB\-\-output \fR\fB\fIFILE\fR\fR
Define a file path where
\fBxmllint\fR
will save the result of parsing. Usually the programs build a tree and save it on
\fIstdout\fR, with this option the result
XML
instance will be saved onto a file.
.TP
\fB\-\-path "\fR\fB\fIPATH(S)\fR\fR\fB"\fR
Use the (space\- or colon\-separated) list of filesystem paths specified by
\fIPATHS\fR
to load
DTDs or entities. Enclose space\-separated lists by quotation marks.
.TP
\fB\-\-pattern \fR\fB\fIPATTERNVALUE\fR\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\-\-postvalid\fR
Validate after parsing has completed.
.TP
\fB\-\-push\fR
Use the push mode of the parser.
.TP
\fB\-\-recover\fR
Output any parsable portions of an invalid document.
.TP
\fB\-\-relaxng \fR\fB\fISCHEMA\fR\fR
Use RelaxNG file named
\fISCHEMA\fR
for validation.
.TP
\fB\-\-repeat\fR
Repeat 100 times, for timing or profiling.
.TP
\fB\-\-schema \fR\fB\fISCHEMA\fR\fR
Use a W3C
XML
Schema file named
\fISCHEMA\fR
for validation.
.TP
\fB\-\-shell\fR
Run a navigating shell. Details on available commands in shell mode are below (see
the section called \(lqSHELL COMMANDS\(rq).
.TP
\fB\-\-stream\fR
Use streaming
API
\- useful when used in combination with
\fB\-\-relaxng\fR
or
\fB\-\-valid\fR
options for validation of files that are too large to be held in memory.
.TP
\fB\-\-testIO\fR
Test user input/output support.
.TP
\fB\-\-timing\fR
Output information about the time it takes
\fBxmllint\fR
to perform the various steps.
.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,
\fBxmllint\fR
also checks to determine if the document is well\-formed.
.TP
\fB\-\-version\fR
Display the version of
\fBlibxml\fR(3)
used.
.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 an existing in\-memory tree. Used for debugging.
.TP
\fB\-\-xinclude\fR
Do XInclude processing.
.TP
\fB\-\-xmlout\fR
Used in conjunction 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.
.SH "SHELL COMMANDS"
.PP
\fBxmllint\fR
offers an interactive shell mode invoked with the
\fB\-\-shell\fR
command. Available commands in shell mode include (in alphabetical order):
.TP
\fBbase\fR
Display
XML
base of the node.
.TP
\fBbye\fR
Leave the shell.
.TP
\fBcat \fR\fB\fINODE\fR\fR
Display the given node or the current one.
.TP
\fBcd \fR\fB\fIPATH\fR\fR
Change the current node to the given path (if unique) or root if no argument is given.
.TP
\fBdir \fR\fB\fIPATH\fR\fR
Dumps information about the node (namespace, attributes, content).
.TP
\fBdu \fR\fB\fIPATH\fR\fR
Show the structure of the subtree under the given 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 \fR\fB\fIFILENAME\fR\fR
Load a new document with the given filename.
.TP
\fBls \fR\fB\fIPATH\fR\fR
List contents of the given path or the current directory.
.TP
\fBpwd\fR
Display the path to the current node.
.TP
\fBquit\fR
Leave the shell.
.TP
\fBsave \fR\fB\fIFILENAME\fR\fR
Save the current document to the given filename or to the original name.
.TP
\fBvalidate\fR
Check the document for errors.
.TP
\fBwrite \fR\fB\fIFILENAME\fR\fR
Write the current node to the given filename.
.SH "ENVIRONMENT"
.TP
\fBSGML_CATALOG_FILES\fR
SGML
catalog behavior can be changed by redirecting queries to the user's own set of catalogs. This can be done by setting the
\fBSGML_CATALOG_FILES\fR
environment variable to a list of catalogs. An empty one should deactivate loading the default
\fI/etc/sgml/catalog\fR
catalog.
.TP
\fBXML_CATALOG_FILES\fR
XML
catalog behavior can be changed by redirecting queries to the user's own set of catalogs. This can be done by setting the
\fBXML_CATALOG_FILES\fR
environment variable to a list of catalogs. An empty one should deactivate loading the default
\fI/etc/xml/catalog\fR
catalog.
.TP
\fBXML_DEBUG_CATALOG\fR
Setting the environment variable
\fBXML_DEBUG_CATALOG\fR
to
\fInon\-zero\fR
using the
\fBexport\fR
command outputs debugging information related to catalog operations.
.TP
\fBXMLLINT_INDENT\fR
Setting the environment variable
\fBXMLLINT_INDENT\fR
controls the indentation. The default value is two spaces " ".
.SH "DIAGNOSTICS"
.PP
\fBxmllint\fR
return codes provide information that can be used when calling it from scripts.
.TP
\fB0\fR
No error
.TP
\fB1\fR
Unclassified
.TP
\fB2\fR
Error in
DTD
.TP
\fB3\fR
Validation error
.TP
\fB4\fR
Validation error
.TP
\fB5\fR
Error in schema compilation
.TP
\fB6\fR
Error writing output
.TP
\fB7\fR
Error in pattern (generated when
\fB\-\-pattern\fR
option is used)
.TP
\fB8\fR
Error in Reader registration (generated when
\fB\-\-chkregister\fR
option is used)
.TP
\fB9\fR
Out of memory error
.SH "SEE ALSO"
.PP
\fBlibxml\fR(3)
.PP
More information can be found at
.TP 3
\(bu
\fBlibxml\fR(3)
web page
\fI\%http://www.xmlsoft.org/\fR
.TP
\(bu
W3C
XSLT
page
\fI\%http://www.w3.org/TR/xslt\fR
.SH "AUTHOR"
John Fleck <jfleck@inkstain.net>, Ziying Sherwin <sherwin@nlm.nih.gov>, Heiko Rupp <hwr@pilhuhn.de>. 
