<!-- =====================================================================
     The DTD describes the format of a Nuance Voice Platform role 
     description file. Role description files are used by the Management
     Server to populate host configuration to a pre-defined set of 
     services. See the Nuance Voice Platform Administrator's Guide for
     more information on host configuration. 
  
     Copyright (c) 2002, Nuance Communications
     ===================================================================== -->

<!-- =====================================================================
                            Entity definitions
     ===================================================================== -->

<!ENTITY % boolean "(true|false)" >

<!ENTITY % integer "CDATA" >

<!ENTITY % start.attrs 
     "startorder %integer;                   #IMPLIED
      starttype  (disabled|manual|automatic) #IMPLIED" >

<!-- =====================================================================
                            Element definitions
     ===================================================================== -->

<!-- The root element of the file -->
<!ELEMENT role          ( name, description?, services?, modules? ) >

<!ATTLIST role
     version            CDATA          #REQUIRED >

<!ELEMENT name          ( #PCDATA ) >

<!ELEMENT description   ( #PCDATA ) >

<!-- The command line to use for this service or module. -->
<!ELEMENT command       ( #PCDATA ) >

<!-- =====================================================================
                            Service definitions
     ===================================================================== -->

<!ELEMENT services      ( service+ ) >

<!ELEMENT service       ( description?, instance+, ( property-set? | properties* ) ) >

<!ATTLIST service
     type               NMTOKEN        #REQUIRED >

<!ELEMENT instance      ( description?, command, ( property-set? | properties* ) ) >

<!ATTLIST instance
     publicid           ID             #IMPLIED
     name               CDATA          #REQUIRED
     controllable       %boolean;      'true'
     %start.attrs; >

<!-- =====================================================================
                             Module definitions
     ===================================================================== -->

<!ELEMENT modules       ( module+ ) >

<!ELEMENT module        ( description?, command ) >

<!-- =====================================================================
                           Property Set definitions
     ===================================================================== -->

<!ELEMENT property-set  EMPTY >

<!ATTLIST property-set
	src                 CDATA          #REQUIRED >

<!-- =====================================================================
                           Properties definitions
     ===================================================================== -->

<!ELEMENT properties    ( description?, property+ ) >

<!ATTLIST properties
	 group              NMTOKEN        #REQUIRED >

<!ELEMENT property      ( description?, name, value ) >

<!ATTLIST property
     instances          NMTOKENS       #IMPLIED >

<!ELEMENT value         ( #PCDATA ) >