 ====================================
       XMLSchema ${version} Release Notes
 ====================================

This is the release of XMLSchema ${version} of Apache WS-Commons. This release includes
numerous bug fixes and a new feature addition that enables users to register
extension types with the schema parser.

XMLSchema is a lightweight schema object model that can be used to manipulate 
and generate XML schema representations. It has no external dependencies
and can be easily integrated into an existing project.

You are welcome to kick the tires and get XMLSchema on the move. If you like
to help us shape XMLSchema any contribution in the form of coding, testing,
submitting improvements to the documentation, and reporting bugs are always
welcome.

Major Changes since the last release

  * The behavior of the getElementByName(QName name) and getTypeByName(QName name) has
    changed. Now this method triggers a search in the complete schema tree (including imported and
    included schemas) for the specified type. 
  * Two new methods have been added etElementByName(String name) and getTypeByName(String name) which
    would perform the search only in the current schema.
    
Thanks for your interest in XMLSchema!

- The XMLSchema Development Team
