<?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="booleanConst">
        <xs:restriction base="xs:token">
            <xs:enumeration value="true" />
            <xs:enumeration value="false" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="booleanExpr">
        <xs:restriction base="xs:string">
            <xs:pattern value="\$\{.+\}|true|false" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="javaClassName">
        <xs: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="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Require a user login to run this method. Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="use-transaction" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Create a transaction if none exists for this thread. Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="default-error-code" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The default error return code. Defaults to "error".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="default-success-code" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The default success return code. Defaults to "success".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-request-object-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the javax.servlet.ServletRequest object. Defaults to "request".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-response-object-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the javax.servlet.ServletResponse object. Defaults to "response".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-session-object-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the javax.servlet.http.HttpSession object. Defaults to "session".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-response-code-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event response code. Defaults to "_response_code_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-error-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event error message. Defaults to "_error_message_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-error-message-list-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event error message list. Defaults to "_error_message_list_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-event-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event message. Defaults to "_event_message_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="event-event-message-list-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the event message list. Defaults to "_event_message_list_".
                        
                        Used when the simple method is invoked as an event, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-response-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service response message. Defaults to "responseMessage".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-error-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service error message. Defaults to "errorMessage".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-error-message-list-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service error message list. Defaults to "errorMessageList".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-error-message-map-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service error message map. Defaults to "errorMessageMap".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-success-message-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service success message. Defaults to "successMessage".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="service-success-message-list-name" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the service success message list. Defaults to "successMessageList".
                        
                        Used when the simple method is invoked as a service, it is ignored otherwise.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

<!--
    =================================
    ===== Assignment Operations =====
    =================================
