The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes made to PPM in order to support XML::Parser
===================================================

===============================================================================
PPD file format
===============================================================================

- Created an XML DTD, based on my original notes, as well as information
  gleaned from the documentation Murray provided and the internals of PPM.
  Built in a similar fashion to the OSD DTD; _extremely_ flexible, to the point
  of not allowing for much data validation to take place.  Should be considered
  usable, by not necessarily complete or strict.

===============================================================================
PPM_DAT file format
===============================================================================

- Created an XML DTD, baed on information gleaned from the documentation Murray
  provided and the internals of PPM.  Built similarly to the DTD for PPD;
  flexible and not very strict.  At this point, the DTD is to be considered
  incomplete as it doesn't currently specify how PPD documents are to be kept
  internally.

- A number of elements were renamed due to their not being valid XML element
  names (cannot have an underscore in an element or attribute name):
    Old name                    New name
    -----------------------     -------------------------
    PPM_VER                     PPMVER
    PLATFORM::OS_VALUE          PLATFORM::OSVALUE
    PLATFORM::OS_VERSION        PLATFORM::OSVERSION
    OPTIONS::FORCE_INSTALL      OPTIONS::FORCEINSTALL
    OPTIONS::BUILD_DIR          OPTIONS::BUILDDIR
    PPM_PRECIOUS                PPMPRECIOUS
    INST_DATE                   INSTDATE
    INST_ROOT                   INSTROOT
    INST_PACKLIST               INSTPACKLIST
    INST_PPD                    INSTPPD

===============================================================================
New modules/scripts
===============================================================================

- With the release of XML::Parser-2.09, they have reintroduced 'Styles' back
  into the parser.  A style refers to the style of parser that is requested,
  allowing for parsing via either subroutines, data structures, or an object
  hierarchy.  For PPM, I've gone the route of using objects to refer to each of
  the elements within the documents.  This allows for a fairly robust way to
  deal with the document once you've read it into memory by giving us the
  ability to do validation against some of the DTD requirements (e.g. required
  attributes/child elements).
  - Creating a new XML document by object can be a bit lengthy as we need to
    allocate each element individually, but this also allows us to validate our
    own XML documents before outputting them anywhere.

- Created an XML::Element module.
  - Allows for outputting of XML elements as well as creation via 'new'.

- Created an XML::ValidatingElement module.
  - Allows for elements to have some basic validation done on them by providing
    lists of optional/required attributes/child elements.

- Created an XML::PPD module.
  - Defines all of the elements valid in a PPD file, as well as providing
    validation rules for each of the elements.  Full documentation on the file
    format is included in the POD, as well as a copy of the DTD that it
    validates against and a sample PPD file.

- Created an XML::PPMConfig module.
  - Defines all of the elements valid in the PPM configuration file, as well as
    providing validation rules for each of the elements.  Full documentation on
    the file format is included in the POD, as well as a copy of the DTD that
    it validates against and a sample PPMConfig file.

- Created a 'updateppmconf' script.
  - Converts a PPM configuration file from the old format (with underscores) to
    the new format which is suitable for reading with XML::Parser.

===============================================================================
Changes to PPM.pm
===============================================================================

- Updated to use the XML::PPMConfig, XML::PPD, and XML::Parser modules.
  - Went through the entire module and replaced all references to using the
    original data structure provided by Osd.pm to use the object model provided
    by these modules.  Made the code for parsing a heck of a lot easier to
    write, it's just a bit trickier to build an XML document than before (can't
    just use 'print...').

- Removed the POD documentation outlining the structure/format of the PPM
  configuration file, and refer people to XML::PPMConfig instead.