<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- edited November 15 2001 by Dennis Reedy (Sun) -->
<!--
Copyright (c) 2000 Sun Microsystems, Inc. All Rights Reserved. The contents of this file are 
subject to the Sun Community Source  License v 3.0/Jini Technology Specific Attachment v 1.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.sun.com/jini/ . Software  distributed under the 
License is distributed on an "AS IS" basis,  WITHOUT WARRANTY OF ANY KIND, either express or 
implied. See the License for the specific language governing rights and limitations under the 
License.  The Reference Code is Jini Technology Core Platform code, v1.1.  The Developer of 
the Reference Code is Sun Microsystems, Inc. Portions created  by Sun Microsystems, inc. are 
Copyright (c) 2000 Sun Microsystems, Inc. All Rights Reserved. 

Contributor(s): Sun Microsystems, Inc.
-->

<!--
This is the root element of the Operational String document. It has no additional attributes 
-->
<!ELEMENT opstring (OperationalString+)>
<!-- 
The OperationalString is the aggregating element in the Operational String document. The 
OperationalString has a Name attribute which provides the OperationalString with a 
descriptive name. There can be multiple OperationalString elements 
in an opstring. 
-->
<!ATTLIST OperationalString
	Name CDATA #REQUIRED
>
<!-- 
The OperationalString is the aggregating element in the Operational String document. The 
OperationalString element contains 1 or more ServiceBean, Service, and Include elements 
-->
<!ELEMENT OperationalString ((ServiceBean | Service | Include)+)>
<!-- 
A ServiceBean element is a Jini service that supports the Rio Jini Service Bean 
specification. The ServiceBean element is unique in this regard because this element can 
optionally be provisioned to available compute resources that support the 
ServiceInstantiator interface 
-->
<!ELEMENT ServiceBean (Interfaces, ExportURLs, Component, ComponentURLs, Qos, Groups, (Maintain | Locators | LogDir | Parameters | Policy | ActivationCommandEnv | Comment)*)>
<!ATTLIST ServiceBean Name CDATA #REQUIRED>
<!ATTLIST ServiceBean MatchOnName (yes | no) "no">
<!ATTLIST ServiceBean ProvisionType (auto | station) "auto">

<!-- 
A Service element is a Jini service that does not support the Rio Jini Service Bean 
Specification. Examples of a Jini service are the Lookup Service, JavaSpace and Jini 
Transaction Manager. These Jini services provide infrastructure level support and are 
required by the coarse grained service that the OperationalString represents. 
-->
<!ELEMENT Service (Interfaces, ExportURLs, Groups, (Maintain | Locators)*)>
<!ATTLIST Service Name CDATA #REQUIRED>
<!ATTLIST Service MatchOnName (yes | no) "no">

