<?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)*>

<!-- 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.                                                                    -->
<!-- Configurations may also specify a scope (using the name of an existing    -->
<!-- configuration).                                                           -->
<!ATTLIST CONFIGURATION
   bootstrap CDATA #IMPLIED
   generated CDATA #IMPLIED
   scope 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)>

<!-- An element description has one required attributes: its name in the       -->
<!-- enclosing configuration. -->
<!ATTLIST ELEM
   name CDATA #REQUIRED
>

<!ELEMENT ATOM EMPTY>

<!-- An atom has one required attributes: the name of the class used to       -->
<!-- instanciate it.                                                          -->
<!ATTLIST ATOM
   class CDATA #REQUIRED
>

<!-- Assemblages are used to register implicitly elements by providing a means -->
<!-- to create them on demand. An assemblage has two required nested elements: -->
<!-- the factory and the configuration to use -->
<!ELEMENT ASSEMBLAGE (MY_FACTORY, MY_CONFIGURATION)>

<!ELEMENT MY_FACTORY (ATOM | ALIAS)>

<!ELEMENT MY_CONFIGURATION (CONFIGURATION | ALIAS)>

<!ELEMENT ALIAS EMPTY>

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

<!-- Not very well supported, but needed to make kernel kcfs -->
<!ELEMENT INCLUDE EMPTY>

<!ATTLIST INCLUDE
   file CDATA #REQUIRED
>