<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!--
    ==================================================
    ========== The Simple Methods Section ==========
    ==================================================
    (see further down for the Simple Map Processor Section)
-->

    <!-- Abstract elements and element groups -->

    <xs:element name="CallOperations" abstract="true"/>
    <xs:element name="EventOperations" abstract="true"/>
    <xs:element name="ServiceOperations" abstract="true"/>
    <xs:element name="EnvOperations" abstract="true"/>
    <xs:element name="EntityMiscOperations" abstract="true"/>
    <xs:element name="EntityFindOperations" abstract="true"/>
    <xs:element name="EntityValueOperations" abstract="true"/>
    <xs:element name="EntityListOperations" abstract="true"/>
    <xs:element name="EntityTxOperations" abstract="true"/>
    <xs:element name="ControlOperations" abstract="true"/>
    <xs:element name="IfBasicOperations" abstract="true"/>
    <xs:element name="IfOtherOperations" abstract="true"/>
    <xs:element name="OtherOperations" abstract="true"/>

    <xs:group name="AllOperations">
        <xs:choice>
            <xs:element ref="CallOperations"/>
            <xs:element ref="EventOperations"/>
            <xs:element ref="ServiceOperations"/>
            <xs:element ref="EnvOperations"/>
            <xs:element ref="EntityMiscOperations"/>
            <xs:element ref="EntityFindOperations"/>
            <xs:element ref="EntityValueOperations"/>
            <xs:element ref="EntityListOperations"/>
            <xs:element ref="EntityTxOperations"/>
            <xs:element ref="ControlOperations"/>
            <xs:element ref="IfBasicOperations"/>
            <xs:element ref="IfOtherOperations"/>
            <xs:element ref="OtherOperations"/>
        </xs:choice>
    </xs:group>

    <xs:group name="IfConditions">
        <xs:choice>
            <xs:element ref="IfCombineConditions"/>
            <xs:element ref="IfBasicOperations"/>
        </xs:choice>
    </xs:group>

    <xs:element name="IfCombineConditions" abstract="true"/>

    <!-- Reusable types -->

    <xs:simpleType name="booleanConst">
        <xs:restriction base="xs:token">
            <xs:enumeration value="true" />
            <xs:enumeration value="false" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="booleanExpr">
        <xs:restriction base="xs:string">
            <xs:pattern value="\$\{.+\}|true|false" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="javaClassName">
        <xs:restriction base="xs:token">
            <xs:pattern value="[a-zA-Z_]{1}[a-zA-Z0-9_$.]+" />
        </xs:restriction>
    </xs:simpleType>

    <!-- Reusable attributes and attribute groups -->

    <xs:attribute name="field">
        <xs:annotation>
            <xs:documentation>
                The name of the field to set. The target of the assignment.
                
                Required. Attribute type: expression.
            </xs:documentation>
        </xs:annotation>
        <xs:simpleType>
            <xs:restriction base="xs:token">
                <xs:minLength value="1" />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>

    <xs:attribute name="error-list-name" type="xs:string">
        <xs:annotation>
            <xs:documentation>
                The name of the error message list. It will be created if it does not exist.
                Defaults to "error_list".
                
                Optional. Attribute types: constant, ${expression}.
            </xs:documentation>
        </xs:annotation>
    </xs:attribute>

    <xs:attribute name="type" type="javaClassName">
        <xs:annotation>
            <xs:documentation>
                The Java data type.
                
                Optional. Attribute type: constant. Attribute must contain a valid Java class name.
            </xs:documentation>
        </xs:annotation>
    </xs:attribute>

    <xs:attributeGroup name="attlist.operatorRequired">
        <xs:attribute name="operator" use="required">
            <xs:annotation>
                <xs:documentation>
                    The comparison operator. The operator describes the l-value compared to the r-value.
                    
                    The "contains" operator returns true if the l-value contains the r-value.
                    This operator does not perform type conversions.
                    The l-value must be a collection type or a String. A null l-value evaluates to false.
                    
                    Required. Attribute type: constant.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="equals"/>
                    <xs:enumeration value="not-equals"/>
                    <xs:enumeration value="less"/>
                    <xs:enumeration value="less-equals"/>
                    <xs:enumeration value="greater"/>
                    <xs:enumeration value="greater-equals"/>
                    <xs:enumeration value="contains"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>

    <xs:attributeGroup name="attlist.operatorOptionalRvalue">
        <xs:attribute name="operator" use="required">
            <xs:annotation>
                <xs:documentation>
                    The comparison operator. The operator describes the l-value compared to the r-value.
                    
                    The "contains" operator returns true if the l-value contains the r-value.
                    This operator does not perform type conversions.
                    The l-value must be a collection type or a String. A null l-value evaluates to false.
                    
                    The "is-null", "is-not-null", and "is-empty" operators
                    do not require an r-value. Any r-values will be ignored.
                    
                    Required. Attribute type: constant.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="equals"/>
                    <xs:enumeration value="not-equals"/>
                    <xs:enumeration value="less"/>
                    <xs:enumeration value="less-equals"/>
                    <xs:enumeration value="greater"/>
                    <xs:enumeration value="greater-equals"/>
                    <xs:enumeration value="contains"/>
                    <xs:enumeration value="is-null"/>
                    <xs:enumeration value="is-not-null"/>
                    <xs:enumeration value="is-empty"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>

    <xs:attributeGroup name="attlist.check-permission">
        <xs:attribute name="permission" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>
                    The name of the permission.
                    The user must belong to a security group that includes this permission.
                    
                    Required. Attribute types: constant, ${expression}.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="action" type="xs:string">
            <xs:annotation>
                <xs:documentation>
                    If an action is specified the user can have one of two permissions: the permission + "_ADMIN" or permission + action.
                    Examples of actions include "_CREATE", "_VIEW", etc.
                    
                    Optional. Attribute types: constant, ${expression}.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>

    <xs:attribute name="delegator-name" type="xs:string">
        <xs:annotation>
            <xs:documentation>
                An alternate delegator name. When specified, the entity operation will use the
                alternate delegator instead of the current delegator.
                
                Optional. Attribute types: constant, ${expression}.
            </xs:documentation>
        </xs:annotation>
    </xs:attribute>

<!--
    =============================
    ===== The Root Elements =====
    =============================
-->

    <xs:element name="simple-methods">
        <xs:annotation>
            <xs:documentation>
                The document-level element of Mini-language files.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="simple-method" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="simple-method">
        <xs:annotation>
            <xs:documentation>
                Contains a block of Mini-language code.
                
                A simple method can be called in either an event context from the Control
                Servlet (or another event) or in a service context through the Service
                Engine, or any other component that has access to a service
                dispatcher.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group ref="AllOperations" minOccurs="0" maxOccurs="unbounded" />
            <xs:attribute name="method-name" type="javaClassName" use="required">
                <xs:annotation>
                    <xs:documentation>
                        A name (preferably a legal Java identifier) for this method.
                        This name must be unique for the XML file it is in as it will be used to reference this method externally.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="short-description" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        A short description of the method - used for documentation.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="login-required" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Require a user login to run this method. Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="use-transaction" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Create a transaction if none exists for this thread. Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="default-error-code" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The default error return code. Defaults to "error".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="default-success-code" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The default success return code. Defaults to "success".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-request-object-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the javax.servlet.ServletRequest object. Defaults to "request".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-response-object-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the javax.servlet.ServletResponse object. Defaults to "response".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-session-object-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the javax.servlet.http.HttpSession object. Defaults to "session".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-response-code-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event response code. Defaults to "_response_code_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-error-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event error message. Defaults to "_error_message_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-error-message-list-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event error message list. Defaults to "_error_message_list_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-event-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event message. Defaults to "_event_message_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-event-message-list-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event message list. Defaults to "_event_message_list_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-response-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service response message. Defaults to "responseMessage".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-error-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service error message. Defaults to "errorMessage".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-error-message-list-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service error message list. Defaults to "errorMessageList".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-error-message-map-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service error message map. Defaults to "errorMessageMap".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-success-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service success message. Defaults to "successMessage".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-success-message-list-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service success message list. Defaults to "successMessageList".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

<!--
    =================================
    ===== Assignment Operations =====
    =================================
