<!-- Copyright 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. -->

<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config"
           xmlns:ep="http://openuri.org/easypo">

  <xb:namespace uri="http://openuri.org/easypo">
    <xb:package>com.easypo</xb:package>
  </xb:namespace>

  <xb:namespace uriprefix="http://openuri.org/eas">
    <xb:prefix>Xml</xb:prefix>
  </xb:namespace>

  <xb:namespace uriprefix="http://openuri.org/easy">
    <xb:suffix>Bean</xb:suffix>
  </xb:namespace>

</xb:config>
