<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>xmllint</title><meta name="generator" content="DocBook XSL Stylesheets V1.61.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" lang="en"><a name="id2876302"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2>Name</h2><p>xmllint &#8212; command line <span class="acronym">XML</span> tool</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="cmdsynopsis"><p><tt class="command">xmllint</tt>  [[--version] |  [--debug] |  [--shell] |  [--debugent] |  [--copy] |  [--recover] |  [--noent] |  [--noout] |  [--nonet] |  [--htmlout] |  [--nowrap] |  [--valid] |  [--postvalid] |  [--dtdvalid <i class="replaceable"><tt>URL</tt></i>] |  [--dtdvalidfpi <i class="replaceable"><tt>FPI</tt></i>] |  [--timing] |  [--output <i class="replaceable"><tt>file</tt></i>] |  [--repeat] |  [--insert] |  [--compress] |  [--html] |  [--xmlout] |  [--push] |  [--memory] |  [--maxmem <i class="replaceable"><tt>nbbytes</tt></i>] |  [--nowarning] |  [--noblanks] |  [--nocdata] |  [--format] |  [--encode <i class="replaceable"><tt>encoding</tt></i>] |  [--dropdtd] |  [--nsclean] |  [--testIO] |  [--catalogs] |  [--nocatalogs] |  [--auto] |  [--xinclude] |  [--noxincludenode] |  [--loaddtd] |  [--dtdattr] |  [--stream] |  [--walker] |  [--pattern <i class="replaceable"><tt>patternvalue</tt></i>] |  [--chkregister] |  [--relaxng] |  [--schema] |  [--c14n]] [<tt class="option"><i class="replaceable"><tt>xmlfile</tt></i></tt>]</p></div></div><div class="refsect1" lang="en"><a name="introduction"></a><h2>Introduction</h2><p>
      The xmllint program parses one or more XML files, specified on the
      command line as <i class="replaceable"><tt>xmlfile</tt></i>. It prints various
      types of output, depending upon the options selected. It is useful for
      detecting errors both in <span class="acronym">XML</span> code and in the
      <span class="acronym">XML</span> parser itself.
    </p><p>
      It is included in <span class="application">libxml2</span>.
    </p></div><div class="refsect1" lang="en"><a name="options"></a><h2>Options</h2><div class="variablelist"><dl><dt><span class="term"><tt class="option">--version</tt></span></dt><dd>
	    Display the version of
	    <span class="application">libxml2</span> used.
	  </dd><dt><span class="term"><tt class="option">--debug</tt></span></dt><dd>
	    Parse a file and output an annotated tree of the
	    in-memory version of the document.
	  </dd><dt><span class="term"><tt class="option">--shell</tt></span></dt><dd>
	    Run a navigating shell. Details on available commands in shell mode
	    are below.
	  </dd><dt><span class="term"><tt class="option">--debugent</tt></span></dt><dd>
	    Debug the entities defined in the document.
	  </dd><dt><span class="term"><tt class="option">--copy</tt> </span></dt><dd>
	    Test the internal copy implementation.
	  </dd><dt><span class="term"><tt class="option">--recover</tt></span></dt><dd>
	    Output any parsable portions of an invalid
	    document.
	  </dd><dt><span class="term"><tt class="option">--noent</tt></span></dt><dd>
	    Substitute entity values for entity
	    references. By default, <span class="application">xmllint</span> leaves entity
	    references in place.
	  </dd><dt><span class="term"><tt class="option">--nocdata</tt></span></dt><dd>
	    Substitute CDATA section by equivalent text nodes.
	  </dd><dt><span class="term"><tt class="option">--nsclean</tt></span></dt><dd>
	    Remove redundant namespace declarations.
	  </dd><dt><span class="term"><tt class="option">--noout</tt></span></dt><dd>
	    Suppress output. By default,
	    <span class="application">xmllint</span> outputs the result tree.
	  </dd><dt><span class="term"><tt class="option">--htmlout</tt></span></dt><dd>
	    Output results as an <span class="acronym">HTML</span>
	    file. This causes <span class="application">xmllint</span> to output
	    the necessary <span class="acronym">HTML</span> tags surrounding the result tree
	    output so the results can be displayed in a browser. 
	  </dd><dt><span class="term"><tt class="option">--nowrap </tt></span></dt><dd>
	    Do not output HTML doc wrapper.
	  </dd><dt><span class="term"><tt class="option">--valid </tt></span></dt><dd>
	    Determine if the document is a valid instance
	    of the included Document Type Definition (<span class="acronym">DTD</span>). A
	    <span class="acronym">DTD</span> to be validated against also can be specified at
	    the command line using the <tt class="option">--dtdvalid</tt> option. By default,
	    <span class="application">xmllint</span> also checks to determine if the
	    document is well-formed.
	  </dd><dt><span class="term"><tt class="option">--postvalid</tt></span></dt><dd>
	    Validate after parsing is completed.
	  </dd><dt><span class="term"> <tt class="option">--dtdvalid</tt> <i class="replaceable"><tt>URL</tt></i></span></dt><dd>
	    Use the
      <span class="acronym">DTD</span> specified by <i class="replaceable"><tt>URL</tt></i> for
      validation.
	  </dd><dt><span class="term"> <tt class="option">--dtdvalidfpi</tt> <i class="replaceable"><tt>FPI</tt></i></span></dt><dd>
	    Use the
      <span class="acronym">DTD</span> specified by the Public Identifier
      <i class="replaceable"><tt>FPI</tt></i> for validation, note that this
      will require a Catalog exporting that Public Identifier to work.
	  </dd><dt><span class="term"><tt class="option">--timing</tt></span></dt><dd>
	    Output information about the time it takes
	    <span class="application">xmllint</span> to perform the various steps.
	  </dd><dt><span class="term"><tt class="option">--output</tt> <i class="replaceable"><tt>file</tt></i></span></dt><dd>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.</dd><dt><span class="term"><tt class="option">--repeat</tt></span></dt><dd>
	    Repeat 100 times, for timing or profiling.
	  </dd><dt><span class="term"><tt class="option">--insert</tt></span></dt><dd>
	    Test for valid insertions.
	  </dd><dt><span class="term"><tt class="option">--compress</tt></span></dt><dd>
	    Turn on gzip compression of output.
	  </dd><dt><span class="term"><tt class="option">--html</tt></span></dt><dd>
	    Use the <span class="acronym">HTML</span> parser.
	  </dd><dt><span class="term"><tt class="option">--xmlout</tt></span></dt><dd>Used in conjunction with <tt class="option">--html</tt>. 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.</dd><dt><span class="term"><tt class="option">--push</tt></span></dt><dd>
	    Use the push mode of the parser.
	  </dd><dt><span class="term"><tt class="option">--memory</tt></span></dt><dd>
	   Parse from memory.
	  </dd><dt><span class="term"><tt class="option">--maxmem</tt> <i class="replaceable"><tt>nnbytes</tt></i></span></dt><dd>Test the parser memory
  support. <i class="replaceable"><tt>nnbytes</tt></i> 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.</dd><dt><span class="term"><tt class="option">--nowarning</tt></span></dt><dd>
	   Do not emit warnings from the parser and/or validator.
	  </dd><dt><span class="term"><tt class="option">--noblanks</tt></span></dt><dd>
	   Drop ignorable blank spaces.
	  </dd><dt><span class="term"><tt class="option">--format</tt></span></dt><dd>
	   Reformat and reindent the output. The $XMLLINT_INDENT
	   environment variable controls the indentation (default 
	   value is two spaces "  ").
	  </dd><dt><span class="term"><tt class="option">--testIO</tt></span></dt><dd>
	   Test user input/output support.
	  </dd><dt><span class="term"><tt class="option">--encode</tt> <i class="replaceable"><tt>encoding</tt></i></span></dt><dd>
	   Output in the given encoding.
	  </dd><dt><span class="term"><tt class="option">--catalogs</tt></span></dt><dd>
	   Use the catalogs from $SGML_CATALOG_FILES. Otherwise /etc/xml/catalog
	   is used by default.
	  </dd><dt><span class="term"><tt class="option">--nocatalogs</tt></span></dt><dd>
	   Do not use any catalogs.
	  </dd><dt><span class="term"><tt class="option">--auto</tt></span></dt><dd>
	   Generate a small document for testing purposes.
	  </dd><dt><span class="term"><tt class="option">--xinclude</tt></span></dt><dd>
	   Do XInclude processing.
	  </dd><dt><span class="term"><tt class="option">--noxincludenode</tt></span></dt><dd>
	   Do XInclude processing but do not generate XInclude start and end
	   nodes.
	  </dd><dt><span class="term"><tt class="option">--loaddtd</tt></span></dt><dd>
	   Fetch external DTD.
	  </dd><dt><span class="term"><tt class="option">--dtdattr</tt></span></dt><dd>
	   Fetch external DTD and populate the tree with inherited attributes.
	  </dd><dt><span class="term"><tt class="option">--dropdtd</tt></span></dt><dd>
	    Remove <span class="acronym">DTD</span> from output.
	  </dd><dt><span class="term"><tt class="option">--stream</tt></span></dt><dd>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.</dd><dt><span class="term"><tt class="option">--walker</tt></span></dt><dd>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.</dd><dt><span class="term"><tt class="option">--chkregister</tt></span></dt><dd>Turn on node registration. Useful for developers testing
	  libxml2 node tracking code.</dd><dt><span class="term"><tt class="option">--pattern</tt> <i class="replaceable"><tt>patternvalue</tt></i></span></dt><dd>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.</dd><dt><span class="term"><tt class="option">--relaxng</tt> <i class="replaceable"><tt>schema</tt></i></span></dt><dd>Use RelaxNG file named <i class="replaceable"><tt>schema</tt></i> for
	  validation.</dd><dt><span class="term"><tt class="option">--schema</tt> <i class="replaceable"><tt>schema</tt></i></span></dt><dd>Use a W3C XML Schema file named <i class="replaceable"><tt>schema</tt></i> for validation.</dd><dt><span class="term">
      <tt class="option">--c14n</tt></span></dt><dd>Use the W3C XML Canonicalisation (C14N) to