-->

    <xs:element name="add-error" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Adds an error message to an error message list.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element ref="fail-message" />
                <xs:element ref="fail-property" />
            </xs:choice>
            <xs:attribute 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="booleanConst" name="no-locale">
                <xs:annotation>
                    <xs:documentation>
                        Suppress property value localization. The user's/system locale will be ignored
                        when retriving the property value.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="arg-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of an argument list to be used with a formatting string.
                        The argument list is applied to the property value.
                        The attribute does nothing if the argument list is not found.
                        See the java.text.MessageFormat class for more information.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="arg-list-name">
                <xs:annotation>
                    <xs:documentation>
                        Deprecated - use the arg-list attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="request-parameters-to-list" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Appends a servlet request parameter list to a list.
                Valid only when the simple-method is called as an event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="request-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The servlet request parameter name. All matching parameter values will be added to the list.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the list. If the list does not exist, one will be created.
                        Defaults to the request-name attribute value.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list-name">
                <xs:annotation>
                    <xs:documentation>
                        Deprecated - use the list attribute.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="request-to-field" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a servlet request attribute to a field.
                Valid only when the simple-method is called as an event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute 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="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Controls if the target field can be set to null when the from attribute evaluates to null.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="set-if-empty" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Controls if the target field can be set to an empty value. The meaning of "empty" depends on the Java data type.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="set-calendar" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Adjusts a Timestamp by a specified time duration.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute 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="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Controls if the target field can be set to null when the from attribute evaluates to null.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="years">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of year(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="months">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of month(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="days">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of days(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="hours">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of hour(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="minutes">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of minute(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="seconds">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of second(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="millis">
                <xs:annotation>
                    <xs:documentation>
                        Add (optionally using +) or subtract (using -) a number of millisecond(s).
                        If an expression is used, it should evaluate to an integer.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="period-align-start">
                <xs:annotation>
                    <xs:documentation>
                        Align the adjusted date to the start of a period.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="year" />
                        <xs:enumeration value="month" />
                        <xs:enumeration value="week" />
                        <xs:enumeration value="day" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="period-align-end">
                <xs:annotation>
                    <xs:documentation>
                        Align the adjusted date to the end of a period.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="year" />
                        <xs:enumeration value="month" />
                        <xs:enumeration value="week" />
                        <xs:enumeration value="day" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute type="xs:string" name="locale">
                <xs:annotation>
                    <xs:documentation>
                        A locale value (eg: en). The locale selects the calendar to be used for the adjustment.
                        Defaults to the environment locale.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="time-zone">
                <xs:annotation>
                    <xs:documentation>
                        A time zone value (eg: GMT).
                        Defaults to the environment time zone.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="set-current-user-login" substitutionGroup="OtherOperations">
        <xs:annotation>
            <xs:documentation>
                Sets the UserLogin entity value to be used for authentication for the rest of the method.
                This is mostly used for calling services, etc.
                
                This element is deprecated. You can pass an alternate UserLogin
                entity value to the called service's IN attributes.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the UserLogin entity value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="set-service-fields" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Copies elements from a source map that match a service's IN or OUT attributes to a target map.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="service-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the service.

                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The map to copy the matching attributes from.

                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="to-map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The map to copy the matching attributes to.
                        If the map does not exist, a new one will be created.

                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="mode">
                <xs:annotation>
                    <xs:documentation>
                        The service attributes mode - IN or OUT. Defaults to "IN".

                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="IN" />
                        <xs:enumeration value="OUT" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="string">
        <xs:annotation>
            <xs:documentation>
                Declares a java.lang.String to be passed as an argument to a method call.
                The String can be contained in the value attribute and/or in the element body.
                The element body text is appended to the value attribute text. 
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value">
                <xs:annotation>
                    <xs:documentation>
                        The String text.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="string-append" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Performs string concatenation and formatting. The operation starts by applying
                an argument list (if found) to the string attribute value, the result is
                prepended by the prefix attribute value, and the suffix attribute value is
                appended to the result. If the string specified in the field attribute exists,
                the final result is appended to it, else the field is set to the final result.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The target of the string concatention.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The string to append to the field named in the field attribute.
                        This can be a formatting string that is used with the argument list
                        specified in the arg-list attribute.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="arg-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of an argument list to be used with a formatting string.
                        The argument list is applied to the string attribute value.
                        The attribute does nothing if the argument list is not found.
                        See the java.text.MessageFormat class for more information.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="prefix">
                <xs:annotation>
                    <xs:documentation>
                        A string that will be prepended to the string attribute value.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="suffix">
                <xs:annotation>
                    <xs:documentation>
                        A string that will be appended to the string attribute value.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="string-to-list" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Adds a string to a list of strings. Deprecated - use the set element.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The string to add to the list specified in the list attribute.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        List to add the string to. If the list does not exist, one will be created.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="arg-list">
                <xs:annotation>
                    <xs:documentation>
                        The name of an argument list to be used with a formatting string.
                        The argument list is applied to the string attribute value.
                        The attribute does nothing if the argument list is not found.
                        See the java.text.MessageFormat class for more information.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="message-field">
                <xs:annotation>
                    <xs:documentation>
                        Inserts a message above a field (used in conjunction with @fieldErrors FTL macro).
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="to-string" substitutionGroup="EnvOperations">
        <xs:annotation>
            <xs:documentation>
                Converts an object to a string. Deprecated - use the set element.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field containing the object to convert.
                        The operation does nothing if the object is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="format">
                <xs:annotation>
                    <xs:documentation>
                        The format to use for the conversion.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="numeric-padding">
                <xs:annotation>
                    <xs:documentation>
                        Left-pad the string with the specified number of zeroes.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="webapp-property-to-field" substitutionGroup="EventOperations">
        <xs:annotation>
            <xs:documentation>
                Copies a property value from a properties file in a ServletContext resource to a field.
                Valid only when the simple-method is called as an event, it is ignored otherwise.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute 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="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Include the current UserLogin entity value in the called service's IN parameters.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="break-on-error" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Halt script execution if the called service returns an error.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="error-code" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The error code returned by the called service.
                        Defaults to the enclosing simple-method default-error-code attribute value.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="success-code" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The success code returned by the called service.
                        Defaults to the enclosing simple-method default-success-code attribute value.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="require-new-transaction" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Require a new transaction for the called service.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="transaction-timeout" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The timeout for the new transaction, in seconds.
                        Defaults to the value set in the called service definition.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-service-asynch" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Calls a service asynchronously. No return messages
                are used; that doesn't mean no errors will result, but they would just be
                system errors like database failures, etc. which all have system error messages.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="service-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the service to invoke.
                        
                        Required. Attribute type: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="in-map-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of a field containing a map that will be used for the service's IN parameters.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="include-user-login" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Include the current UserLogin entity value in the called service's IN parameters.
                        Defaults to "true".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-simple-method" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Calls another simple-method in the same context as the current one.
                The called simple-method will have the same environment as the calling simple-method,
                including all environment fields, and either the event or service objects
                that the calling simple-method was called with.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="result-to-field" minOccurs="0" maxOccurs="unbounded">
                    <xs:annotation>
                        <xs:documentation>
                            Used when scope="function". Copies the called method fields
                            to the calling method fields.
                        </xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="method-name" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the simple-method to execute in the specified xml-resource,
                        or in the current XML file if no xml-resource is specified.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="xml-resource" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        The full path and filename on the classpath of the XML file which contains an external simple-method to execute.
                        This is only required if a simple-method in a different file is desired.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="scope">
                <xs:annotation>
                    <xs:documentation>
                        The memory scope to use. In an "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="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Ignore the condition if the r-value is null.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="ignore-if-empty" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Ignore the condition if the r-value is empty.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="ignore-case" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Perform a case-insensitive comparison.
                        Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="ignore" type="booleanExpr">
                <xs:annotation>
                    <xs:documentation>
                        Ignore the condition if the r-value evaluates to "true".
                        Defaults to "false".
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="condition-list">
        <xs:annotation>
            <xs:documentation>
                Uses an SQL operator to combine entity find conditions into a single expression.
                You can have condition-list elements under condition-list, for building fairly complex condition trees,
                and you can also use condition-object elements at any point.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element ref="condition-expr" />
                <xs:element ref="condition-list" />
                <xs:element ref="condition-object" />
            </xs:choice>
            <xs:attribute name="combine">
                <xs:annotation>
                    <xs:documentation>
                        The SQL operator.
                        Defaults to "and".
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="and" />
                        <xs:enumeration value="or" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="condition-object">
        <xs:annotation>
            <xs:documentation>
                Declares an environment field (variable) that contains an entity find condition expression object.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="field" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains an entity find condition expression object.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="create-value" substitutionGroup="EntityValueOperations">
        <xs:annotation>
            <xs:documentation>
                Creates a new entity value in the data source.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="value-field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the entity value to be created.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="do-cache-clear" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Clear the cache. Defaults to "true".
                        Deprecated - should always be true
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="or-store" type="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Store the entity value if it already exists. Defaults to "false".
                        If set to "false", an error will result if an instance of the entity value exists
                        in the data source with the same primary key.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="entity-and" substitutionGroup="EntityFindOperations">
        <xs:annotation>
            <xs:documentation>
                Finds a group of entity values by using a set of entity field name/value pairs that are ANDed together.
                The name/value pairs used for the search are defined in child elements.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs: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="booleanConst">
                <xs:annotation>
                    <xs:documentation>
                        Preserve the sequence type - a numeric long. If set to "false" the sequence
                        value will be converted to a string. Defaults to "false".
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute 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.simpleTypeConvert method is used to do the conversion.
                It supports the following types: String, Double, Float, Long, Integer, Date, Time, and Timestamp.
                If the type is not specified String is the default.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs: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>
