The test strategy for these tests are: 

1. Have a validation test driver (Validation.java) read in an archive file 
(testing various flavor of the archives), write it out to a new archive 
and read this new archive in again. During the reading, the parser will 
validate the xml files inside the archive. 

2. And we will write/read the resulted archive again also since some of the 
original xml files are dtd based, just to make sure the written out 
schema based xml can be written out and read correctly.

3. For standalone archive, we use the dtd format as the original xml. 
So we are testing the dtd -> xsd conversion as well. 
   For ear file, we use the schema format xml as the original. And add all the 
new elements which are only available in schema such as web services related 
elements.

4. The archives in this directory only contain the xml files and no classes 
files since the purpose of these tests are just validating the xml files.
   And try to have as comprehensive xml as we can, the elements together may 
not make much sensse, but the purpose here is just to test the validity 
of the xml.

5.We are only validating the standard Deployment Descriptors for the moment.
