xmllint - Man Page

command line XML tool

Examples (TL;DR)

Synopsis

xmllint [--version | --debug | --quiet | --shell | --xpath "XPath_expression" | --xpath0 "XPath_expression" | --copy | --recover | --huge | --nocompact | --nodefdtd | --nodict | --noenc | --noent | --nofixup-base-uris | --noout | --nonet | --path "PATH(S)" | --load-trace | --valid | --postvalid | --dtdvalid URL | --dtdvalidfpi FPI | --timing | --output FILE | --repeat | --insert | --strict-namespace | --compress | --html | --xmlout | --push | --memory | --max-ampl INTEGER | --maxmem NBBYTES | --nowarning | --noblanks | --nocdata | --format | --pretty INTEGER | --encode ENCODING | --dropdtd | --nsclean | --catalogs | --nocatalogs | --auto | --xinclude | --noxincludenode | --loaddtd | --dtdattr | --stream | --walker | --pattern PATTERNVALUE | --relaxng SCHEMA | --schema SCHEMA | --schematron SCHEMA | --c14n | --c14n11 | --exc-c14n | --pedantic | --sax | --sax1 | --oldxml10] {XML-FILE(S)... | -}

Description

The xmllint program parses one or more XML files, specified on the command line as XML-FILE (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​.

xmllint is part of the libxml2 library​.

Validation Options

Options enabling validation​.

--dtdvalid URL

Use the DTD specified by an URL for validation​.

--dtdvalidfpi FPI

Use the DTD specified by a Formal Public Identifier FPI for validation, note that this will require a catalog exporting that Formal Public Identifier to work​.

--relaxng SCHEMA

Use RelaxNG file named SCHEMA for validation​.

--schema SCHEMA

Use a W3C XML Schema file named SCHEMA for validation​.

--schematron SCHEMA

Use a Schematron file named SCHEMA for validation​.

--valid

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 --dtdvalid option​. By default, xmllint also checks to determine if the document is well-formed​.

--strict-namespace

Return an error if the document is well-formed, but has namespace errors​. This enforces namespace-well-formedness​.

Parser Options

The following options set the respective parser options​.

--dtdattr

Fetch external DTD and populate the tree with inherited attributes​. Implies --loaddtd​.

--huge

Ignore some hardcoded parser limits​.

--loaddtd

Fetch an external DTD and external parameter entities​.

--max-ampl INTEGER

Set the maximum amplification factor which protects against exponential entity expansion ("billion laughs")​. The default value is 5​. Documents making heavy use of entity expansion may require a higher value​.

--noblanks

Drop "ignorable" blank spaces​. This option is unreliable and shouldn't be used​.

--nocatalogs

Do not use any catalogs​.

--nocdata

Substitute CDATA section by equivalent text nodes​.

--nodefdtd

Do not set default HTML doctype (parser option HTML_PARSE_NODEFDTD)​.

--noenc

Ignore encoding declaration (parser option XML_PARSE_IGNORE_ENC)​.

--noent

Substitute entity values for entity references​. By default, xmllint leaves entity references in place​. This enables loading of external DTDs and entities​.

--nofixup-base-uris

Don't fix xml:base URIs when processing XIncludes (parser option XML_PARSE_NOBASEFIX)​.

--nonet

Do not use the Internet to fetch DTDs or entities​. Has no effect with libxml2 2​.15 or later​.

--nowarning

Do not emit warnings from the parser and/or validator​.

--nsclean

Remove redundant namespace declarations​.

--oldxml10

Use deprecated parsing rules before XML 1​.0, 5th edition​.

--pedantic

Enable additional warnings​.

--recover

Output any parsable portions of an invalid document​. Exact behavior is unspecified​. Use of this option is discouraged​.

--xinclude

Do XInclude processing​.

Miscellaneous Options

Options that don't fall in another category​.

--catalogs

Use the SGML catalog(s) from SGML_CATALOG_FILES​. XML catalogs are loaded by default​.

--dropdtd

Remove DTD after parsing​.

--html

Use the HTML parser​.

--path "PATH(S)"

Use the (space- or colon-separated) list of filesystem paths specified by PATHS to load DTDs or entities​. Enclose space-separated lists by quotation marks​.

--quiet

Don't print informational messages to stderr​.

--sax

Print SAX callbacks for debugging​. Can be used for streaming DTD and Schema validation when used with --noout​.

--shell

Run a navigating shell​. Details on available commands in shell mode are below (see the section called “Shell Commands”)​.

--stream

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​.

--version

Display the version of libxml2 used​.

Output Options

Options controlling output​. Except for --noout these have no effect in SAX or stream mode​.

--compress

Turn on gzip(1) compression of output​.

--c14n,  --c14n11,  --exc-c14n

Use the W3C XML Canonicalisation (C14N) to serialize the result of parsing to stdout​. It keeps comments in the result​.

--encode ENCODING

Output in the given encoding​. Note that this works for full document not fragments or result from XPath queries​.

--format

Reformat and reindent the output​. The XMLLINT_INDENT environment variable controls the indentation​. The default value is two spaces " ")​.

