<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- -->
<!-- Jonathan: an Open Distributed Processing Environment                      -->
<!-- Copyright (C) 2000 France Telecom R&D                                     -->
<!-- Copyright (C) 2001 Kelua SA                                               -->
<!--                                                                           -->
<!-- This library is free software; you can redistribute it and/or             -->
<!-- modify it under the terms of the GNU Lesser General Public                -->
<!-- License as published by the Free Software Foundation; either              -->
<!-- version 2 of the License, or (at your option) any later version.          -->
<!--                                                                           -->
<!-- This library is distributed in the hope that it will be useful,           -->
<!-- but WITHOUT ANY WARRANTY; without even the implied warranty of            -->
<!-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         -->
<!-- Lesser General Public License for more details.                           -->
<!--                                                                           -->
<!-- You should have received a copy of the GNU Lesser General Public          -->
<!-- License along with this library; if not, write to the Free Software       -->
<!-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA -->
<!--                                                                           -->
<!-- Release: 3.0                                                              -->
<!--                                                                           -->
<!-- Contact: jonathan@objectweb.org                                           -->
<!--                                                                           -->
<!-- Author: Fabien Delpiano, Bruno Dumant                                     -->
<!--                                                                           -->
<!-- -->
<!-- configuration.dtd: DTD for configuration descriptions. -->
<!-- A configuration description may contain any number of elements.           -->
<!ELEMENT CONFIGURATION (ELEM*, DOCUMENTATION?)>
<!-- A configuration description has no required attribute. Root               -->
<!-- configurations need to provide two attributes: one to describe the Kernel -->
<!-- class to use to return the actual bootstrap configuration, the other      -->
<!-- to describe the generated Kernel class. Both should be scoped java class  -->
<!-- names.                                                                    -->
<!ATTLIST CONFIGURATION
        generated CDATA #IMPLIED
        bootstrap CDATA #IMPLIED
        kawana_version CDATA #IMPLIED
>
<!-- Elem describes an element in a configuration. It contains the description -->
<!-- of a property, of an atom, of an assemblage, or of an alias.              -->
<!ELEMENT ELEM (PROPERTY | ATOM | ASSEMBLAGE | ALIAS | INCLUDE | CONFIGURATION | SEQUENCE | IMPLICIT_FACTORY)? >
<!-- An element description has one required attributes: its name in the       -->
<!-- enclosing configuration. -->
<!ATTLIST ELEM
        name CDATA #REQUIRED
>
<!ELEMENT ATOM (ALTERNATIVE*, DOCUMENTATION?)>
<!-- An atom has one required attributes: the name of the class used to       -->
<!-- instanciate it.                                                          -->
<!ATTLIST ATOM
        class CDATA #REQUIRED
        contract CDATA #IMPLIED
>
<!ELEMENT ASSEMBLAGE (MY_FACTORY?, MY_CONFIGURATION?, ALTERNATIVE*)>
<!-- Assemblages are used to register implicitly elements by providing a means -->
<!-- to create them on demand.                                                 -->
<!ATTLIST ASSEMBLAGE
        factory CDATA #IMPLIED
        configuration CDATA #IMPLIED
        alternative CDATA #IMPLIED
        contract CDATA #IMPLIED
>
<!ELEMENT ALIAS (DOCUMENTATION)?>
<!-- Aliases provide a means to designate other objects in the configuration. -->
<!-- The only required attribute is the name of the designated object in the  -->
<!--  configuration.                                                          -->
<!ATTLIST ALIAS
        name CDATA #REQUIRED
>
<!ELEMENT PROPERTY EMPTY>
<!-- Properties are used to register values of a number of primitive types.   -->
<!-- A property has two required attributes: the type of the property, and    -->
<!-- its value (as a string).                                                 -->
<!ATTLIST PROPERTY
        type CDATA #REQUIRED
        value CDATA #REQUIRED
        contract CDATA #IMPLIED
>
<!ELEMENT INCLUDE EMPTY>
<!ATTLIST INCLUDE
        file CDATA #REQUIRED
>
<!ELEMENT DOCUMENTATION (#PCDATA)>
<!ELEMENT MY_FACTORY (ALIAS | ATOM | ASSEMBLAGE | IMPLICIT_FACTORY)>
<!ELEMENT MY_CONFIGURATION (ALIAS | CONFIGURATION)>
<!ELEMENT SEQUENCE (ELEM)*>
<!ATTLIST SEQUENCE
        elements_type CDATA #REQUIRED
>
<!ELEMENT IMPLICIT_FACTORY (ALTERNATIVE)*>
<!ATTLIST IMPLICIT_FACTORY
        contract CDATA #IMPLIED
>
<!ELEMENT ARGUMENT (#PCDATA)>
<!ATTLIST ARGUMENT
        type CDATA #REQUIRED
        name CDATA #REQUIRED
>
<!ELEMENT SETTER (ARGUMENT)*>
<!ATTLIST SETTER
        name CDATA #REQUIRED
>
<!ELEMENT ALTERNATIVE (ARGUMENT | SETTER)*>
<!ATTLIST ALTERNATIVE
        id CDATA #REQUIRED
        name CDATA #REQUIRED
        class CDATA #REQUIRED
        init CDATA #IMPLIED
>