.\" ** 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: 2012/03/29 17:21:37 $" "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>. 
