To support digital library work we are doing at Harvard, we have developed
a prototype Java toolkit that can be used to procedurally construct,
validate, serialize and de-serialize METS files.  The toolkit API is based
on Sun's JAXB specification.  Even though JAXB is supposed to include a
schema compiler to automatically generate Java binding classes from a
schema, since JAXB is still in pre-release development that compiler is not
yet available in suitable form.  So all of the toolkit classes have been
built manually.  (Not a terrible job; since they all have the same
structure, there was a lot of cut-and-paste.)  The low-level parser is
built on James Clark's XP.

The web page <> provides a better
description of the toolkit, as well as providing a link to a downloadable
version <>.  In addition
to all the source code, there are two test applications, one that
procedurally constructs, validates, and serializes a METS file, and one
that de-serializes a METS file to an in-memory representation of
instantiated toolkit classes.  The quickest way to get a feel for the
toolkit it to examine the source code for these two apps, and

Just to keep the internal toolkit structure in line with JAXB, I define
three packages, org.mets.xml.bind, org.mets.xml.marshal, and
org.mets.xml.mets.  This should be changed at some point, because the
domain name is registered to the Miami Evangelical Seminary.  As
METS tools such as this are developed, should there be a common package
naming scheme for them?

This is still a rough prototype, but it seems to work for the small amount
of simple testing that I have done so far.  I wanted to publicize this in
order to get feedback from the wider community.  For example: Is such a
toolkit a useful idea?  Is there a better solution already existing?  Is
JAXB a good model for the toolkit API?

I am planning to put together a more former and in depth description of the
toolkit for the Spring DLF forum.  Any comments that I receive before then
will be incorporated.