<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [

<!-- Process this file with docbook-to-man to generate an nroff manual
     page: `docbook-to-man manpage.sgml > manpage.1'.  You may view
     the manual page with: `docbook-to-man manpage.sgml | nroff -man |
     less'.  A typical entry in a Makefile or Makefile.am is:

manpage.1: manpage.sgml
	docbook-to-man $< > $@
  -->

  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
  <!ENTITY dhfirstname "<firstname>Scott</firstname>">
  <!ENTITY dhsurname   "<surname>Bronson</surname>">
  <!-- Please adjust the date whenever revising the manpage. -->
  <!ENTITY dhdate      "<date>December  5, 2001</date>">
  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
       allowed: see man(7), man(1). -->
  <!ENTITY dhsection   "<manvolnum>1</manvolnum>">
  <!ENTITY dhemail     "<email>bronson@rinspin.com</email>">
  <!ENTITY dhusername  "Scott Bronson">
  <!ENTITY dhucpackage "<refentrytitle>XMLWF</refentrytitle>">
  <!ENTITY dhpackage   "xmlwf">

  <!ENTITY debian      "<productname>Debian GNU/Linux</productname>">
  <!ENTITY gnu         "<acronym>GNU</acronym>">
]>

<refentry>
  <refentryinfo>
    <address>
      &dhemail;
    </address>
    <author>
      &dhfirstname;
      &dhsurname;
    </author>
    <copyright>
      <year>2001</year>
      <holder>&dhusername;</holder>
    </copyright>
    &dhdate;
  </refentryinfo>
  <refmeta>
    &dhucpackage;

    &dhsection;
  </refmeta>
  <refnamediv>
    <refname>&dhpackage;</refname>

    <refpurpose>Determines if an XML document is well-formed</refpurpose>
  </refnamediv>
  <refsynopsisdiv>
    <cmdsynopsis>
      <command>&dhpackage;</command>
	  <arg><option>-s</option></arg>
	  <arg><option>-n</option></arg>
	  <arg><option>-p</option></arg>
	  <arg><option>-x</option></arg>

	  <arg><option>-e <replaceable>encoding</replaceable></option></arg>
	  <arg><option>-w</option></arg>

	  <arg><option>-d <replaceable>output-dir</replaceable></option></arg>
	  <arg><option>-c</option></arg>
	  <arg><option>-m</option></arg>

	  <arg><option>-r</option></arg>
	  <arg><option>-t</option></arg>

	  <arg><option>-v</option></arg>

	  <arg>file ...</arg>
    </cmdsynopsis>
  </refsynopsisdiv>
 
  <refsect1>
    <title>DESCRIPTION</title>

    <para>
	<command>&dhpackage;</command> uses the Expat library to
	determine if an XML document is well-formed.  It is
	non-validating.
	</para>

	<para>
	If you do not specify any files on the command-line, and you
	have a recent version of <command>&dhpackage;</command>, the
	input file will be read from standard input.
	</para>

  </refsect1>

  <refsect1>
    <title>WELL-FORMED DOCUMENTS</title>

	<para>
	  A well-formed document must adhere to the
	  following rules:
	</para>

	<itemizedlist>
      <listitem><para>
	    The file begins with an XML declaration.  For instance,
		<literal>&lt;?xml version="1.0" standalone="yes"?&gt;</literal>.
		<emphasis>NOTE:</emphasis>
		<command>&dhpackage;</command> does not currently
		check for a valid XML declaration.
      </para></listitem>
      <listitem><para>
		Every start tag is either empty (&lt;tag/&gt;)
		or has a corresponding end tag.
      </para></listitem>
      <listitem><para>
	    There is exactly one root element.  This element must contain
		all other elements in the document.  Only comments, white
		space, and processing instructions may come after the close
		of the root element.
      </para></listitem>
      <listitem><para>
		All elements nest properly.
      </para></listitem>
      <listitem><para>
		All attribute values are enclosed in quotes (either single
		or double).
      </para></listitem>
    </itemizedlist>

	<para>
	  If the document has a DTD, and it strictly complies with that
	  DTD, then the document is also considered <emphasis>valid</emphasis>.
	  <command>&dhpackage;</command> is a non-validating parser --
	  it does not check the DTD.  However, it does support
	  external entities (see the <option>-x</option> option).
	</para>
  </refsect1>

  <refsect1>
    <title>OPTIONS</title>

