=== PURPOSE ===

This file documents the changes made by the Apache Group to James
Clark's Expat parser. The original Expat distribution can be found at
http://www.jclark.com/xml/expat.html.


=== SUBSET INFORMATION ===

Apache does not choose (or need) to use the entire Expat parser
distribution. The subset that Apache will use will be referred to as
"expat-lite". In particular, this directory contains the files from
the following Expat distribution subdirectories:

  expat/xmltok/*
  expat/xmlparse/*

We also retain expat/expat.html for attribution to James Clark and
licensing information.

In addition, we remove expat/xmltok/dllmain.c from our version since
we statically link expat-lite into the executable (rather than
building a DLL on the Win32 platform). The *.dsp files are also
removed, since we place those elsewhere in the Apache source
distribution and they will have a very different structure.

Makefile.tmpl has been created from scratch to provide build
instructions to the Apache build system.

This file (CHANGES) has been added to document changes from the
original Expat distribution.


=== CHANGES TO ORIGINAL ===

There have been no changes made to any Expat file at this point in
time (May 31, 1999).

The files, in their original state from the Expat distribution, have
been tagged within CVS with the "EXPAT_1_1" tag. That tag may be used
as a reference for changes made by the Apache Group.