-->

    <xs:element name="add-error" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Adds an error message to an error message list.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element ref="fail-message" />
                <xs:element ref="fail-property" />
            </xs:choice>
            <xs:attribute ref="error-list-name"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="assert" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Adds an error message to the error message list for each condition that evaluates to false.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group maxOccurs="unbounded" ref="IfConditions" />
            <xs:attribute type="xs:string" name="title">
                <xs:annotation>
                    <xs:documentation>
                        The title of the assert operation. The title is used in test reports.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="error-list-name"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="check-id" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Evaluates the specified field, and adds an error message to the error message list if the field's value is not a valid database ID value.
                
                <![CDATA[Valid IDs can be any sequence of characters or digits but must not contain the following characters:
                space [ ], double quote ["], single quote ['], ampersand [&], question mark [?],
                less-than sign [<], greater-than sign [>], forward-slash [/], back-slash [\].]]>
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0">
                <xs:element ref="fail-message" />
                <xs:element ref="fail-property" />
            </xs:choice>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the ID value to check.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="error-list-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="check-permission" substitutionGroup="IfOtherOperations">
        <xs:annotation>
            <xs:documentation>
                Checks to see if the current user has the specified permission.
                If the user does not have the specified permission or if there is no user associated with the context
                then the failure message from fail-message or fail-property will be added to the
                specified error list.
                
                Note that this element must be followed by the check-errors element for it to do anything meaningful. 
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="alt-permission" minOccurs="0" maxOccurs="unbounded">
                    <xs:annotation>
                        <xs:documentation>
                            Declares an alternate permission. Alternate permissions are checked when the primary permission check fails.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:attributeGroup ref="attlist.check-permission" />
                    </xs:complexType>
                </xs:element>
                <xs:choice>
                    <xs:element ref="fail-message" />
                    <xs:element ref="fail-property" />
                </xs:choice>
            </xs:sequence>
            <xs:attributeGroup ref="attlist.check-permission" />
            <xs:attribute ref="error-list-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="clear-field" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Sets the value of the specified field to null.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
        </xs:complexType>
    </xs:element>

    <xs:element name="create-object" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Creates an instance of the specified class.
                The string and field sub-elements are passed to the constructor method as arguments in the order they are specified.
                A runtime exception will be thrown if the sub-elements do not match the constructor method arguments.
                
                Deprecated - use the script element.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="field" />
                <xs:element ref="string" />
            </xs:choice>
            <xs:attribute ref="field" use="required" />
            <xs:attribute name="class-name" type="javaClassName" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the class to construct an instance of.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="fail-message">
        <xs:annotation>
            <xs:documentation>
                Declares an error message.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="message" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The error message text.
                        
                        Required. Attribute type: constant+expr
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="fail-property">
        <xs:annotation>
            <xs:documentation>
                Declares an error message found in a properties file.
                Typically used for internationalized messages.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="resource" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of a properties file on the classpath.
                        
                        Required. Attribute type: constant
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="property" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The property key.
                        
                        Required. Attribute type: constant
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="field">
        <xs:annotation>
            <xs:documentation>
                Declares an environment field to be passed as an argument to an object method call.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the environment field to use.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="type">
                <xs:annotation>
                    <xs:documentation>
                        The Java class of the argument. Defaults to "java.lang.String".
                        It should be the type specified in the method signature, not the type of the object being
                        passed in.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="field-to-list" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Appends an object to the specified list.
                
                Deprecated - use the set element.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The field name of the object to append. The operation does nothing if the field does not exist.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The field name of the list that the object will be appended to.
                        If the list does not exist, one will be created.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="field-to-request" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a field to a servlet request attribute.
                Valid only when the simple-method is called as an event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to copy from. The source of the assignment.
                        The operation does nothing if the field does not exist.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="request-name">
                <xs:annotation>
                    <xs:documentation>
                        The servlet request attribute name. The target of the assignment.
                        Defaults to the value of the field attribute.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="field-to-result" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a field to a service OUT attribute.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to copy from. The source of the assignment.
                        The operation does nothing if the field does not exist.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="result-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the result field to set. The target of the assignment.
                        Defaults to the value of the field attribute.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="field-to-session" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a field to a servlet session attribute.
                Valid only when the simple-method is called as an event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to copy from. The source of the assignment.
                        The operation does nothing if the field does not exist.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="session-name">
                <xs:annotation>
                    <xs:documentation>
                        The servlet session attribute name. The target of the assignment.
                        Defaults to the value of the field attribute.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="first-from-list" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Assigns the first (lowest order) entry in a list to a field.
                If the list does not exist or is empty, assigns null to a field.
                
                Deprecated - use the set element.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="entry" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to set. The target of the assignment.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the list that contains the object to copy.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="list-to-list" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Copy a list to another list.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        Name of the list to copy from. The operation does nothing if the list does not exist.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="to-list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        Name of the list to copy to. If the list does not exist, one will be created.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="map-to-map" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a map to another map.
                If a target map is not specified, the source map is copied to the current
                environment (memory space).
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the map to copy from. The operation does nothing if the map does not exist.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="to-map">
                <xs:annotation>
                    <xs:documentation>
                        The name of the map to copy to. If the target map does not exist, one will be created.
                        If this attribute is empty, the source map will be copied to the current environment.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="now" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Sets a field to the current system time.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
            <xs:attribute name="type">
                <xs:annotation>
                    <xs:documentation>
                        The field data type. Defaults to "java.sql.Timestamp".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="java.sql.Timestamp"/>
                        <xs:enumeration value="java.sql.Date" />
                        <xs:enumeration value="java.sql.Time" />
                        <xs:enumeration value="java.util.Date" />
                        <xs:enumeration value="java.lang.Long" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="now-date-to-env" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Sets a field to a java.sql.Date object initialized to the current system time.
                Deprecated - use now.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
        </xs:complexType>
    </xs:element>

    <xs:element name="now-timestamp" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Sets a field to a java.sql.Timestamp object initialized to the current system time.
                Deprecated - use now.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
        </xs:complexType>
    </xs:element>

    <xs:element name="order-by">
        <xs:annotation>
            <xs:documentation>
                Declares a field or map key to sort on.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="field-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field or map key to sort on.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="order-map-list" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Sorts a list of maps. Maps are sorted by the keys specified in the order-by sub-elements.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="order-by" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the list to be sorted. The operation does nothing if the list is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="property-to-field" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Assigns a resource property value to a field.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
            <xs:attribute type="xs:string" name="resource" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of a properties resource. Can be a file on the classpath or
                        a resource defined in the SystemProperty entity.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="property" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The property key.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="default">
                <xs:annotation>
                    <xs:documentation>
                        The default value to use if the specified property value is null or empty.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="booleanConst" name="no-locale">
                <xs:annotation>
                    <xs:documentation>
                        Suppress property value localization. The user's/system locale will be ignored
                        when retriving the property value.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="arg-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of an argument list to be used with a formatting string.
                        The argument list is applied to the property value.
                        The attribute does nothing if the argument list is not found.
                        See the java.text.MessageFormat class for more information.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="arg-list-name">
                <xs:annotation>
                    <xs:documentation>
                        Deprecated - use the arg-list attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="request-parameters-to-list" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Appends a servlet request parameter list to a list.
                Valid only when the simple-method is called as an event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="request-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The servlet request parameter name. All matching parameter values will be added to the list.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the list. If the list does not exist, one will be created.
                        Defaults to the request-name attribute value.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list-name">
                <xs:annotation>
                    <xs:documentation>
                        Deprecated - use the list attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="request-to-field" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a servlet request attribute to a field.
                Valid only when the simple-method is called as an event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
            <xs:attribute type="xs:string" name="request-name">
                <xs:annotation>
                    <xs:documentation>
                        The servlet request attribute name. Defaults to the value of field attribute.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="default">
                <xs:annotation>
                    <xs:documentation>
                        A default value to use if the request attribute does not exist.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="session-to-field" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a servlet session attribute to a field.
                Valid only when the simple-method is called as an HTTP event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
            <xs:attribute type="xs:string" name="session-name">
                <xs:annotation>
                    <xs:documentation>
                        The servlet session attribute name. Defaults to the value of the field attribute.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="default">
                <xs:annotation>
                    <xs:documentation>
                        A default value to use if the request attribute does not exist.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="set" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Assigns a field from an expression or script, or from a constant value. Also supports a default value and type conversion.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
            <xs:attribute type="xs:string" name="from">
                <xs:annotation>
                    <xs:documentation>
                        An expression or script that returns an object or null. The source of the assignment.
                        
                        A script must be prefixed with the script language followed by a colon (":").
                        
                        Required if the value attribute is empty. Attribute types: expression, script.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="from-field">
                <xs:annotation>
                    <xs:documentation>
                        Deprecated - use the from attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="value">
                <xs:annotation>
                    <xs:documentation>
                        A constant value, or a constant that includes an expression. The source of the assignment.
                        
                        Required if the from attribute is empty. Attribute type: constant+expr.
                        Defaults to java.lang.String data type.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="default">
                <xs:annotation>
                    <xs:documentation>
                        A default value that is used when the from attribute evaluates to null or empty.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="default-value">
                <xs:annotation>
                    <xs:documentation>
                        Deprecated - use the default attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="javaClassName" name="type">
                <xs:annotation>
                    <xs:documentation>
                        The Java data type to convert to. "NewList" will create a new java.util.List, "NewMap" will create a new java.util.Map.
                        Otherwise, the attribute must contain a valid Java class name.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="format">
                <xs:annotation>
                    <xs:documentation>
                        Format to be used for object type conversion. Used when the type attribute is not empty.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="set-if-null" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Controls if the target field can be set to null when the from attribute evaluates to null.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="set-if-empty" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Controls if the target field can be set to an empty value. The meaning of "empty" depends on the Java data type.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="set-calendar" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Adjusts a Timestamp by a specified time duration.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
            <xs:attribute type="xs:string" name="from">
                <xs:annotation>
                    <xs:documentation>
                        An expression or script that returns an object or null. The source of the assignment.
                        
                        A script must be prefixed with the script language followed by a colon (":").
                        
                        Required if the value attribute is empty. Attribute types: expression, script.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="from-field">
                <xs:annotation>
                    <xs:documentation>
                        Deprecated - use the from attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="value">
                <xs:annotation>
                    <xs:documentation>
                        A constant value, or a constant that includes an expression. The source of the assignment.
                        
                        Required if the from attribute is empty. Attribute type: constant+expr.
                        Defaults to java.lang.String data type.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="default">
                <xs:annotation>
                    <xs:documentation>
                        A default value that is used when the from attribute evaluates to null or empty.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="default-value">
                <xs:annotation>
                    <xs:documentation>
                        Deprecated - use the default attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="set-if-null" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Controls if the target field can be set to null when the from attribute evaluates to null.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="years">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of year(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="months">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of month(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="days">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of days(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="hours">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of hour(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="minutes">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of minute(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="seconds">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of second(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="millis">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of millisecond(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="period-align-start">
                <xs:annotation>
                    <xs:documentation>
                        Align the adjusted date to the start of a period.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="year" />
                        <xs:enumeration value="month" />
                        <xs:enumeration value="week" />
                        <xs:enumeration value="day" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="period-align-end">
                <xs:annotation>
                    <xs:documentation>
                        Align the adjusted date to the end of a period.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="year" />
                        <xs:enumeration value="month" />
                        <xs:enumeration value="week" />
                        <xs:enumeration value="day" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute type="xs:string" name="locale">
                <xs:annotation>
                    <xs:documentation>
                        A locale value (eg: en). The locale selects the calendar to be used for the adjustment.
                        Defaults to the environment locale.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="time-zone">
                <xs:annotation>
                    <xs:documentation>
                        A time zone value (eg: GMT).
                        Defaults to the environment time zone.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="set-current-user-login" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Sets the UserLogin entity value to be used for authentication for the rest of the method.
                This is mostly used for calling services, etc.
                
                This element is deprecated. You can pass an alternate UserLogin
                entity value to the called service's IN attributes.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the UserLogin entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="set-service-fields" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Copies elements from a source map that match a service's IN or OUT attributes to a target map.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="service-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the service.

                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The map to copy the matching attributes from.

                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="to-map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The map to copy the matching attributes to.
                        If the map does not exist, a new one will be created.

                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="mode">
                <xs:annotation>
                    <xs:documentation>
                        The service attributes mode - IN or OUT. Defaults to "IN".

                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="IN" />
                        <xs:enumeration value="OUT" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="string">
        <xs:annotation>
            <xs:documentation>
                Declares a java.lang.String to be passed as an argument to a method call.
                The String can be contained in the value attribute and/or in the element body.
                The element body text is appended to the value attribute text. 
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value">
                <xs:annotation>
                    <xs:documentation>
                        The String text.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="string-append" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Performs string concatenation and formatting. The operation starts by applying
                an argument list (if found) to the string attribute value, the result is
                prepended by the prefix attribute value, and the suffix attribute value is
                appended to the result. If the string specified in the field attribute exists,
                the final result is appended to it, else the field is set to the final result.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The target of the string concatention.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The string to append to the field named in the field attribute.
                        This can be a formatting string that is used with the argument list
                        specified in the arg-list attribute.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="arg-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of an argument list to be used with a formatting string.
                        The argument list is applied to the string attribute value.
                        The attribute does nothing if the argument list is not found.
                        See the java.text.MessageFormat class for more information.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="prefix">
                <xs:annotation>
                    <xs:documentation>
                        A string that will be prepended to the string attribute value.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="suffix">
                <xs:annotation>
                    <xs:documentation>
                        A string that will be appended to the string attribute value.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="string-to-list" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Adds a string to a list of strings. Deprecated - use the set element.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The string to add to the list specified in the list attribute.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        List to add the string to. If the list does not exist, one will be created.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="arg-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of an argument list to be used with a formatting string.
                        The argument list is applied to the string attribute value.
                        The attribute does nothing if the argument list is not found.
                        See the java.text.MessageFormat class for more information.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="message-field">
                <xs:annotation>
                    <xs:documentation>
                        Inserts a message above a field (used in conjunction with @fieldErrors FTL macro).
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="to-string" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Converts an object to a string. Deprecated - use the set element.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the object to convert.
                        The operation does nothing if the object is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="format">
                <xs:annotation>
                    <xs:documentation>
                        The format to use for the conversion.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="numeric-padding">
                <xs:annotation>
                    <xs:documentation>
                        Left-pad the string with the specified number of zeroes.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="webapp-property-to-field" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a property value from a properties file in a ServletContext resource to a field.
                Valid only when the simple-method is called as an event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="field" use="required" />
            <xs:attribute type="xs:string" name="resource" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The resource location of the properties file inside the webapp,
                        and relative to the root of the webapp (can be inside a war file).
                        An example of this is "/WEB-INF/myprops.properties".
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="property" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The property key.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="default">
                <xs:annotation>
                    <xs:documentation>
                        A default value to use if the property value is null or empty.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

<!--
    ==========================================
    ===== Conditional/Looping Statements =====
    ==========================================
-->

    <xs:element name="and" substitutionGroup="IfCombineConditions">
        <xs:annotation>
            <xs:documentation>
                Combines conditional elements using a boolean AND.
                Evaluates to true if all sub-elements evaluate to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group maxOccurs="unbounded" ref="IfConditions"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="break" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Causes script execution to exit the nearest enclosing loop element.
                Throws an exception if there is no enclosing looping element.
            </xs:documentation>
        </xs:annotation>
    </xs:element>

    <xs:element name="check-errors" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Halts script execution if the error message list contains any messages.
                The error message list is returned to the calling process.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="error-code">
                <xs:annotation>
                    <xs:documentation>
                        The error code to return to the calling process.
                        Defaults to value of the containing simple-method default-error-code attribute.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="error-list-name"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="condition">
        <xs:annotation>
            <xs:documentation>
                Combines a group of conditional elements into a single logical (true/false) expression.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group ref="IfConditions"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="continue" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Causes script execution to return to the beginning of the nearest enclosing loop element.
                Throws an exception if there is no enclosing looping element.
            </xs:documentation>
        </xs:annotation>
    </xs:element>

    <xs:element name="else">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code to be executed when a condition evaluates to false.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="else-if">
        <xs:annotation>
            <xs:documentation>
                Contains a condition and a block of code to be evaluated/executed when a parent condition evaluates to false.
                This element must contain two sub-elements: condition and then.
                If the condition of the parent element evaluates to false, then this element's condition will be evaluated,
                and if that condition evaluates to true, then the operations under the then element will be run.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="condition" />
                <xs:element ref="then" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="if" substitutionGroup="IfOtherOperations">
        <xs:annotation>
            <xs:documentation>
                Performs conditional processing on blocks of code.
                This operation specifies combinations of conditions, alternate conditions,
                and operations to run based on the evaluation of condition expressions.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="condition" />
                <xs:element ref="then" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="else-if" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <!-- FIXME: We need two versions of this element. -->
    <xs:element name="if-compare" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Compares a field to a constant value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will be compared. The l-value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attributeGroup ref="attlist.operatorOptionalRvalue" />
            <xs:attribute type="xs:string" name="value" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The value that the field will be compared to. The r-value.
                        
                        Ignored when the operator attribute equals "is-null", "is-not-null", or "is-empty" - required otherwise. Attribute type: constant+expr.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="type">
                <xs:annotation>
                    <xs:documentation>
                        The Java data type. Both values will be converted to this type before comparison.
                        Invalid when the operator attribute value is "contains".
                        
                        Optional. Attribute type: constant. Attribute must contain a valid Java class name.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="format">
                <xs:annotation>
                    <xs:documentation>
                        Format used for type conversions. Valid only when the type attribute is not empty.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <!-- FIXME: We need two versions of this element. -->
    <xs:element name="if-compare-field" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Compares a field to another field.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will be compared. The l-value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attributeGroup ref="attlist.operatorRequired" />
            <xs:attribute type="xs:string" name="to-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will be compared to the field specified in the field attribute.
                        The r-value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="type" />
            <xs:attribute type="xs:string" name="format">
                <xs:annotation>
                    <xs:documentation>
                        Format used for type conversions. Valid only when the type attribute is not empty.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <!-- FIXME: We need two versions of this element. -->
    <xs:element name="if-empty" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Tests if a field is null or empty.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to test.
                        Object to test must be a collection, string, or a class that implements org.ofbiz.base.lang.IsEmpty.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <!-- FIXME: We need two versions of this element. -->
    <xs:element name="if-has-permission" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Tests if the current user has the specified permission.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attributeGroup ref="attlist.check-permission" />
        </xs:complexType>
    </xs:element>

    <xs:element name="if-instance-of" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Tests if a field is an instance of a Java class.
                The operation will execute its contained block of code if the condition evaluates to true,
                otherwise it will execute the block of code in its else sub-element (if one exists).
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to test.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="class" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the class to test for.
                        
                        Required. Attribute type: constant. Attribute must contain a valid Java class name.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="if-not-empty" substitutionGroup="IfOtherOperations">
        <xs:annotation>
            <xs:documentation>
                Tests if a field is not null and not empty.
                The operation will execute its contained block of code if the condition evaluates to true,
                otherwise it will execute the block of code in its else sub-element (if one exists).
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to test.
                        Object to test must be a collection, string, or a class that implements org.ofbiz.base.lang.IsEmpty.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <!-- FIXME: We need two versions of this element. -->
    <xs:element name="if-regexp" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Tests if a field matches a regular expression.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to test.
                        The field object will be converted to a string before the test.
                        An empty string will be used if the field object is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="expr" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The regular expression to test for.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <!-- FIXME: We need two versions of this element. -->
    <xs:element name="if-validate-method" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Invokes a Java class static method that returns a boolean value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to use as the method argument.
                        The field object will be converted to a string before the method call.
                        An empty string will be used if the field object is not found.
                        
                        Required. Attribute type: expression
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="method" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the method that will be called to validate the field.
                        It must be a static method that takes a single String parameter and return a boolean.
                        
                        Required. Attribute type: constant
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="class">
                <xs:annotation>
                    <xs:documentation>
                        The name of the class that contains the validation method. Defaults to "org.ofbiz.base.util.UtilValidate".
                        
                        Optional. Attribute type: constant
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="iterate" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code that is executed once for each entry in a collection.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the collection to iterate over.
                        The operation does nothing if the field is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="entry" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the current collection entry.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="iterate-map" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code that is executed once for each entry in a map.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the map to iterate over.
                        The operation does nothing if the field is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="key" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the current map entry key.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="value" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the current map entry value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="loop" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code that is executed repeatedly until a maximum count is reached.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
            <xs:attribute type="xs:string" name="count" use="required">
                <xs:annotation>
                    <xs:documentation>
                        A maximum count expression. Defaults to "0" (zero).
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="field">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the current count.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="not" substitutionGroup="IfCombineConditions">
        <xs:annotation>
            <xs:documentation>
                Inverts a conditional element using a boolean NOT.
                Evaluates to true if the sub-element evaluates to false.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group ref="IfConditions"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="or" substitutionGroup="IfCombineConditions">
        <xs:annotation>
            <xs:documentation>
                Combines conditional elements using a boolean OR.
                Evaluates to true if any sub-element evaluates to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group maxOccurs="unbounded" ref="IfConditions"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="return" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Returns control (execution) to the calling process.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="response-code">
                <xs:annotation>
                    <xs:documentation>
                        A response code to return to the calling process. Defaults to the
                        value of the containing simple-method element "default-success-code" attribute.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="then">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code to be executed when a condition element evaluates to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="while" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code that is executed repeatedly while a condition element evaluates to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="condition" />
                <xs:element ref="then" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="xor" substitutionGroup="IfCombineConditions">
        <xs:annotation>
            <xs:documentation>
                Combines conditional elements using a boolean XOR.
                Evaluates to true if only one sub-element evaluates to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group maxOccurs="unbounded" ref="IfConditions"/>
        </xs:complexType>
    </xs:element>

<!--
    ===========================
    ===== Call Operations =====
    ===========================
-->

    <xs:attribute name="result-name" type="xs:string">
        <xs:annotation>
            <xs:documentation>
                The name of the called service's OUT attribute.
                
                Required. Attribute type: expression.
            </xs:documentation>
        </xs:annotation>
    </xs:attribute>

    <xs:attributeGroup name="attlist.propertyInfoOptional">
            <xs:attribute name="resource" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of a properties file on the classpath.
                        
                        Optional. Attribute type: constant
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="property" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The property key.
                        
                        Optional. Attribute type: constant
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
    </xs:attributeGroup>

    <xs:element name="call-bsh" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Executes a BSH script. Deprecated - replace with script.
                
                The script can be contained in a Java resource, and/or a short
                script can be included in the element body.
                If a Java resource is specified, and the element body contains a script,
                the element body script will be executed after the Java resource script is executed.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:attribute type="xs:string" name="resource">
                <xs:annotation>
                    <xs:documentation>
                        A Java resource that contains the script.
                        
                        Required if the element body is empty. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-class-method" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Calls a static method on a Java class. Deprecated - replace with script.
                
                The string and field sub-elements are passed to the method as arguments in the order they are specified.
                If the method returns a value, the value will be put in the named field.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="string"/>
                <xs:element ref="field"/>
            </xs:choice>
            <xs:attribute type="xs:string" name="class-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the class containing the static method.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="method-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the static method to call.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="ret-field">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to put the method return value in.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-map-processor" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Invokes a simple map processor.
                
                An inline map processor can be used by including a simple-map-processor element in the call-map-processor element.
                If both an external and an inline map processor are specified, the external
                one will be called first, allowing the inline one to override its behavior.
                
                Map processor messages are added to an error message list.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" ref="simple-map-processor" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="in-map-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the map to be processed.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="out-map-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will receive the processed map.
                        If the map does not exist, one will be created.
                        If the map already exists it will be added to in place.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="xml-resource">
                <xs:annotation>
                    <xs:documentation>
                        The full path and filename on the classpath of the XML file which contains an external map processor to execute.
                        This is only required if an external map processor is desired.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="processor-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the external map processor to execute in the specified xml-resource.
                        This is only required if an external map processor is desired.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="error-list-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="call-object-method" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Calls a method on an existing Java object. Deprecated - replace with script.
                
                The string and field sub-elements are passed to the method as arguments in the order they are specified.
                If the method returns a value, the value will be put in the named field.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="string" />
                <xs:element ref="field" />
            </xs:choice>
            <xs:attribute type="xs:string" name="obj-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the object to be called.
                        A runtime exception is thrown if the object is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="method-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the method to call.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="ret-field">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to put the method return value in.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-service" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Invokes a service through the Service Engine.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="error-prefix" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>
                            Declares a message to prepend to the error message.
                            The message can be included in the element body or in a Java resource.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType mixed="true">
                        <xs:attributeGroup ref="attlist.propertyInfoOptional" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="error-suffix" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>
                            Declares a message to append to the error message.
                            The message can be included in the element body or in a Java resource.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType mixed="true">
                        <xs:attributeGroup ref="attlist.propertyInfoOptional" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="success-prefix" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>
                            Declares a message to prepend to the success message.
                            The message can be included in the element body or in a Java resource.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType mixed="true">
                        <xs:attributeGroup ref="attlist.propertyInfoOptional" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="success-suffix" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>
                            Declares a message to append to the success message.
                            The message can be included in the element body or in a Java resource.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType mixed="true">
                        <xs:attributeGroup ref="attlist.propertyInfoOptional" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="message-prefix" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>
                            Declares a message to prepend to any kind of message.
                            The message can be included in the element body or in a Java resource.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType mixed="true">
                        <xs:attributeGroup ref="attlist.propertyInfoOptional" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="message-suffix" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>
                            Declares a message to append to any kind of message.
                            The message can be included in the element body or in a Java resource.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType mixed="true">
                        <xs:attributeGroup ref="attlist.propertyInfoOptional" />
                    </xs:complexType>
                </xs:element>
                <xs:element name="default-message" minOccurs="0">
                    <xs:annotation>
                        <xs:documentation>
                            Declares a message to be used when the called service does not return a message.
                            The message can be included in the element body or in a Java resource.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType mixed="true">
                        <xs:attributeGroup ref="attlist.propertyInfoOptional" />
                    </xs:complexType>
                </xs:element>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element ref="results-to-map" />
                    <xs:element ref="result-to-field" />
                    <xs:element ref="result-to-request" />
                    <xs:element ref="result-to-session" />
                    <xs:element ref="result-to-result" />
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="service-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the service to invoke.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="in-map-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of a field containing a map that will be used for the service's IN parameters.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="include-user-login" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Include the current UserLogin entity value in the called service's IN parameters.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="break-on-error" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Halt script execution if the called service returns an error.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="error-code" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The error code returned by the called service.
                        Defaults to the enclosing simple-method default-error-code attribute value.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="success-code" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The success code returned by the called service.
                        Defaults to the enclosing simple-method default-success-code attribute value.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="require-new-transaction" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Require a new transaction for the called service.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="transaction-timeout" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The timeout for the new transaction, in seconds.
                        Defaults to the value set in the called service definition.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-service-asynch" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Calls a service asynchronously. No return messages
                are used; that doesn't mean no errors will result, but they would just be
                system errors like database failures, etc. which all have system error messages.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="service-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the service to invoke.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="in-map-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of a field containing a map that will be used for the service's IN parameters.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="include-user-login" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Include the current UserLogin entity value in the called service's IN parameters.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-simple-method" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Calls another simple-method in the same context as the current one.
                The called simple-method will have the same environment as the calling simple-method,
                including all environment fields, and either the event or service objects
                that the calling simple-method was called with.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="result-to-field" minOccurs="0" maxOccurs="unbounded">
                    <xs:annotation>
                        <xs:documentation>
                            Used when scope="function". Copies the called method fields
                            to the calling method fields.
                        </xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="method-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the simple-method to execute in the specified xml-resource,
                        or in the current XML file if no xml-resource is specified.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="xml-resource" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The full path and filename on the classpath of the XML file which contains an external simple-method to execute.
                        This is only required if a simple-method in a different file is desired.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="scope">
                <xs:annotation>
                    <xs:documentation>
                        The memory scope to use. In an &quot;inline&quot; memory scope, fields declared or modified in the called method
                        will be reflected back to the calling method - as if the called method was inline. In a &quot;function&quot; memory
                        scope, fields declared or modified in the called method are local to the called method - they are not
                        reflected back to the calling method.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="inline" />
                        <xs:enumeration value="function" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="results-to-map">
        <xs:annotation>
            <xs:documentation>
                Copies the called service's result map to the specified field.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="map-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the target field.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="result-to-field">
        <xs:annotation>
            <xs:documentation>
                Copies the called service's OUT attribute to the specified field.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="result-name" use="required" />
            <xs:attribute type="xs:string" name="field">
                <xs:annotation>
                    <xs:documentation>
                        The name of target field. Defaults to the result-name attribute value.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="result-to-request">
        <xs:annotation>
            <xs:documentation>
                Copies the called service's OUT attribute to the specified request attribute.
                Valid only when the script is run in an event.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="result-name" use="required" />
            <xs:attribute type="xs:string" name="request-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the target request attribute. Defaults to the result-name attribute value.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="result-to-session">
        <xs:annotation>
            <xs:documentation>
                Copies the called service's OUT attribute to the specified session attribute.
                Valid only when the script is run in an event.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="result-name" use="required" />
            <xs:attribute type="xs:string" name="session-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the target session attribute. Defaults to the result-name attribute value.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="result-to-result">
        <xs:annotation>
            <xs:documentation>
                Copies service OUT attributes from a called service to the calling service's OUT attributes.
                This element can also be used to copy the called service OUT attributes to the return result of
                a simple-method called as a function.
                
                Note that the attribute names are somewhat confusing:
                "result-name" is the name of the OUT attribute of the called service, and
                "service-result-name" is the name of the OUT attribute of the calling service.
                In other words, copy the OUT attribute FROM result-name TO service-result-name.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="result-name" use="required" />
            <xs:attribute type="xs:string" name="service-result-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the calling service's OUT attribute (or function return result).
                        Defaults to the result-name attribute value.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="script" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Runs an external script and/or a short inline script (scriptlet). The scriptlet can be
                included in the script attribute or in the element body.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:attribute type="xs:string" name="location">
                <xs:annotation>
                    <xs:documentation>
                        The script location. The location attribute accepts the component:// file location
                        protocol. Script functions/methods can be invoked by appending a hash (#) and the
                        function/method name.
                        
                        Required if the script attribute is empty. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="script">
                <xs:annotation>
                    <xs:documentation>
                        A short script (scriptlet). Can be used instead of a file.
                        The script must be prefixed with the script language followed by a colon (":").
                        
                        Required if the location attribute is empty. Attribute type: script.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

<!--
    =============================
    ===== Entity Operations =====
    =============================
-->

    <xs:attribute type="xs:string" name="began-transaction-name">
        <xs:annotation>
            <xs:documentation>
                The name of the field that contains a Boolean value specifying whether or not a transaction was begun in the current transaction demarcation.
                Defaults to "beganTransaction".
                
                Optional. Attribute type: expression.
            </xs:documentation>
        </xs:annotation>
    </xs:attribute>

    <xs:attributeGroup name="attlist.entityFindOperations">
        <xs:attribute name="entity-name" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>
                    The name of the entity to search in.
                    
                    Required. Attribute type: constant, ${expression}.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="list" type="xs:string" use="required">
            <xs:annotation>
                <xs:documentation>
                    The name of the field that will contain the result list.
                    
                    Required. Attribute type: expression.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="filter-by-date" type="booleanExpr">
            <xs:annotation>
                <xs:documentation>
                    Filter the result list by the current date. The entity must have "fromDate" and
                    "thruDate" fields.
                    Defaults to "false".
                    
                    Optional. Attribute type: constant, ${expression}.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="distinct" type="booleanExpr">
            <xs:annotation>
                <xs:documentation>
                    Filter the results so that all of them are unique.
                    Defaults to "false".
                    
                    Optional. Attribute type: constant, ${expression}.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="use-cache" type="booleanExpr">
            <xs:annotation>
                <xs:documentation>
                    Use the entity cache.
                    Defaults to "false".
                    
                    Optional. Attribute type: constant, ${expression}.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute ref="delegator-name" />
    </xs:attributeGroup>

    <xs:element name="clear-cache-line" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Clears entity values from the cache.
                Cache clearing is controlled by an optional "map" attribute.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="entity-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map">
                <xs:annotation>
                    <xs:documentation>
                        The name of a field containing a map that will be used to find matching entity values.
                        If the fields in the map form the full primary key the entry will be removed from the byPrimaryKey cache.
                        If the map exists but the fields do not include a full primary key the entry will be removed from the byAnd cache.
                        If no map name is specified the entry will be removed from the all caches.
                        
                        Optional. Attribute type: expression.
                </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="clear-entity-caches" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Removes all entity values from the cache.
                This element should be used sparingly because of the performance impact.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="clone-value" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Creates a copy of an entity value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the entity value to be copied.
                        The operation does nothing if the entity value is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="new-value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the new entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="condition-expr">
        <xs:annotation>
            <xs:documentation>
                Uses an SQL operator to compare an entity field to a variable or constant value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="field-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity field that will be compared. The l-value.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="operator">
                <xs:annotation>
                    <xs:documentation>
                        The SQL operator.
                        If set to "between" then the r-value must be a collection that has two entries in it.
                        If set to "in" or "not-in" then the r-value must be a collection.
                        Defaults to "equals".
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="less" />
                        <xs:enumeration value="greater" />
                        <xs:enumeration value="less-equals" />
                        <xs:enumeration value="greater-equals" />
                        <xs:enumeration value="equals" />
                        <xs:enumeration value="not-equals" />
                        <xs:enumeration value="in" />
                        <xs:enumeration value="not-in" />
                        <xs:enumeration value="between" />
                        <xs:enumeration value="like" />
                        <xs:enumeration value="not-like" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="from-field" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of an environment field that the entity field will be compared to. The r-value.
                        
                        Required if the value attribute is empty. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="value" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        A constant value that the entity field will be compared to. The r-value.
                        
                        Required if the from-field attribute is empty. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="ignore-if-null" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Ignore the condition if the r-value is null.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="ignore-if-empty" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Ignore the condition if the r-value is empty.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="ignore-case" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Perform a case-insensitive comparison.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="ignore" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Ignore the condition if the r-value evaluates to "true".
                        Defaults to "false".
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="condition-list">
        <xs:annotation>
            <xs:documentation>
                Uses an SQL operator to combine entity find conditions into a single expression.
                You can have condition-list elements under condition-list, for building fairly complex condition trees,
                and you can also use condition-object elements at any point.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="condition-expr" />
                <xs:element ref="condition-list" />
                <xs:element ref="condition-object" />
            </xs:choice>
            <xs:attribute name="combine">
                <xs:annotation>
                    <xs:documentation>
                        The SQL operator.
                        Defaults to "and".
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="and" />
                        <xs:enumeration value="or" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="condition-object">
        <xs:annotation>
            <xs:documentation>
                Declares an environment field (variable) that contains an entity find condition expression object.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains an entity find condition expression object.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="create-value" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Creates a new entity value in the data source.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the entity value to be created.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="or-store" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Store the entity value if it already exists. Defaults to "false".
                        If set to "false", an error will result if an instance of the entity value exists
                        in the data source with the same primary key.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="entity-and" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Finds a group of entity values by using a set of entity field name/value pairs that are ANDed together.
                The name/value pairs used for the search are defined in child elements.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="field-map" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" />
                <xs:choice minOccurs="0">
                    <xs:element ref="limit-range" />
                    <xs:element ref="limit-view" />
                    <xs:element ref="use-iterator" />
                </xs:choice>
            </xs:sequence>
            <xs:attributeGroup ref="attlist.entityFindOperations"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="entity-condition" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Finds a group of entity values by using a condition expression.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0">
                    <xs:element ref="condition-expr"/>
                    <xs:element ref="condition-list"/>
                    <xs:element ref="condition-object"/>
                </xs:choice>
                <xs:element minOccurs="0" ref="having-condition-list"/>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by"/>
                <xs:choice minOccurs="0">
                    <xs:element ref="limit-range"/>
                    <xs:element ref="limit-view"/>
                    <xs:element ref="use-iterator"/>
                </xs:choice>
            </xs:sequence>
            <xs:attributeGroup ref="attlist.entityFindOperations"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="entity-count" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Counts a group of entity values that match a condition expression.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="condition-expr" />
                    <xs:element ref="condition-list" />
                    <xs:element ref="condition-object" />
                </xs:choice>
                <xs:element minOccurs="0" ref="having-condition-list" />
            </xs:sequence>
            <xs:attribute name="entity-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        Name of entity to count in.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="count-field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        Name of the field that will contain the count result.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="entity-data" substitutionGroup="EntityMiscOperations">
        <xs:annotation>
            <xs:documentation>
                Load or assert an entity data XML file. The operation can be used in two modes:
                "load" or "assert". The "load" mode will load the XML entity data into the database.
                The "assert" mode will compare the XML entity data with the database -
                any mismatched or missing data will be logged in the error message list.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="location" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The location of an XML file to load in database mode or to verify in assert mode.
                        
                        Required. Attribute type: constant, ${expression}.
                </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="mode">
                <xs:annotation>
                    <xs:documentation>
                        Operation mode: "load" or "assert". Defaults to "load".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="load" />
                        <xs:enumeration value="assert" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute type="xs:integer" name="timeout">
                <xs:annotation>
                    <xs:documentation>
                        Override the current transaction to start a new transaction and load the data with a different timeout.
                        Valid only when mode="load".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="error-list-name" />
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="entity-one" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Finds a single entity value by using the primary key.
                The primary key can be specified in the field-map child elements, or if they are absent,
                the primary key will be constructed from matching environment fields.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="field-map" />
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" />
            </xs:sequence>
            <xs:attribute name="entity-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        Name of the entity to search in.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="value-field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        Name of the field that will contain the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="use-cache">
                <xs:annotation>
                    <xs:documentation>
                        Use the entity cache.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="auto-field-map" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Look for all primary key field names in the current context as well as in the parameters map.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="field-map">
        <xs:annotation>
            <xs:documentation>
                Declares an entity field name/value pair.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        Name of the entity field. Defaults to from-field attribute value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="from-field">
                <xs:annotation>
                    <xs:documentation>
                        The name of an environment field that contains the entity field value.
                        
                        Required if the value attribute is empty. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="value">
                <xs:annotation>
                    <xs:documentation>
                        A constant entity field value.
                        
                        Required if the from-field attribute is empty. Attribute type: constant+expr.
                        Defaults to java.lang.String data type.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="filter-list-by-and" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Filters a list of entity values by the fields in the specified map.
                Each entity value in the list will be compared to the specified map, and
                if the entity value's fields match the map, the entity value will be copied
                to the target list.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the list of entity values.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the map that will be used for the entity field comparison.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="to-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field the filtered list will be put into.
                        Defaults to the value of the list attribute (operation replaces the old list).
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="filter-list-by-date" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Filters a list of entity values by their date-range fields.
                Each entity value in the list will be compared to the specified date, and
                if the entity value's date-range fields include the date, the entity value
                will be copied to the target list.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the list of entity values.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="to-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field the filtered list will be put into.
                        Defaults to the value of the list-name attribute (operation replaces the old list).
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="valid-date">
                <xs:annotation>
                    <xs:documentation>
                        The name of a field that contains the date object to filter by.
                        The date object must be a java.sql.Timestamp data type. Defaults to now.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="from-field-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity field to use as the beginning date.
                        Defaults to "fromDate".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="thru-field-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity field to use as the ending date.
                        Defaults to "thruDate".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="find-by-and" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Finds a group of entity values by using a set of entity field name/value pairs that are ANDed together.
                The name/value pairs used for the search are contained in a map.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="entity-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity to search in.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the list of entity values.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing a map that will be used for the search.
                        The map name/value pairs will be combined using a boolean AND.
                        All entity values will be found if this attribute is empty.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="order-by-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing a list that contains field names that you want the operation to order the results by.
                        Each entry in the list is a field name. The field name can be preceded by a plus or a minus sign to specify an
                        ascending or descending sort for that field. The default is ascending sort.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="fields-to-select-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of a list or set in the method environment that contains field names to select.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="use-cache">
                <xs:annotation>
                    <xs:documentation>
                        Use the entity cache.
                        Defaults to "false". Ignored when the use-iterator attribute equals "true". 
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="use-iterator" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Use the EntityListIterator when doing the query.
                        This is much more efficient for large data sets because the results are read incrementaly instead of all at once.
                        The EntityListIterator must be closed when you are finished, but this is done automatically by the iterate operation.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="find-by-primary-key" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Finds a single entity value that is retrieved from the data source by using the primary key.
                The primary key used for the search is contained in a map.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="entity-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity to search in. If the primary key map is an entity value,
                        then the value's entity name can be used instead of this attribute.
                        
                        Optional if the entity name comes from the primary key map. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing a map that will be used for the search.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="fields-to-select-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of a list or set in the method environment that contains field names to select.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="use-cache">
                <xs:annotation>
                    <xs:documentation>
                        Use the entity cache.
                        Defaults to "false". 
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="get-related" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Finds entity values that are related to an existing entity value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="relation-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity value relation to use.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the search results list.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing a map that will be used for the search.
                        The map name/value pairs will be combined using a boolean AND.
                        All entity values will be found if this attribute is empty.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="order-by-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing a list that contains field names that you want the find operation to order the results by.
                        Each entry in the list is a field name. The field name can be preceded by a plus or a minus sign to specify an
                        ascending or descending sort for that field. The default is ascending sort.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="use-cache">
                <xs:annotation>
                    <xs:documentation>
                        Use the entity cache.
                        Defaults to "false". 
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="get-related-one" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Finds an entity value that is related to an existing entity value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="value-field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="relation-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity value relation to use.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="to-value-field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the related entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="use-cache" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        Use the entity cache.
                        Defaults to "false". 
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="having-condition-list">
        <xs:annotation>
            <xs:documentation>
                A list of conditions that are combined with a boolean AND or OR that are applied to an entity value group.
                This element implements the SQL HAVING clause.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="condition-expr" />
                <xs:element ref="condition-list" />
                <xs:element ref="condition-object" />
            </xs:choice>
            <xs:attribute name="combine">
                <xs:annotation>
                    <xs:documentation>
                        The boolean operator used to combine conditions.
                        Defaults to "and".
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="and" />
                        <xs:enumeration value="or" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="limit-range">
        <xs:annotation>
            <xs:documentation>
                Constrains an entity find result by specifying a starting index and the number of results to include.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="start" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        A zero-based starting index. The attribute value must resolve to a non-negative integer.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="size" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The number of results to include. The attribute value must resolve to a non-negative integer.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="limit-view">
        <xs:annotation>
            <xs:documentation>
                Constrains an entity find result by specifying a view index and a view size.
                Example: view-index=3 and view-size=10 returns results 21 to 30.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="view-index" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        A one-based view index. The attribute value must resolve to a non-negative integer.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="view-size" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The number of results to view. The attribute value must resolve to a non-negative integer.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="make-next-seq-id" substitutionGroup="EntityMiscOperations">
        <xs:annotation>
            <xs:documentation>
                Generates a sequence string and uses it to update an entity value field.
                The sequence is generated by scanning all similar values in the entity and adding
                an increment amount to the highest sequence value found.
                
                This element is typically used to generate sequences for the child entity in a
                parent-child relationship - like order items or invoice items.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the entity value to update.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="seq-field-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity value field that will receive the sequence string.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="numeric-padding">
                <xs:annotation>
                    <xs:documentation>
                        Left-pad the sequence string with the specified number of zeros.
                        Defaults to "5".
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="increment-by">
                <xs:annotation>
                    <xs:documentation>
                        Sequence increment amount. Defaults to "1".
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="make-value" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Creates a new entity value.
                The new entity value exists only in memory - it is not persisted in the data source until it is stored.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="entity-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The entity name.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the new entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains a map that is used to initialize the entity value fields.
                        Map values whose key matches one of the entity value fields will be copied to the corresponding entity value field.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="order-value-list" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Performs an in-memory sort of a list of entity values.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the list of entity values.
                        If the source list is not found, the target field will be set to null.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="order-by-list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the list of field names to sort on.
                        Field names can be preceded by a plus symbol (+) or a minus symbol (-) to specify an ascending or descending sort for that field.
                        The default is ascending sort.
                        If the order-by-list is not found the target field will be set to a copy of the source list.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="to-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the sorted list. Defaults to the field specified
                        in the list attribute.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="refresh-value" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Refresh an entity value from the data source.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="remove-by-and" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Removes entity values from the data source.
                Uses a map of name/value pairs that will be combined using a boolean AND to constrain the removal.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="entity-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing a map that will be used for the constraint.
                        The map name/value pairs will be combined using a boolean AND.
                        If the map is missing or empty, then all entity values will be removed.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="remove-list" substitutionGroup="EntityListOperations">
        <xs:annotation>
            <xs:documentation>
                Removes from the data source all entity values in a list.
                If an entity value in the list is a complete primary key, then just that entity value will be removed from the database.
                If an entity value in the list is not a complete primary key, then all matching entity values will be removed from the database.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the list of entity values.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="remove-related" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Removes entity values from the data source that are related to an existing entity value.
                For a one-to-one relationship it will remove a single entity value if it exists,
                and for a one-to-many relationship it will remove all related entity values.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="value-field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="relation-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the entity value relation to use.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="remove-value" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Removes an entity value from the data source.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="value-field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="select-field">
        <xs:annotation>
            <xs:documentation>
                Declares an entity field to include in the entity operation.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="field-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The entity field name.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="sequenced-id" substitutionGroup="EntityMiscOperations">
        <xs:annotation>
            <xs:documentation>
                Generates a unique numeric sequence value. Sequence values are unique per sequence name.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="sequence-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The sequence name. In most cases, this is the name of the entity the sequence value
                        will be used in, but any name can be used.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="field" use="required" />
            <xs:attribute type="xs:string" name="stagger-max">
                <xs:annotation>
                    <xs:documentation>
                        Sequence stagger maximum. If set to "1" the sequence value will be incremented by 1,
                        otherwise the sequence value will be incremented by an amount between 1 and the
                        stagger maximum. Defaults to "1".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="get-long-only" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Preserve the sequence type - a numeric long. If set to "false" the sequence
                        value will be converted to a string. Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="set-nonpk-fields" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Copies non-PK fields from a map to an entity value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains a map that is used to initialize the entity value non-pk fields.
                        Map values whose key matches one of the entity value fields will be copied to the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="set-if-null" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Set entity value fields that are null or empty.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="set-pk-fields" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Copies PK fields from a map to an entity value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains a map that is used to initialize the entity value pk fields.
                        Map values whose key matches one of the entity value fields will be copied to the entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="set-if-null" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Set entity value fields that are null or empty.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="store-list" substitutionGroup="EntityListOperations">
        <xs:annotation>
            <xs:documentation>
                Stores in the data source all entity values in a list.
                Entity values that do not exist in the data source will be added to the data source.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the list of entity values.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute ref="delegator-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="store-value" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Stores an entity value in the data source.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="value-field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the entity value.
                        An error will be generated if the entity value does not exist in the data source.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="transaction-begin" substitutionGroup="EntityTxOperations">
        <xs:annotation>
            <xs:documentation>
                Begins a transaction if one is not already in place.
                
                Note that all simple-methods are executed inside a transaction unless
                the simple-method is flagged to not use a transaction.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="began-transaction-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="transaction-commit" substitutionGroup="EntityTxOperations">
        <xs:annotation>
            <xs:documentation>
                Commits a transaction that was begun with the transaction-begin element.
                Operation does nothing if no transaction was begun.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="began-transaction-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="transaction-rollback" substitutionGroup="EntityTxOperations">
        <xs:annotation>
            <xs:documentation>
                Rolls back a transaction that was begun with the transaction-begin element.
                If no transaction was begun with the transaction-begin element, a "set rollback only"
                operation will be performed - which will force the transaction to rollback regardless
                of which method or object is responsible for beginning and ending the transaction.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="began-transaction-name" />
        </xs:complexType>
    </xs:element>

    <xs:element name="use-iterator">
        <xs:annotation>
            <xs:documentation>
                Use the EntityListIterator for the entity find operation.
                This is much more efficient for large data sets because the results are read incrementaly instead of all at once.
                Note that when using this the use-cache setting will be ignored.
                Also note that an EntityListIterator must be closed when you are finished, but this is done automatically by the iterate operation.
            </xs:documentation>
        </xs:annotation>
    </xs:element>

<!--
    ==============================
    ===== Logging Operations =====
    ==============================
-->

    <xs:attribute name="level">
        <xs:annotation>
            <xs:documentation>
                The logging level to use.
                Must be one of the following: "verbose", "timing", "info", "important", "warning", "error", "fatal", "always".
                Defaults to "info".
                
                Required. Attribute type: constant.
                </xs:documentation>
        </xs:annotation>
        <xs:simpleType>
            <xs:restriction base="xs:token">
                <xs:enumeration value="info" />
                <xs:enumeration value="verbose" />
                <xs:enumeration value="timing" />
                <xs:enumeration value="important" />
                <xs:enumeration value="warning" />
                <xs:enumeration value="error" />
                <xs:enumeration value="fatal" />
                <xs:enumeration value="always" />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>

    <xs:element name="log" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Outputs a log a message.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute ref="level" use="required"/>
            <xs:attribute name="message" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The message to log.
                        
                        Required. Attribute type: constant+expr.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="trace" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Logs detailed information on the internal state of its sub-elements, using the specified log level.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
            <xs:attribute ref="level" use="required"/>
        </xs:complexType>
    </xs:element>

<!--
    ================================
    ===== Calculate Operations =====
    ================================
-->

    <xs:element name="calculate" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Performs an arithmetic calculation and puts the result in the specified field.
                Deprecated - use the set element.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="calcop" />
                <xs:element ref="number" />
            </xs:choice>
            <xs:attribute ref="field" />
            <xs:attribute name="rounding-mode">
                <xs:annotation>
                    <xs:documentation>
                        Rounding mode for the calculation, primarily for divide operation.
                        Defaults to "HalfEven".
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="Ceiling">
                            <xs:annotation>
                                <xs:documentation>
                                    Round towards positive infinity.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="Floor">
                            <xs:annotation>
                                <xs:documentation>
                                    Round towards negative infinity.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="Up">
                            <xs:annotation>
                                <xs:documentation>
                                    Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="Down">
                            <xs:annotation>
                                <xs:documentation>
                                    Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="HalfUp">
                            <xs:annotation>
                                <xs:documentation>
                                    Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="HalfDown">
                            <xs:annotation>
                                <xs:documentation>
                                    Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="HalfEven">
                            <xs:annotation>
                                <xs:documentation>
                                    Round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="Unnecessary">
                            <xs:annotation>
                                <xs:documentation>
                                    Asserts that the requested operation has an exact result, hence no rounding is necessary.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="${roundingMode}">
                            <xs:annotation>
                                <xs:documentation>
                                    Convention for variable name for this attribute, in cases where it is determined at run-time.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="decimal-scale" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        Initial scale (decimals) to use. Defaults to "2".
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="decimal-format" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        Decimal format to use for conversion to string.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="type">
                <xs:annotation>
                    <xs:documentation>
                        Data type of the calculation result. Defaults to "BigDecimal".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="String" />
                        <xs:enumeration value="Double" />
                        <xs:enumeration value="Float" />
                        <xs:enumeration value="Long" />
                        <xs:enumeration value="Integer" />
                        <xs:enumeration value="BigDecimal" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="calcop">
        <xs:annotation>
            <xs:documentation>
                A basic arithmetic operation.
                Supports these operations: get, add, subtract, multiply, divide, and negate.
                So add, subtract, multiply, and divide are just the basic arithmetic operations.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="calcop" />
                <xs:element ref="number" />
            </xs:choice>
            <xs:attribute name="operator" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The arithmetic operator. Defaults to "add".
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="get">
                            <xs:annotation>
                                <xs:documentation>
                                    Gets the positive value.
                                </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                        <xs:enumeration value="add" />
                        <xs:enumeration value="subtract" />
                        <xs:enumeration value="multiply" />
                        <xs:enumeration value="divide" />
                        <xs:enumeration value="negative">
                            <xs:annotation>
                                <xs:documentation>
                                    Negates the value.
                            </xs:documentation>
                            </xs:annotation>
                        </xs:enumeration>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="field" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to use.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="number">
        <xs:annotation>
            <xs:documentation>
                Declares a numeric constant to be used in the calculation.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="value" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        A numeric constant.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <!--
        ======================================================
        ========== The Simple Map Processor Section ==========
        ======================================================
    -->

    <xs:attributeGroup name="attlist.typeDefaultString">
        <xs:attribute name="type" default="String">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="PlainString"/>
                    <xs:enumeration value="String"/>
                    <xs:enumeration value="BigDecimal"/>
                    <xs:enumeration value="Double"/>
                    <xs:enumeration value="Float"/>
                    <xs:enumeration value="Long"/>
                    <xs:enumeration value="Integer"/>
                    <xs:enumeration value="Date"/>
                    <xs:enumeration value="Time"/>
                    <xs:enumeration value="Timestamp"/>
                    <xs:enumeration value="Boolean"/>
                    <xs:enumeration value="Object"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>

    <xs:element name="simple-map-processors">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="simple-map-processor"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="simple-map-processor">
        <xs:annotation>
            <xs:documentation>
                The Simple Map Processor Mini-Language performes two primary tasks: validation and conversion.
                It does this in a context of moving values from one Map to another.
                The input map will commonly contain Strings, but can contain other object types like
                Integer, Long, Float, Double, java.sql.Date, Time, and Timestamp.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="make-in-string"/>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="process"/>
            </xs:sequence>
            <xs:attributeGroup ref="attlist.simple-map-processor"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.simple-map-processor">
        <xs:attribute type="xs:string" name="name" use="required"/>
    </xs:attributeGroup>
    <!-- Make In String & Operations -->
    <xs:element name="make-in-string">
        <xs:annotation>
            <xs:documentation>
                In addition to dealing with the fields already in the incoming Map you can build Strings and add them to the in-Map before the processing begins with the make-in-string tag.
                You can have zero or many make-in-string tags, and they must all come before the process tags.
                Inside each make-in-string is a list of snippets to concatenate together to make the final String.
                Each snippet can be another field in the in-Map (in-field element), a value from a properties file (property element), or a constant (constant element).
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="in-field"/>
                <xs:element ref="property"/>
                <xs:element ref="constant"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.make-in-string"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.make-in-string">
        <xs:attribute type="xs:string" name="field" use="required"/>
    </xs:attributeGroup>
    <xs:element name="in-field">
        <xs:annotation>
            <xs:documentation>
                Name of one of the incoming fields, or one of the fields in the in-map to add to the string.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attributeGroup ref="attlist.in-field"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.in-field">
        <xs:attribute type="xs:string" name="field" use="required"/>
    </xs:attributeGroup>
    <xs:element name="property">
        <xs:annotation>
            <xs:documentation>
                Load the value of a property from a resourcebundle properties file, with the given resource
                on the classpath, and the name of the property in that file.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attributeGroup ref="attlist.property"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.property">
        <xs:attribute type="xs:string" name="resource" use="required">
            <xs:annotation>
                <xs:documentation>
                    Name of a properties file on the classpath.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute type="xs:string" name="property" use="required">
            <xs:annotation>
                <xs:documentation>
                    Name of the property in the resource attribute file.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:element name="constant" type="xs:string">
        <xs:annotation>
            <xs:documentation>
                Any simple literal value.
            </xs:documentation>
        </xs:annotation>
    </xs:element>
    <!-- Field Process & Operations -->
    <xs:element name="process">
        <xs:annotation>
            <xs:documentation>
                The process tag is used to contain the operations to be done on the specified field in the in-Map.
                It has one required attribute, the field to operate on.
                The operations that it contains are: validate-method, compare, compare-field, regexp, not-empty, copy, and convert.

                All process operations tags except copy must contain one of two tags: fail-message or fail-property.
                If the operation fails a message is added to the message list that is either the specified fail-message, or the String from the properties file value that is specified in fail-property.

                Messages are collected in List as the Simple Map Processor runs.
                If the List is not empty when it completes then something failed in the map processor.
                This is done so that all failures will be reported immediately rather than having to fix one failure before another can be discovered.

                All process operations automatically convert the field value and other values from their current type to the type specified for the operation, where applicable.
                The ObjectType.simpleTypeConvert method is used to do the conversion.
                It supports the following types: String, Double, Float, Long, Integer, Date, Time, and Timestamp.
                If the type is not specified String is the default.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="validate-method"/>
                <xs:element ref="compare"/>
                <xs:element ref="compare-field"/>
                <xs:element ref="regexp"/>
                <xs:element ref="not-empty"/>
                <xs:element ref="copy"/>
                <xs:element ref="convert"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.process"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.process">
        <xs:attribute type="xs:string" name="field" use="required"/>
    </xs:attributeGroup>
    <xs:element name="validate-method">
        <xs:annotation>
            <xs:documentation>
                The validate-method tag is used to call any static method that accepts a String and returns a boolean.
                If the field coming in is not a String it will be converted to a String before calling the method.
                The two attributes for this tag are class and method which should contain the fully qualified class name and the method name, respectively.
                If the class name is not specified it will default to org.ofbiz.base.util.UtilValidate.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element ref="fail-message"/>
                <xs:element ref="fail-property"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.validate-method"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.validate-method">
        <xs:attribute type="xs:string" name="method" use="required"/>
        <xs:attribute type="xs:string" name="class" default="org.ofbiz.base.util.UtilValidate"/>
    </xs:attributeGroup>
    <xs:element name="compare">
        <xs:annotation>
            <xs:documentation>
                The compare tag is used to compare the field value to the value specified in the value attribute.
                An operator must be specified to indicate the comparison desired.
                Operators available include less, greater, less-equals, greater-equals, equals, not-equals, and contains.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element ref="fail-message"/>
                <xs:element ref="fail-property"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.compare"/>
            <xs:attributeGroup ref="attlist.operatorRequired"/>
            <xs:attributeGroup ref="attlist.typeDefaultString"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.compare">
        <xs:attribute type="xs:string" name="value" use="required">
            <xs:annotation>
                <xs:documentation>
                    Literal or flexible string using ${} syntax.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute type="xs:string" name="format">
            <xs:annotation>
                <xs:documentation>
                    Format based on the type of the object (date,number, etc.).
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:element name="compare-field">
        <xs:annotation>
            <xs:documentation>
                The compare-field tag is just like the compare tag except that instead of specifying a value you specify the name of another field in the in-Map to compare the current field to.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element ref="fail-message"/>
                <xs:element ref="fail-property"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.compare-field"/>
            <xs:attributeGroup ref="attlist.operatorRequired"/>
            <xs:attributeGroup ref="attlist.typeDefaultString"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.compare-field">
        <xs:attribute type="xs:string" name="field" use="required"/>
        <xs:attribute type="xs:string" name="format">
            <xs:annotation>
                <xs:documentation>
                    Format based on the type of the object (date,number, etc.).
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:element name="regexp">
        <xs:annotation>
            <xs:documentation>
                The regexp tag validate the current field against the regular expression specified in the expr attribute of the tag.
                Standard Perl style regular expressions are used with the ORO library from Jakarta.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element ref="fail-message"/>
                <xs:element ref="fail-property"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.regexp"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.regexp">
        <xs:attribute type="xs:string" name="expr" use="required"/>
    </xs:attributeGroup>
    <xs:element name="not-empty">
        <xs:annotation>
            <xs:documentation>
                The not-empty tag verifies that the current field is not empty.
                If the field is a String it must not be null and must have a length greater than zero,
                otherwise it must simply not be null and you will get the fail-message or fail-property.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element ref="fail-message"/>
                <xs:element ref="fail-property"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
    <xs:element name="copy">
        <xs:annotation>
            <xs:documentation>
                The copy operation simply copies the current field value to the out-Map from the in-Map.
                There are three optional attributes.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attributeGroup ref="attlist.copy"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.copy">
        <xs:attribute type="xs:string" name="to-field">
            <xs:annotation>
                <xs:documentation>
                    If a different field name is desired in the out-Map it can be specified in the to-field attribute.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="replace" default="true">
            <xs:annotation>
                <xs:documentation>
                    Specify if an existing field in the out-Map should be replaced or not, defaults to true.
                    If you set it to false then it will look in the out-map,
                    and if it finds a value of the same name already there it will not copy over top of that value.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="set-if-null" default="true">
            <xs:annotation>
                <xs:documentation>
                    Specifies whether or not to set fields that are null or empty.
                    Defaults to true.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:element name="convert">
        <xs:annotation>
            <xs:documentation>
                The convert tag does the same thing as copy except that the type can be converted to the type specified in the type attribute.
                The format attribute can be used to specify the format for date/time fields.
                These two tags are in addition to all of the the attributes in the copy tag.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element ref="fail-message"/>
                <xs:element ref="fail-property"/>
            </xs:choice>
            <xs:attributeGroup ref="attlist.convert"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="attlist.convert">
        <xs:attribute type="xs:string" name="to-field">
            <xs:annotation>
                <xs:documentation>
                    If no to-field is specified, it is the same as the field on process.
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="type" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="PlainString"/>
                    <xs:enumeration value="String"/>
                    <xs:enumeration value="BigDecimal"/>
                    <xs:enumeration value="Double"/>
                    <xs:enumeration value="Float"/>
                    <xs:enumeration value="Long"/>
                    <xs:enumeration value="Integer"/>
                    <xs:enumeration value="Date"/>
                    <xs:enumeration value="Time"/>
                    <xs:enumeration value="Timestamp"/>
                    <xs:enumeration value="Boolean"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="replace" default="true">
            <xs:annotation>
                <xs:documentation>
                    Specify if an existing field in the out-Map should be replaced or not, defaults to true.
                    If you set it to false then it will look in the out-map,
                    and if it finds a value of the same name already there it will not copy over top of that value.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="set-if-null" default="true">
            <xs:annotation>
                <xs:documentation>
                    Specifies whether or not to set fields that are null or empty.
                    Defaults to true.
                </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="true"/>
                    <xs:enumeration value="false"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute type="xs:string" name="format">
            <xs:annotation>
                <xs:documentation>
                    Format based on the type of the object (date,number, etc.).
                </xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>
</xs:schema>
