blob: b630dd64961852049d4d3fc3dbaa0db94bbc4c25 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://org.eclipse.ptp/rm" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rm="http://org.eclipse.ptp/rm"
elementFormDefault="qualified">
<xs:element name="resource-manager-builder" type="rm:resource-manager-data"/>
<xs:complexType name="resource-manager-data">
<xs:annotation>
<xs:documentation>
It is assumed that the xml instance of the schema will bear a name which sufficiently distinguishes it from others
of a similar type; e.g., pbs-torque-v_2.3.7_abe is specific to an installation on the host abe, ll-v_4.0 suits all installations of
LoadLeveler version 4, etc.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="site-data" minOccurs="0" type="rm:site"/>
<xs:element name="control-data" type="rm:control"/>
<xs:element name="monitor-data" type="rm:monitor"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:complexType name="site">
<xs:annotation>
<xs:documentation>
An optional place to set remote site information.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element minOccurs="0" name="control-connection" type="xs:string"/>
<xs:element minOccurs="0" name="monitor-server-install" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="control">
<xs:annotation>
<xs:documentation>
The implementation will construct a variable map serving as the resource manager "environment"; these are dereferenced in the
configuration file via ${rm:name} or ${rm:name#getterName}; in addition to the properties specified at the top level of the control
tree, all attributes and parsers will be mapped for reference. The following hard-coded variables are added at runtime:
<!-- from runtime configuration information -->
control.user.name
control.address
monitor.user.name
monitor.address
<!-- from the monitoring part -->
available_queues
<!-- from the launch command stdout parser -->
jobId
<!-- from the other Run Configuration tabs -->
executablePath
progArgs
directory
The top level of the tree represents the available commands/methods on all resource managers, places
for defining stdout or stderr parsers, for defining the structure of a batch script to be used, for defining (job) attributes, and
finally for describing how to construct the UI (Launch Configuration Tab).
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="property" minOccurs="0" maxOccurs="unbounded" type="rm:property"/>
<xs:element name="job-attribute" minOccurs="0" maxOccurs="unbounded" type="rm:job-attribute"/>
<xs:element name="managed-files" minOccurs="0" type="rm:managed-files"/>
<xs:element name="script" minOccurs="0" type="rm:script"/>
<xs:element name="start-up-command" minOccurs="0" maxOccurs="unbounded" type="rm:command">
<xs:annotation>
<xs:documentation>
Arbitrary commands which need to be run on startup.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice minOccurs="1" maxOccurs="3">
<xs:element name="submit-interactive" type="rm:command"/>
<xs:element name="submit-batch" type="rm:command"/>
<xs:element name="submit-debug" type="rm:command"/>
</xs:choice>
<xs:element name="get-job-status" type="rm:command" minOccurs="0"/>
<xs:element name="terminate-job" type="rm:command" minOccurs="0"/>
<xs:element name="suspend-job" type="rm:command" minOccurs="0"/>
<xs:element name="resume-job" type="rm:command" minOccurs="0"/>
<xs:element name="hold-job" type="rm:command" minOccurs="0"/>
<xs:element name="release-job" type="rm:command" minOccurs="0"/>
<xs:element name="shut-down-command" minOccurs="0" maxOccurs="unbounded" type="rm:command">
<xs:annotation>
<xs:documentation>
Arbitrary commands which need to be run on shutdown.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="launch-tab" minOccurs="0" type="rm:launch-tab"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="property">
<xs:annotation>
<xs:documentation>
The value is any object type; these are set at runtime.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0"/>
<xs:element name="default" minOccurs="0" type="xs:string"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="selected" type="xs:boolean" default="true"/>
<xs:attribute name="configurable" type="xs:boolean" default="true"/>
</xs:complexType>
<xs:complexType name="job-attribute">
<xs:sequence>
<xs:element name="description" type="xs:string"/>
<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
<xs:element name="choice" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>
A a comma-delimited set of values.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="default" minOccurs="0" type="xs:string"/>
<xs:element name="validator" minOccurs="0" type="rm:validator"/>
<xs:element name="value" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="type" use="required" type="xs:string"/>
<xs:attribute name="configurable" type="xs:boolean" default="true"/>
<xs:attribute name="selected" type="xs:boolean" default="true"/>
<xs:attribute name="status" type="xs:string"/>
<xs:attribute name="readOnly" type="xs:boolean" default="false"/>
<xs:attribute name="basic" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>
Indicates if this attribute is part of a basic (required) set, or if it is an (advanced) option.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="min" type="xs:int"/>
<xs:attribute name="max" type="xs:int"/>
</xs:complexType>
<xs:complexType name="managed-files">
<xs:annotation>
<xs:documentation>
List of files to be staged.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="file-source-location" minOccurs="0" type="xs:string"/>
<xs:element name="file-staging-location" minOccurs="0" type="xs:string"/>
<xs:element name="file" maxOccurs="unbounded" type="rm:managed-file"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="script">
<xs:sequence>
<xs:element name="directive" minOccurs="0" maxOccurs="unbounded" type="rm:directive-definition"/>
<xs:element name="variable" minOccurs="0" maxOccurs="unbounded" type="rm:environment-variable"/>
<xs:element name="pre-execute-command" minOccurs="0" maxOccurs="unbounded" type="rm:arglist"/>
<xs:element name="execute-command" type="rm:arglist"/>
<xs:element name="post-execute-command" minOccurs="0" maxOccurs="unbounded" type="rm:arglist"/>
</xs:sequence>
<xs:attribute name="shellDirective" use="required"/>
</xs:complexType>
<xs:complexType name="command">
<xs:sequence>
<xs:element name="args" type="rm:arglist"/>
<xs:element name="stdout-parser" minOccurs="0" type="rm:tokenizer"/>
<xs:element name="stderr-parser" minOccurs="0" type="rm:tokenizer"/>
<xs:element name="environment" minOccurs="0" maxOccurs="unbounded" type="rm:environment-variable"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
<xs:attribute name="directory" type="xs:string"/>
<xs:attribute name="redirectStderr" type="xs:boolean" default="false"/>
<xs:attribute name="streamBufferLimit" type="xs:int" default="-1"/>
<xs:attribute name="replaceEnvironment" type="xs:boolean" default="false"/>
<xs:attribute name="waitForId" type="xs:boolean" default="false"/>
</xs:complexType>
<xs:complexType name="launch-tab">
<xs:annotation>
<xs:documentation>
A recursive description of the UI element associated with the control part, the Launch Tab.
As in:
org.eclipse.ptp.rm.ui.launch.ExtendableRMLaunchConfigurationDynamicTab, provides a top-level "switch" between controllers.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="basic" minOccurs="0" type="rm:tab-controller"/>
<xs:element name="advanced" minOccurs="0" type="rm:tab-controller"/>
<xs:element name="custom-controller" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>
Fixed type. Allows the user to browse the local file system and/or workspace
to open and edit a custom batch
script will be created; this will include copy and renaming buttons.
Use the string as the title to appear in the top-level
folder
tab.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="validator">
<xs:annotation>
<xs:documentation>
A regular expression or an acl used to validate an attribute value.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:sequence>
<xs:element name="regex" minOccurs="0" type="rm:regex"/>
<xs:element name="fileInfo" minOccurs="0" type="rm:file-match"/>
</xs:sequence>
<xs:element name="error-message" minOccurs="0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="managed-file">
<xs:annotation>
<xs:documentation>
If 'contents' is present, the file is written.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="contents" minOccurs="0" type="xs:string"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
<xs:attribute name="uniqueIdPrefix" type="xs:boolean" default="false"/>
<xs:attribute name="deleteAfterUse" type="xs:boolean" default="false"/>
</xs:complexType>
<xs:complexType name="file-match">
<xs:annotation>
<xs:documentation>
efsAttributes is an or'd string of tags corresponding to the EFS integer constants.
use "yyyy/MM/dd HH:mm:ss" format for modified strings.
</xs:documentation>
</xs:annotation>
<xs:attribute name="efsAttributes">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ATTRIBUTE_READ_ONLY"/>
<xs:enumeration value="ATTRIBUTE_IMMUTABLE"/>
<xs:enumeration value="ATTRIBUTE_OWNER_READ"/>
<xs:enumeration value="ATTRIBUTE_OWNER_WRITE"/>
<xs:enumeration value="ATTRIBUTE_OWNER_EXECUTE"/>
<xs:enumeration value="ATTRIBUTE_GROUP_READ"/>
<xs:enumeration value="ATTRIBUTE_GROUP_WRITE"/>
<xs:enumeration value="ATTRIBUTE_GROUP_EXECUTE"/>
<xs:enumeration value="ATTRIBUTE_OTHER_READ"/>
<xs:enumeration value="ATTRIBUTE_OTHER_WRITE"/>
<xs:enumeration value="ATTRIBUTE_OTHER_EXECUTE"/>
<xs:enumeration value="ATTRIBUTE_EXECUTABLE"/>
<xs:enumeration value="ATTRIBUTE_ARCHIVE"/>
<xs:enumeration value="ATTRIBUTE_HIDDEN"/>
<xs:enumeration value="ATTRIBUTE_SYMLINK"/>
<xs:enumeration value="ATTRIBUTE_LINK_TARGET"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="lastModifiedBefore" type="xs:string"/>
<xs:attribute name="lastModifiedAfter" type="xs:string"/>
<xs:attribute name="length" type="xs:long"/>
<xs:attribute name="isDirectory" type="xs:boolean" default="false"/>
</xs:complexType>
<xs:complexType mixed="true" name="directive-definition">
<xs:annotation>
<xs:documentation>
'ValueFrom' refers to properties in the resource manager environment.
</xs:documentation>
</xs:annotation>
<xs:attribute name="valueFrom"/>
</xs:complexType>
<xs:complexType name="environment-variable">
<xs:annotation>
<xs:documentation>
'ValueFrom' refers to properties in the resource manager environment.
</xs:documentation>
</xs:annotation>
<xs:attribute name="variableName" use="required" type="xs:string"/>
<xs:attribute name="valueFrom" use="required" type="xs:string"/>
</xs:complexType>
<xs:complexType name="arglist">
<xs:sequence>
<xs:element name="arg" maxOccurs="unbounded" type="rm:arg"/>
</xs:sequence>
<xs:attribute name="dynamicAppend" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>
Iterate over all dynamic attributes, appending the sequence of args for each attribute.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="tab-controller">
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="tab-folder" type="rm:tab-folder-descriptor"/>
<xs:element name="group-descriptor" type="rm:group-descriptor"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="dynamic" type="xs:boolean" default="false"/>
</xs:complexType>
<xs:complexType name="regex" mixed="true">
<xs:attribute name="flags" type="xs:string"/>
<xs:attribute name="split" type="xs:boolean" default="false"/>
<xs:attribute name="expression" type="xs:string"/>
</xs:complexType>
<xs:complexType mixed="true" name="arg">
<xs:annotation>
<xs:documentation>
The text of the argument will be parsed for references to the resource manager environment; e.g., ${rm:a},
v=${rm:v}, etc. By convention, '${rm:@name}' and '${rm:@value}' will refer to a given dynamic attribute name and value (of
undefined
position i in
the list).
</xs:documentation>
</xs:annotation>
<xs:attribute name="isUndefinedIfEquals" type="xs:string">
<xs:annotation>
<xs:documentation>
If this is defined, an equality check on the arg will be run and if satisfied the arg will be eliminated from the
list (the default behavior is not to include null or zero-length args).
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="tokenizer">
<xs:annotation>
<xs:documentation>
These are attached to the stdout or stderr streams in order to capture the output of the command and add values
into the resource manager environment. If displayStdout or displayStderr of the command is true, the stream will be passed on to an
output stream will also be sent to the terminal.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice>
<xs:element name="type" type="xs:string">
<xs:annotation>
<xs:documentation>
Place to provide a custom tokenizer; type is the extension id contributing to
"org.eclipse.ptp.rm.jaxb.core.streamParserTokenizer".
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:sequence>
<xs:element name="read" maxOccurs="unbounded" type="rm:read"/>
</xs:sequence>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tab-folder-descriptor">
<xs:sequence>
<xs:element name="item" maxOccurs="unbounded" type="rm:tab-item-descriptor"/>
<xs:element name="style" minOccurs="0" type="rm:style"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="group-descriptor">
<xs:annotation>
<xs:documentation>
Dynamic means this group gets rebuilt; in that case, a
button allowing the user to select displayed attributes is added.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="grid-data" minOccurs="0" type="rm:grid-data-descriptor"/>
<xs:element name="grid-layout" minOccurs="0" type="rm:grid-layout-descriptor"/>
<xs:element name="title" minOccurs="0" type="xs:string"/>
<xs:element name="style" minOccurs="0" type="rm:style"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="tab-folder" type="rm:tab-folder-descriptor"/>
<xs:element name="group" type="rm:group-descriptor"/>
<xs:element name="widget" type="rm:widget"/>
<xs:element name="viewer" type="rm:attribute-viewer"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="read">
<xs:sequence>
<xs:element name="match" minOccurs="0" maxOccurs="unbounded" type="rm:match"/>
</xs:sequence>
<xs:attribute name="delim" type="xs:string"/>
<xs:attribute name="includeDelim" type="xs:boolean" default="false"/>
<xs:attribute name="maxMatchLen" type="xs:int" default="0"/>
<xs:attribute name="all" type="xs:boolean" default="false"/>
<xs:attribute name="save" type="xs:int" default="0"/>
<xs:attribute name="mode" default="or">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="or"/>
<xs:enumeration value="and"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="tab-item-descriptor">
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="group" type="rm:group-descriptor"/>
<xs:element name="tab-folder" type="rm:tab-folder-descriptor"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="grid-data-descriptor">
<xs:attribute name="horizontalAlign" type="xs:string"/>
<xs:attribute name="verticalAlign" type="xs:string"/>
<xs:attribute name="grabExcessHorizontal" type="xs:boolean" default="true"/>
<xs:attribute name="grabExcessVertical" type="xs:boolean" default="false"/>
<xs:attribute name="horizontalSpan" type="xs:int"/>
<xs:attribute name="verticalSpan" type="xs:int"/>
<xs:attribute name="minHeight" type="xs:int"/>
<xs:attribute name="minWidth" type="xs:int"/>
<xs:attribute name="heightHint" type="xs:int"/>
<xs:attribute name="widthHint" type="xs:int"/>
</xs:complexType>
<xs:complexType name="grid-layout-descriptor">
<xs:attribute name="numColumns" type="xs:int"/>
<xs:attribute name="horizontalSpacing" type="xs:int"/>
<xs:attribute name="makeColumnsEqualWidth" type="xs:boolean" default="true"/>
<xs:attribute name="marginBottom" type="xs:int"/>
<xs:attribute name="marginHeight" type="xs:int"/>
<xs:attribute name="marginLeft" type="xs:int"/>
<xs:attribute name="marginRight" type="xs:int"/>
<xs:attribute name="marginTop" type="xs:int"/>
<xs:attribute name="marginWidth" type="xs:int"/>
<xs:attribute name="verticalSpacing" type="xs:int"/>
</xs:complexType>
<xs:complexType name="style">
<xs:sequence>
<xs:element name="tag" type="xs:string" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>
The strings will be converted into their integer values;
e.g., "SWT.NONE". They will then be 'or'd' ( | ).
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="widget">
<xs:sequence>
<xs:element name="grid-data" minOccurs="0" type="rm:grid-data-descriptor"/>
<xs:element name="label" minOccurs="0" type="xs:string"/>
<xs:element name="style" minOccurs="0" type="rm:style"/>
<xs:element name="tooltip" minOccurs="0" type="xs:string"/>
<xs:element name="value" minOccurs="0" type="xs:string"/>
<xs:element name="displayValue" minOccurs="0" type="rm:arglist">
<xs:annotation>
<xs:documentation>
The text of this element will be parsed for references to the environment; e.g., ${a},
version-${b}.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="type" default="text">
<xs:annotation>
<xs:documentation>
Custom, fixed widgets:
1. select-attributes: push button which brings up wizard exposing attribute names with
checkboxes, allowing dynamic groups to be rebuilt.
2. show-script: push button which displays the batch script as it would
currently be submitted.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="label"/>
<xs:enumeration value="text"/>
<xs:enumeration value="checkbox"/>
<xs:enumeration value="spinner"/>
<xs:enumeration value="combo"/>
<xs:enumeration value="pushButton"/>
<xs:enumeration value="radioButton"/>
<xs:enumeration value="browseDirectoryButton"/>
<xs:enumeration value="browseExistingFileButton"/>
<xs:enumeration value="browseOrCreateFileButton"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="readOnly" type="xs:boolean" default="false"/>
<xs:attribute name="valueFrom" type="xs:string"/>
<xs:attribute name="saveAs" type="xs:string"/>
</xs:complexType>
<xs:complexType name="attribute-viewer">
<xs:sequence>
<xs:element name="grid-data" minOccurs="0" type="rm:grid-data-descriptor"/>
<xs:element name="grid-layout" minOccurs="0" type="rm:grid-layout-descriptor"/>
<xs:element name="label" minOccurs="0" type="xs:string"/>
<xs:element name="style" minOccurs="0" type="rm:style"/>
<xs:element name="column-data" minOccurs="0" type="rm:column-data"/>
<xs:element name="items" type="rm:viewer-items"/>
</xs:sequence>
<xs:attribute name="type" default="table">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="table"/>
<xs:enumeration value="tree"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="sort" type="xs:boolean" default="true"/>
</xs:complexType>
<xs:complexType name="viewer-items">
<xs:sequence>
<xs:element name="include">
<xs:complexType>
<xs:attribute name="headers" type="xs:boolean" default="true"/>
<xs:attribute name="name" type="xs:boolean" default="true"/>
<xs:attribute name="tooltip" type="xs:boolean" default="true"/>
<xs:attribute name="description" type="xs:boolean" default="true"/>
<xs:attribute name="allPredefined" type="xs:boolean" default="false"/>
<xs:attribute name="allDiscovered" type="xs:boolean" default="true"/>
</xs:complexType>
</xs:element>
<xs:element name="ref" maxOccurs="unbounded" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="match">
<xs:sequence>
<xs:element name="expression" minOccurs="0" type="rm:regex"/>
<xs:element name="target" minOccurs="0" type="rm:target"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="add" type="rm:add"/>
<xs:element name="append" type="rm:append"/>
<xs:element name="put" type="rm:put"/>
<xs:element name="set" type="rm:set"/>
</xs:choice>
<xs:element name="test" minOccurs="0" maxOccurs="unbounded" type="rm:test"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="column-data">
<xs:sequence>
<xs:element name="style" type="rm:style"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="width" type="xs:string"/>
</xs:complexType>
<xs:complexType name="target">
<xs:attribute name="ref" type="xs:string"/>
<xs:attribute name="type" default="property">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="property"/>
<xs:enumeration value="attribute"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="idFrom" type="xs:int"/>
</xs:complexType>
<xs:complexType name="set">
<xs:sequence>
<xs:element name="entry" minOccurs="0" type="rm:entry"/>
</xs:sequence>
<xs:attribute name="field" type="xs:string"/>
</xs:complexType>
<xs:complexType name="add">
<xs:sequence>
<xs:element name="entry" minOccurs="0" maxOccurs="unbounded" type="rm:entry"/>
</xs:sequence>
<xs:attribute name="field" type="xs:string"/>
</xs:complexType>
<xs:complexType name="append">
<xs:sequence>
<xs:element name="entry" minOccurs="0" maxOccurs="unbounded" type="rm:entry"/>
</xs:sequence>
<xs:attribute name="field" type="xs:string"/>
<xs:attribute name="separator" type="xs:string"/>
</xs:complexType>
<xs:complexType name="put">
<xs:sequence>
<xs:element name="entry" minOccurs="0" maxOccurs="unbounded" type="rm:entry"/>
</xs:sequence>
<xs:attribute name="field" type="xs:string"/>
</xs:complexType>
<xs:complexType name="entry">
<xs:attribute name="key" type="xs:string"/>
<xs:attribute name="keyGroup" type="xs:int" default="0"/>
<xs:attribute name="keyIndex" type="xs:int" default="0"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="valueGroup" type="xs:int" default="0"/>
<xs:attribute name="valueIndex" type="xs:int" default="0"/>
</xs:complexType>
<xs:complexType name="test">
<xs:sequence>
<xs:element name="test" minOccurs="0" maxOccurs="unbounded" type="rm:test"/>
<xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="2">
<xs:annotation>
<xs:documentation>
.*[${rm:}]*.* refers to a variable in the RM environment;
"this.FIELD" refers to the value of the given field on
the current target;
other strings will be converted in conformity with the inferred type of the comparison.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="add" type="rm:add"/>
<xs:element name="append" type="rm:append"/>
<xs:element name="put" type="rm:put"/>
<xs:element name="set" type="rm:set"/>
</xs:choice>
<xs:element name="else" minOccurs="0">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="add" type="rm:add"/>
<xs:element name="append" type="rm:append"/>
<xs:element name="put" type="rm:put"/>
<xs:element name="set" type="rm:set"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="op">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="EQ"/>
<xs:enumeration value="LT"/>
<xs:enumeration value="GT"/>
<xs:enumeration value="LE"/>
<xs:enumeration value="GE"/>
<xs:enumeration value="AND"/>
<xs:enumeration value="OR"/>
<xs:enumeration value="NOT"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="monitor">
<xs:annotation>
<xs:documentation>
I have for the moment left this undefined.
</xs:documentation>
</xs:annotation>
</xs:complexType>
</xs:schema>