.\" This manpage has been automatically generated by docbook2man 
.\" from a DocBook document.  This tool can be found at:
.\" <http://shell.ipoline.com/~elmert/comp/docbook2X/> 
.\" Please send any bug reports, improvements, comments, patches, 
.\" etc. to Steve Cheng <steve@ggi-project.org>.
.TH "XMLWF" "1" "24 January 2003" "" ""
.SH NAME
xmlwf \- Determines if an XML document is well-formed
.SH SYNOPSIS

\fBxmlwf\fR [ \fB-s\fR]  [ \fB-n\fR]  [ \fB-p\fR]  [ \fB-x\fR]  [ \fB-e \fIencoding\fB\fR]  [ \fB-w\fR]  [ \fB-d \fIoutput-dir\fB\fR]  [ \fB-c\fR]  [ \fB-m\fR]  [ \fB-r\fR]  [ \fB-t\fR]  [ \fB-v\fR]  [ \fBfile ...\fR] 

.SH "DESCRIPTION"
.PP
\fBxmlwf\fR uses the Expat library to
determine if an XML document is well-formed.  It is
non-validating.
.PP
If you do not specify any files on the command-line, and you
have a recent version of \fBxmlwf\fR, the
input file will be read from standard input.
.SH "WELL-FORMED DOCUMENTS"
.PP
A well-formed document must adhere to the
following rules:
.TP 0.2i
\(bu
The file begins with an XML declaration.  For instance,
<?xml version="1.0" standalone="yes"?>.
\fBNOTE:\fR
\fBxmlwf\fR does not currently
check for a valid XML declaration.
.TP 0.2i
\(bu
Every start tag is either empty (<tag/>)
or has a corresponding end tag.
.TP 0.2i
\(bu
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.
.TP 0.2i
\(bu
All elements nest properly.
.TP 0.2i
\(bu
All attribute values are enclosed in quotes (either single
or double).
.PP
If the document has a DTD, and it strictly complies with that
DTD, then the document is also considered \fBvalid\fR.
\fBxmlwf\fR is a non-validating parser --
it does not check the DTD.  However, it does support
external entities (see the \fB-x\fR option).
.SH "OPTIONS"
.PP
When an option includes an argument, you may specify the argument either
separately ("\fB-d\fR output") or concatenated with the
option ("\fB-d\fRoutput").  \fBxmlwf\fR
supports both.
.TP
\fB-c\fR
If the input file is well-formed and \fBxmlwf\fR
doesn't encounter any errors, the input file is simply copied to
the output directory unchanged.
This implies no namespaces (turns off \fB-n\fR) and
requires \fB-d\fR to specify an output file.
.TP
\fB-d output-dir\fR
Specifies a directory to contain transformed
representations of the input files.
By default, \fB-d\fR outputs a canonical representation
(described below).
You can select different output formats using \fB-c\fR
and \fB-m\fR.

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, \fBxmlwf\fR will delete the
input file before it generates the output file (just like running
cat < file > file in most shells).

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 .
.TP
\fB-e encoding\fR
Specifies the character encoding for the document, overriding
any document encoding declaration.  \fBxmlwf\fR
supports four built-in encodings:
US-ASCII,
UTF-8,
UTF-16, and
ISO-8859-1.
Also see the \fB-w\fR option.
.TP
\fB-m\fR
Outputs some strange sort of XML file that completely
describes the the input file, including character postitions.
Requires \fB-d\fR to specify an output file.
.TP
\fB-n\fR
Turns on namespace processing.  (describe namespaces)
\fB-c\fR disables namespaces.
.TP
\fB-p\fR
Tells xmlwf to process external DTDs and parameter
entities.

Normally \fBxmlwf\fR never parses parameter
entities.  \fB-p\fR tells it to always parse them.
\fB-p\fR implies \fB-x\fR.
.TP
\fB-r\fR
Normally \fBxmlwf\fR memory-maps the XML file
before parsing; this can result in faster parsing on many
platforms.
\fB-r\fR turns off memory-mapping and uses normal file
IO calls instead.
Of course, memory-mapping is automatically turned off
when reading from standard input.

Use of memory-mapping can cause some platforms to report
substantially higher memory usage for
\fBxmlwf\fR, but this appears to be a matter of
the operating system reporting memory in a strange way; there is
not a leak in \fBxmlwf\fR.
.TP
\fB-s\fR
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.
.TP
\fB-t\fR
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.
\fB-t\fR turns off most of the output options
(\fB-d\fR, \fB-m\fR, \fB-c\fR,
\&...).
.TP
\fB-v\fR
Prints the version of the Expat library being used, including some
information on the compile-time configuration of the library, and
then exits.
.TP
\fB-w\fR
Enables support for Windows code pages.
Normally, \fBxmlwf\fR will throw an error if it
runs across an encoding that it is not equipped to handle itself.  With
\fB-w\fR, xmlwf will try to use a Windows code
page.  See also \fB-e\fR.
.TP
\fB-x\fR
Turns on parsing external entities.

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.

External entities are simply entities that obtain their
data from outside the XML file currently being parsed.

This is an example of an internal entity:

.nf
<!ENTITY vers '1.0.2'>
.fi

And here are some examples of external entities:

.nf
<!ENTITY header SYSTEM "header-&vers;.xml">  (parsed)
<!ENTITY logo SYSTEM "logo.png" PNG>         (unparsed)
.fi
.TP
\fB--\fR
(Two hyphens.)
Terminates the list of options.  This is only needed if a filename
starts with a hyphen.  For example:

.nf
xmlwf -- -myfile.xml
.fi

will run \fBxmlwf\fR on the file
\fI-myfile.xml\fR.
.PP
Older versions of \fBxmlwf\fR do not support
reading from standard input.
.SH "OUTPUT"
.PP
If an input file is not well-formed,
\fBxmlwf\fR prints a single line describing
the problem to standard output.  If a file is well formed,
\fBxmlwf\fR outputs nothing.
Note that the result code is \fBnot\fR set.
.SH "BUGS"
.PP
According to the W3C standard, an XML file without a
declaration at the beginning is not considered well-formed.
However, \fBxmlwf\fR allows this to pass.
.PP
\fBxmlwf\fR returns a 0 - noerr result,
even if the file is not well-formed.  There is no good way for
a program to use \fBxmlwf\fR to quickly
check a file -- it must parse \fBxmlwf\fR's
standard output.
.PP
The errors should go to standard error, not standard output.
.PP
There should be a way to get \fB-d\fR to send its
output to standard output rather than forcing the user to send
it to a file.
.PP
I have no idea why anyone would want to use the
\fB-d\fR, \fB-c\fR, and
\fB-m\fR options.  If someone could explain it to
me, I'd like to add this information to this manpage.
.SH "ALTERNATIVES"
.PP
Here are some XML validators on the web:

.nf
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
.fi
.SH "SEE ALSO"
.PP

.nf
The Expat home page:        http://www.libexpat.org/
The W3 XML specification:   http://www.w3.org/TR/REC-xml
.fi
.SH "AUTHOR"
.PP
This manual page was written by Scott Bronson <bronson@rinspin.com> for
the Debian GNU/Linux system (but may be used by others).  Permission is
granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation
License, Version 1.1.
