<!--
  Copyright 2002,2004 The Apache Software Foundation.
  
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<html>
<head>
</head>
<body>

  <p>A <a href='http://java.sun.com/xml/jaxb/'>JAXB</a> tag library using the 
  <a href='http://ws.apache.org/jaxme'>Apache JaxMe</a> implementation.
  Tags are provided for marshalling java objects into xml 
  and unmarshalling xml into java objects which will work with any JAXB implementation.
  The generation tag generates java objects which can be marshalled and unmarshalled by
  JaxMe and are specific to that implementation.
  </p>
  
</body>
</html>