serialize the result of parsing to stdout. It keeps comments in
the result.</dd></dl></div></div><div class="refsect1" lang="en"><a name="shell"></a><h2>Shell</h2><p>
      <span class="application">xmllint</span> offers an interactive shell mode
      invoked with the <tt class="option">--shell</tt> command. Available commands in
      shell mode include:
    </p><div class="variablelist"><dl><dt><span class="term"><tt class="option">base</tt></span></dt><dd>
	    display XML base of the node
	  </dd><dt><span class="term"><tt class="option">bye</tt></span></dt><dd>
	    leave shell
	  </dd><dt><span class="term"><tt class="option">cat <i class="replaceable"><tt>node</tt></i></tt></span></dt><dd>
	    Display node if given or current node.
	  </dd><dt><span class="term"><tt class="option">cd <i class="replaceable"><tt>path</tt></i></tt></span></dt><dd>
	    Change the current node to <i class="replaceable"><tt>path</tt></i> (if given
	    and unique) or root if no argument given.
	  </dd><dt><span class="term"><tt class="option">dir <i class="replaceable"><tt>path</tt></i></tt></span></dt><dd>
	    Dumps information about the node (namespace, attributes, content).
	  </dd><dt><span class="term"><tt class="option">du <i class="replaceable"><tt>path</tt></i></tt></span></dt><dd>
	    Show the structure of the subtree under path or the current node.
	  </dd><dt><span class="term"><tt class="option">exit</tt></span></dt><dd>
	    Leave the shell.
	  </dd><dt><span class="term"><tt class="option">help</tt></span></dt><dd>
	    Show this help.
	  </dd><dt><span class="term"><tt class="option">free</tt></span></dt><dd>
	    Display memory usage.
	  </dd><dt><span class="term"><tt class="option">load <i class="replaceable"><tt>name</tt></i></tt></span></dt><dd>
	    Load a new document with the given name.
	  </dd><dt><span class="term"><tt class="option">ls <i class="replaceable"><tt>path</tt></i></tt></span></dt><dd>
	    List contents of <i class="replaceable"><tt>path</tt></i> (if given) or the
	    current directory.
	  </dd><dt><span class="term"><tt class="option">pwd</tt></span></dt><dd>
	    Display the path to the current node.
	  </dd><dt><span class="term"><tt class="option">quit</tt></span></dt><dd>
	    Leave the shell.
	  </dd><dt><span class="term"><tt class="option">save <i class="replaceable"><tt>name</tt></i></tt></span></dt><dd>
	    Saves the current document to <i class="replaceable"><tt>name</tt></i> if
	    given or to the original name.
	  </dd><dt><span class="term"><tt class="option">validate</tt></span></dt><dd>
	    Check the document for error.
	  </dd><dt><span class="term"><tt class="option">write <i class="replaceable"><tt>name</tt></i></tt></span></dt><dd>
	    Write the current node to the given filename.
	  </dd></dl></div></div><div class="refsect1" lang="en"><h2>Catalogs</h2><p>Catalog behavior can be changed by redirecting
     queries to the user's own set of catalogs. This can be done by setting the
     <tt class="varname">XML_CATALOG_FILES</tt> environment variable to a list of
     catalogs. An empty one should deactivate loading the default
      <tt class="filename">/etc/xml/catalog</tt> default catalog.</p></div><div class="refsect1" lang="en"><h2>Debugging Catalogs</h2><p>Setting the environment variable <tt class="varname">XML_DEBUG_CATALOG</tt>
    using the command <b class="command">"export XML_DEBUG_CATALOG="</b>
    outputs debugging information related to catalog operations.</p></div><div class="refsect1" lang="en"><h2>Error Return Codes</h2><p>On the completion of execution, <span class="application">Xmllint</span>
    returns the following error codes:</p><div class="variablelist"><dl><dt><span class="term">0</span></dt><dd>No error</dd><dt><span class="term">1</span></dt><dd>Unclassified</dd><dt><span class="term">2</span></dt><dd>Error in DTD</dd><dt><span class="term">3</span></dt><dd>Validation error</dd><dt><span class="term">4</span></dt><dd>Validation error</dd><dt><span class="term">5</span></dt><dd>Error in schema compilation</dd><dt><span class="term">6</span></dt><dd>Error writing output</dd><dt><span class="term">7</span></dt><dd>Error in pattern (generated when
	  [<span class="optional">--pattern</span>] option is used)</dd><dt><span class="term">8</span></dt><dd>Error in Reader registration (generated when
	  [<span class="optional">--chkregister</span>] option is used)</dd><dt><span class="term">9</span></dt><dd>Out of memory error</dd></dl></div></div></div></body></html>