<!-- 
An Include element is another Operational String on which this Operational String depends
-->
<!ELEMENT Include (#PCDATA)>
<!--The Interfaces element contains one or more instances of an Interface element-->
<!ELEMENT Interfaces (Interface+)>
<!--
The Interface element specifies a string value that identifies the interface class the 
Service element can be discovered on the network. The value should be suitable for 
Class.forName() use 
-->
<!ELEMENT Interface (#PCDATA)>
<!--
The ExportURL element contains one or more instances of an ExportURL element
-->
<!ELEMENT ExportURLs (ExportURL+)>
<!--
The ExportURL value documents an URL reference used as the export codebase of the Service
-->
<!ELEMENT ExportURL (#PCDATA)>
<!--
The Groups element contains information specific to the Jini discovery groups that this 
service will discover and join 
-->

<!ELEMENT Groups (Group+)>
<!--
There must be at least one Group element. Each Group element documents a Jini discovery 
group that the Service uses 
-->
<!ELEMENT Group (#PCDATA)>
<!--
The Maintain element documents the number of instances of this Service element that 
should be running across discovered Lookup Services 
-->
<!ELEMENT Maintain (#PCDATA)>
<!--
The Component element specifies the class name of the service implementation for the 
Service. The value should be valid for use with Class.forName() 
-->
<!ELEMENT Component (#PCDATA)>
<!--
The ComponentURLs element contains one or more instances of a ComponentURL element
-->
<!ELEMENT ComponentURLs (ComponentURL+)>
<!--
The ComponentURL specifies an URL to load the service's implementation classes and resources 
from
-->
<!ELEMENT ComponentURL (#PCDATA)>

<!--
The Qos element contains information specific to the Quality of Service capabilities of a 
Service. The name of the Quality of Service class and where the Quality of Service class can
be loaded from are contained within the Qos element. The Qos element additionally provides 
the support to defnine PlatformCapability objects which defnine a specific qualitative type 
of mechanism associated with a compute resource. These capabilities allow better control 
over resources and better provisioning behaviour.
-->
<!ELEMENT Qos (QosSpecification, (QosSpecificationURL | PlatformCapabilities)*)>
<!--
The QosSpecificationURL specifies an URL to load the Quality of Service class from. This 
element is optional. If not supplied the location to load the Quality of Service class 
should be determined by the value specified in the ExportURL element 
-->
<!ELEMENT QosSpecificationURL (#PCDATA)>
<!--
The QosSpecification element specifies the Quality of Service class for the Service 
-->
<!ELEMENT QosSpecification (#PCDATA)>
<!--
The PlatformCapabilities element contains one or more instances of a PlatformCapability 
-->
<!ELEMENT PlatformCapabilities (PlatformCapability+)>
<!--
The PlatformCapability defines a class (as an attribute) and zero or more name, value 
mappings for a specific PlatformCapability class
-->
<!ELEMENT PlatformCapability (Attribute*)>
<!ATTLIST PlatformCapability Class CDATA #REQUIRED>
<!ELEMENT Attribute EMPTY>
<!ATTLIST Attribute
	Name CDATA #REQUIRED
	Value CDATA #REQUIRED
>
<!-- 
The Locators element contains one or more instaces of a Locator element
-->
<!ELEMENT Locators (Locator+)>
<!--
The Locator is a Jini LookupLocator formatted URL, in the format of jini://hostname[:port], 
and provides unicast information the service optionally uses for discovery 
-->
<!ELEMENT Locator (#PCDATA)>
<!-- 
The Parameters element specifies a list of Parameter elements that can be used to describe 
operational parameters to be used by the ServiceBean. There can be zero or more Parameter 
elements in the Parameters element. The Parameters element is optional 
-->
<!ELEMENT Parameters (Parameter+)>
<!-- 
The Parameter specifies name, value pairs identifying an operational parameter for 
the ServiceBean 
-->
<!ELEMENT Parameter EMPTY>
<!ATTLIST Parameter
	Name CDATA #REQUIRED
	Value CDATA #REQUIRED
>
<!-- 
The LogDir element specifies a Path to a directory where a persistent service can save 
its state
-->
<!ELEMENT LogDir (#PCDATA)>
<!-- 
The Policy element specifies a URL to load a Security Policy from for the ServiceBean. The 
policy, once loaded, will represent the system security policy for the Java environment 
(specifying which permissions are available for code from various sources).  The Policy will 
be consulted by  the ClassLoader created for the ServiceBean, determining the permissions to 
assign to a particular protection domain.  
-->
<!ELEMENT Policy (#PCDATA)>
<!-- 
Defines attributes that will be used to instantiate an Activatable instance of the service 
in its own ActivationGroup using the command environment specified by the attributes found 
in this element 
-->
<!ELEMENT ActivationCommandEnv (JVMOptions | SystemProperties)*>
<!-- 
The JVMOptions element contains one or more JVMOption elements 
-->
<!ELEMENT JVMOptions (JVMOption+)>
<!-- 
Specific JVM Command line options for the Java Virtual Machine in which a persistent 
(activatable) service will be run 
-->
<!ELEMENT JVMOption (#PCDATA)>
<!--  
The SystemProperties element contains one or more SystemProperty elements 
-->
<!ELEMENT SystemProperties (SystemProperty+)>
<!-- 
Properties for the JVM in which a persistent (activatable) service will be run in, specifying name, value pairs 
-->
<!ELEMENT SystemProperty EMPTY>
<!ATTLIST SystemProperty
	Name CDATA #REQUIRED
	Value CDATA #REQUIRED
>
<!-- 
The Comment element is an optional element. If the Comment element is supplied its value should provide an 
accurate comment for the Services role 
-->
<!ELEMENT Comment (#PCDATA)>
<!-- 
The default quality of service specification is a compute resource enabled with Java 2 Standard Edition and 
connected to the network that acts as a Workstation 
-->
<!ENTITY DefaultQosSpec "org.jini.rio.qos.Workstation">
