<?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" xmlns="http://ofbiz.apache.org/Simple-Method" targetNamespace="http://ofbiz.apache.org/Simple-Method">
<!--
    ==================================================
    ========== 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="booleanExpr">
        <xs:restriction base="xs:string">
            <xs:pattern value="\$\{.+\}|true|false" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="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: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:simpleType name="fieldType">
        <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:restriction base="xs:token">
            <xs:minLength value="1" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="error-list-name">
        <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:restriction base="xs:string">
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType 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:complexType>

    <xs:complexType 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:complexType>

    <xs:complexType 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:complexType>

    <xs:simpleType name="delegator-name">
        <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:restriction base="xs:string"/>
    </xs:simpleType>

<!--
    =============================
    ===== 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="xs:boolean">
                <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="xs:boolean">
                <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 name="error-list-name" type="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 name="error-list-name" type="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 name="error-list-name" type="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:complexContent>
                <xs:extension base="attlist.check-permission">
                    <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:complexContent>
                                    <xs:extension base="attlist.check-permission">
                                    </xs:extension>
                                </xs:complexContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:choice>
                            <xs:element ref="fail-message" />
                            <xs:element ref="fail-property" />
                        </xs:choice>
                    </xs:sequence>
                    <xs:attribute name="error-list-name" type="error-list-name"/>
                </xs:extension>
            </xs:complexContent>
        </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 name="field" type="fieldType" 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 name="field" type="fieldType" 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 name="type" type="javaClassName">
                <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 name="field" type="fieldType" 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 name="field" type="fieldType" 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 name="field" type="fieldType" 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 name="field" type="fieldType" 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="xs:boolean" 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 name="field" type="fieldType" 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 name="field" type="fieldType" 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 name="field" type="fieldType" 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="xs:boolean">
                <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="xs:boolean">
                <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 name="field" type="fieldType" 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="xs:boolean">
                <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 name="field" type="fieldType" 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 name="error-list-name" type="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:complexContent>
                <xs:extension base="attlist.operatorOptionalRvalue">
                    <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: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 name="type" type="javaClassName">
                        <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:extension>
            </xs:complexContent>
        </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:complexContent>
                <xs:extension base="attlist.operatorRequired">
                    <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: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 name="type" type="javaClassName"/>
                    <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:extension>
            </xs:complexContent>
        </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.apache.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:complexContent>
                <xs:extension base="attlist.check-permission">
                    <xs:sequence>
                        <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                        <xs:element minOccurs="0" ref="else" />
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </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.apache.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.apache.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:simpleType name="result-name">
        <xs:annotation>
            <xs:documentation>
                The name of the called service's OUT attribute.
                
                Required. Attribute type: expression.
            </xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string"/>
    </xs:simpleType>

    <xs:complexType 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:complexType>

    <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 name="error-list-name" type="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:complexContent>
                            <xs:extension base="attlist.propertyInfoOptional">
                            </xs:extension>
                        </xs:complexContent>
                    </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:complexContent>
                            <xs:extension base="attlist.propertyInfoOptional">
                            </xs:extension>
                        </xs:complexContent>
                    </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:complexContent>
                            <xs:extension base="attlist.propertyInfoOptional">
                            </xs:extension>
                        </xs:complexContent>
                    </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:complexContent>
                            <xs:extension base="attlist.propertyInfoOptional">
                            </xs:extension>
                        </xs:complexContent>
                    </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:complexContent>
                            <xs:extension base="attlist.propertyInfoOptional">
                            </xs:extension>
                        </xs:complexContent>
                    </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:complexContent>
                            <xs:extension base="attlist.propertyInfoOptional">
                            </xs:extension>
                        </xs:complexContent>
                    </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:complexContent>
                            <xs:extension base="attlist.propertyInfoOptional">
                            </xs:extension>
                        </xs:complexContent>
                    </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="xs:boolean">
                <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="xs:boolean">
                <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="xs:boolean">
                <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="xs:boolean">
                <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 "inline" 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 "function" 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 name="result-name" type="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 name="result-name" type="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 name="result-name" type="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 name="result-name" type="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:simpleType 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:restriction base="xs:string"></xs:restriction>
    </xs:simpleType>

    <xs:complexType 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 name="delegator-name" type="delegator-name"/>
    </xs:complexType>

    <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 name="delegator-name" type="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 name="delegator-name" type="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="xs:boolean">
                <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="xs:boolean">
                <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="xs:boolean">
                <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="xs:boolean">
                <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="xs:boolean">
                <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:complexContent>
                <xs:extension base="attlist.entityFindOperations">
                    <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:extension>
            </xs:complexContent>
        </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:complexContent>
                <xs:extension base="attlist.entityFindOperations">
                    <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:extension>
            </xs:complexContent>
        </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 name="delegator-name" type="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 name="error-list-name" type="error-list-name"/>
            <xs:attribute name="delegator-name" type="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 name="delegator-name" type="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 name="delegator-name" type="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 name="delegator-name" type="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 name="delegator-name" type="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 name="delegator-name" type="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 name="delegator-name" type="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 name="field" type="fieldType" 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="xs:boolean">
                <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 name="delegator-name" type="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 name="delegator-name" type="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 name="began-transaction-name" type="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 name="began-transaction-name" type="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 name="began-transaction-name" type="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:simpleType name="levelType">
        <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: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:element name="log" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Outputs a log a message.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="level" type="levelType" 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 name="level" type="levelType" 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 name="field" type="fieldType" />
            <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:complexContent>
                <xs:extension base="attlist.simple-map-processor">
                    <xs:sequence>
                        <xs:element minOccurs="0" maxOccurs="unbounded" ref="make-in-string"/>
                        <xs:element minOccurs="0" maxOccurs="unbounded" ref="process"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="attlist.simple-map-processor">
        <xs:attribute type="xs:string" name="name" use="required"/>
    </xs:complexType>
    <!-- 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:complexContent>
                <xs:extension base="attlist.make-in-string">
                    <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element ref="in-field"/>
                        <xs:element ref="property"/>
                        <xs:element ref="constant"/>
                    </xs:choice>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="attlist.make-in-string">
        <xs:attribute type="xs:string" name="field" use="required"/>
    </xs:complexType>
    <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:complexContent>
                <xs:extension base="attlist.in-field">
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="attlist.in-field">
        <xs:attribute type="xs:string" name="field" use="required"/>
    </xs:complexType>
    <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:complexContent>
                <xs:extension base="attlist.property">
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType 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:complexType>
    <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.simpleTypeOrObjectConvert 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:complexContent>
                <xs:extension base="attlist.process">
                    <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:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="attlist.process">
        <xs:attribute type="xs:string" name="field" use="required"/>
    </xs:complexType>
    <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.apache.ofbiz.base.util.UtilValidate.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:complexContent>
                <xs:extension base="attlist.validate-method">
                <xs:choice>
                    <xs:element ref="fail-message"/>
                    <xs:element ref="fail-property"/>
                </xs:choice>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="attlist.validate-method">
        <xs:attribute type="xs:string" name="method" use="required"/>
        <xs:attribute type="xs:string" name="class" default="org.apache.ofbiz.base.util.UtilValidate"/>
    </xs:complexType>
    <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:complexContent>
                <xs:extension base="attlist.operatorRequired">
                    <xs:choice>
                        <xs:element ref="fail-message"/>
                        <xs:element ref="fail-property"/>
                    </xs:choice>
                    <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 ref="attlist.typeDefaultString"/>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <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:complexContent>
                <xs:extension base="attlist.operatorRequired">
                    <xs:choice>
                        <xs:element ref="fail-message"/>
                        <xs:element ref="fail-property"/>
                    </xs:choice>
                    <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 ref="attlist.typeDefaultString"/>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <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:complexContent>
                <xs:extension base="attlist.regexp">
                <xs:choice>
                    <xs:element ref="fail-message"/>
                    <xs:element ref="fail-property"/>
                </xs:choice>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="attlist.regexp">
        <xs:attribute type="xs:string" name="expr" use="required"/>
    </xs:complexType>
    <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:complexContent>
                <xs:extension base="attlist.copy">
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType 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:complexType>
    <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:complexContent>
                <xs:extension base="attlist.convert">
                    <xs:choice>
                        <xs:element ref="fail-message"/>
                        <xs:element ref="fail-property"/>
                    </xs:choice>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:element>
    <xs:complexType 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:complexType>
</xs:schema>
