Apache Geronimo
Copyright 2003-2007 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

Apache Geronimo elects to include the following files in this distribution
under the CDDL license:

===========================
  application-client_1_4.xsd
  application_1_4.xsd
  connector_1_5.xsd
  datatypes.dtd
  ejb-jar_2_1.xsd
  j2ee_1_4.xsd
  j2ee_jaxrpc_mapping_1_1.xsd
  j2ee_web_services_1_1.xsd
  j2ee_web_services_client_1_1.xsd
  jsp_2_0.xsd
  web-app_2_4.xsd
  web-jsptaglibrary_2_0.xsd
  xml.xsd
  XMLSchema.dtd
===========================