<para>
When an option includes an argument, you may specify the argument either
separately ("<option>-d</option> output") or concatenated with the
option ("<option>-d</option>output").  <command>&dhpackage;</command>
supports both.
</para>

    <variablelist>

      <varlistentry>
        <term><option>-c</option></term>
        <listitem>
		<para>
  If the input file is well-formed and <command>&dhpackage;</command>
  doesn't encounter any errors, the input file is simply copied to
  the output directory unchanged.
  This implies no namespaces (turns off <option>-n</option>) and
  requires <option>-d</option> to specify an output file.
  		</para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-d output-dir</option></term>
        <listitem>
		<para>
  Specifies a directory to contain transformed
  representations of the input files.
  By default, <option>-d</option> outputs a canonical representation
  (described below).
  You can select different output formats using <option>-c</option>
  and <option>-m</option>.
	  </para>
	  <para>
  The output filenames will
  be exactly the same as the input filenames or "STDIN" if the input is
  coming from standard input.  Therefore, you must be careful that the
  output file does not go into the same directory as the input
  file.  Otherwise, <command>&dhpackage;</command> will delete the
  input file before it generates the output file (just like running
  <literal>cat &lt; file &gt; file</literal> in most shells).
	  </para>
	  <para> 
  Two structurally equivalent XML documents have a byte-for-byte
  identical canonical XML representation.
  Note that ignorable white space is considered significant and
  is treated equivalently to data.
  More on canonical XML can be found at
  http://www.jclark.com/xml/canonxml.html .
	  </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-e encoding</option></term>
        <listitem>
		<para>
   Specifies the character encoding for the document, overriding
   any document encoding declaration.  <command>&dhpackage;</command>
   supports four built-in encodings:
   	<literal>US-ASCII</literal>,
	<literal>UTF-8</literal>,
	<literal>UTF-16</literal>, and
	<literal>ISO-8859-1</literal>.
   Also see the <option>-w</option> option.
	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-m</option></term>
        <listitem>
		<para>
  Outputs some strange sort of XML file that completely
  describes the the input file, including character postitions.
  Requires <option>-d</option> to specify an output file.
	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-n</option></term>
        <listitem>
		<para>
  Turns on namespace processing.  (describe namespaces)
  <option>-c</option> disables namespaces.
	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-p</option></term>
        <listitem>
		<para>
    Tells xmlwf to process external DTDs and parameter
    entities.
	 </para>
	 <para>
   Normally <command>&dhpackage;</command> never parses parameter
   entities.  <option>-p</option> tells it to always parse them.
   <option>-p</option> implies <option>-x</option>.
	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-r</option></term>
        <listitem>
		<para>
   Normally <command>&dhpackage;</command> memory-maps the XML file
   before parsing; this can result in faster parsing on many
   platforms.
   <option>-r</option> turns off memory-mapping and uses normal file
   IO calls instead.
   Of course, memory-mapping is automatically turned off
   when reading from standard input.
	   </para>
		<para>
   Use of memory-mapping can cause some platforms to report
   substantially higher memory usage for
   <command>&dhpackage;</command>, but this appears to be a matter of
   the operating system reporting memory in a strange way; there is
   not a leak in <command>&dhpackage;</command>.
           </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-s</option></term>
        <listitem>
		<para>
  Prints an error if the document is not standalone. 
  A document is standalone if it has no external subset and no
  references to parameter entities.
	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-t</option></term>
        <listitem>
		<para>
  Turns on timings.  This tells Expat to parse the entire file,
  but not perform any processing.
  This gives a fairly accurate idea of the raw speed of Expat itself
  without client overhead.
  <option>-t</option> turns off most of the output options
  (<option>-d</option>, <option>-m</option>, <option>-c</option>,
  ...).
	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-v</option></term>
        <listitem>
		<para>
  Prints the version of the Expat library being used, including some
  information on the compile-time configuration of the library, and
  then exits.
	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-w</option></term>
        <listitem>
		<para>
  Enables support for Windows code pages.
  Normally, <command>&dhpackage;</command> will throw an error if it
  runs across an encoding that it is not equipped to handle itself.  With
  <option>-w</option>, &dhpackage; will try to use a Windows code
  page.  See also <option>-e</option>.
	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>-x</option></term>
        <listitem>
		<para>
  Turns on parsing external entities.
  </para>