Especially in the absence of a DTD, this feature has never worked reliably and is fundamentally broken​.

--noout

Suppress output​. By default, xmllint outputs the result tree​.

--output FILE

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​.

--pretty INTEGER

Value 0 means no formatting, 1 means XML_SAVE_FORMAT (same as --format), 2 means XML_SAVE_WSNONSIG​.

--xmlout

Used in conjunction with --html​. 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​.

Debug Options

The following options can be used to debug the libxml2 library​. Behavior of these options may change without notice​.

--auto

Generate a small document for testing purposes​.

--copy

Test the internal copy implementation​.

--debug

Parse a file and output an annotated tree of the in-memory version of the document​.

--insert

Test for valid insertions​. DEPRECATED: This feature will be removed​.

--load-trace

Display all the documents loaded during the processing to stderr​.

--maxmem NNBYTES

Test the parser memory support​. NNBYTES 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​.

--memory

Parse from memory​.

--nocompact

Do not generate compact text nodes (parser option XML_PARSE_COMPACT)​. Only for debugging​.

--nodict

Don't use dictionaries (parser option XML_PARSE_NODICT)​. Only for debugging​.

--noxincludenode

Do XInclude processing but do not generate XInclude start and end nodes​.

--pattern PATTERNVALUE

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​.

--postvalid

Validate after parsing has completed​.

--push

Use the push mode of the parser​.

--repeat

Repeat 100 times, for timing or profiling​.

--sax1

Use deprecated SAX1 interface (only for debugging)​.

--timing

Output information about the time it takes xmllint to perform the various steps​.

--walker

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​.

--xpath "XPath_expression"

Run an XPath expression given as argument and print the result​. In case of a nodeset result, each node in the node set is serialized in full in the output​. In case of an empty node set the "XPath set is empty" result will be shown and exit code 11 will be returned​.​.

Shell Commands

xmllint offers an interactive shell mode invoked with the --shell command​. Available commands in shell mode include (in alphabetical order):

base

Display XML base of the node​.

bye

Leave the shell​.

cat NODE

Display the given node or the current one​.

cd PATH

Change the current node to the given path (if unique) or root if no argument is given​.

dir PATH

Dumps information about the node (namespace, attributes, content)​.

du PATH

Show the structure of the subtree under the given path or the current node​.

exit

Leave the shell​.

help

Show this help​.

load FILENAME

Load a new document with the given filename​.

ls PATH

List contents of the given path or the current directory​.

pwd

Display the path to the current node​.

quit

Leave the shell​.

save FILENAME

Save the current document to the given filename or to the original name​.

validate

Check the document for errors​.

write FILENAME

Write the current node to the given filename​.

Environment

SGML_CATALOG_FILES

SGML catalog behavior can be changed by redirecting queries to the user's own set of catalogs​. This can be done by setting the SGML_CATALOG_FILES environment variable to a list of catalogs​. An empty one should deactivate loading the default catalog​.

XML_CATALOG_FILES

XML catalog behavior can be changed by redirecting queries to the user's own set of catalogs​. This can be done by setting the XML_CATALOG_FILES environment variable to a space-separated list of catalogs​. Use percent-encoding to escape spaces or other characters​. An empty variable should deactivate loading the default catalog​.

XML_DEBUG_CATALOG

Setting the environment variable XML_DEBUG_CATALOG to non-zero using the export command outputs debugging information related to catalog operations​.

XMLLINT_INDENT

Setting the environment variable XMLLINT_INDENT controls the indentation​. The default value is two spaces " "​.

Diagnostics

xmllint return codes provide information that can be used when calling it from scripts​.

0

No error

1

Unclassified

2

Error in DTD

3

Validation error

4

Document isn't well-formed or couldn't be read

5

Error in schema compilation

6

Error writing output

7

Error in pattern (generated when --pattern option is used)

9

Out of memory error

10

XPath evaluation error

11

XPath result is empty

See Also

More information can be found in the libxml2 repo at https://gitlab.gnome.org/GNOME/libxml2

Authors

John Fleck <​jfleck@inkstain​.net​>

Ziying Sherwin <​sherwin@nlm​.nih​.gov​>

Heiko Rupp <​hwr@pilhuhn​.de​>

Info

09/08/2026 xmllint Manual