<para>
  Non-validating parsers are not required to resolve external
  entities, or even expand entities at all.
  Expat always expands internal entities (?),
  but external entity parsing must be enabled explicitly.
  </para>
  <para>
  External entities are simply entities that obtain their
  data from outside the XML file currently being parsed.
  </para>
  <para>
  This is an example of an internal entity:
<literallayout>
&lt;!ENTITY vers '1.0.2'&gt;
</literallayout>
  </para>
  <para>
  And here are some examples of external entities:

<literallayout>
&lt;!ENTITY header SYSTEM "header-&amp;vers;.xml"&gt;  (parsed)
&lt;!ENTITY logo SYSTEM "logo.png" PNG&gt;         (unparsed)
</literallayout>

	   </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><option>--</option></term>
        <listitem>
		<para>
    (Two hyphens.)
    Terminates the list of options.  This is only needed if a filename
    starts with a hyphen.  For example:
	   </para>
<literallayout>
&dhpackage; -- -myfile.xml
</literallayout>
		<para>
    will run <command>&dhpackage;</command> on the file
    <filename>-myfile.xml</filename>.
	   </para>
        </listitem>
      </varlistentry>
    </variablelist>

	<para>
    Older versions of <command>&dhpackage;</command> do not support
    reading from standard input.
	</para>
  </refsect1>

  <refsect1>
  <title>OUTPUT</title>
    <para>
	If an input file is not well-formed,
	<command>&dhpackage;</command> prints a single line describing
	the problem to standard output.  If a file is well formed,
	<command>&dhpackage;</command> outputs nothing.
	Note that the result code is <emphasis>not</emphasis> set.
	</para>
  </refsect1>
  
  <refsect1>
    <title>BUGS</title>
	<para>
	<command>&dhpackage;</command> returns a 0 - noerr result,
	even if the file is not well-formed.  There is no good way for
	a program to use <command>&dhpackage;</command> to quickly
	check a file -- it must parse <command>&dhpackage;</command>'s
	standard output.
	</para>
	<para>
	The errors should go to standard error, not standard output.
	</para>
	<para>
	There should be a way to get <option>-d</option> to send its
	output to standard output rather than forcing the user to send
	it to a file.
	</para>
	<para>
	I have no idea why anyone would want to use the
	<option>-d</option>, <option>-c</option>, and
	<option>-m</option> options.  If someone could explain it to
	me, I'd like to add this information to this manpage.
	</para>
  </refsect1>

  <refsect1>
    <title>ALTERNATIVES</title>
	<para>
	  Here are some XML validators on the web:

<literallayout>
http://www.hcrc.ed.ac.uk/~richard/xml-check.html
http://www.stg.brown.edu/service/xmlvalid/
http://www.scripting.com/frontier5/xml/code/xmlValidator.html
http://www.xml.com/pub/a/tools/ruwf/check.html
</literallayout>

		 </para>
  </refsect1>

  <refsect1>
    <title>SEE ALSO</title>
	<para>

<literallayout>
The Expat home page:        http://www.libexpat.org/
The W3 XML specification:   http://www.w3.org/TR/REC-xml
</literallayout>

	</para>
  </refsect1>

  <refsect1>
    <title>AUTHOR</title>
    <para>
	  This manual page was written by &dhusername; &dhemail; for
      the &debian; system (but may be used by others).  Permission is
      granted to copy, distribute and/or modify this document under
      the terms of the <acronym>GNU</acronym> Free Documentation
      License, Version 1.1.
	</para>
  </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
