<?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.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.ofbiz.base.lang.IsEmpty.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <!-- FIXME: We need two versions of this element. -->
    <xs:element name="if-regexp" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Tests if a field matches a regular expression.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to test.
                        The field object will be converted to a string before the test.
                        An empty string will be used if the field object is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="expr" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The regular expression to test for.
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <!-- FIXME: We need two versions of this element. -->
    <xs:element name="if-validate-method" substitutionGroup="IfBasicOperations">
        <xs:annotation>
            <xs:documentation>
                Invokes a Java class static method that returns a boolean value.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
                <xs:element minOccurs="0" ref="else" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="field" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to use as the method argument.
                        The field object will be converted to a string before the method call.
                        An empty string will be used if the field object is not found.
                        
                        Required. Attribute type: expression
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="method" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the method that will be called to validate the field.
                        It must be a static method that takes a single String parameter and return a boolean.
                        
                        Required. Attribute type: constant
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="class">
                <xs:annotation>
                    <xs:documentation>
                        The name of the class that contains the validation method. Defaults to "org.ofbiz.base.util.UtilValidate".
                        
                        Optional. Attribute type: constant
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="iterate" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code that is executed once for each entry in a collection.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
            <xs:attribute type="xs:string" name="list" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the collection to iterate over.
                        The operation does nothing if the field is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="entry" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the current collection entry.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="iterate-map" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code that is executed once for each entry in a map.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
            <xs:attribute type="xs:string" name="map" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the map to iterate over.
                        The operation does nothing if the field is not found.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="key" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the current map entry key.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="value" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the current map entry value.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="loop" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code that is executed repeatedly until a maximum count is reached.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
            <xs:attribute type="xs:string" name="count" use="required">
                <xs:annotation>
                    <xs:documentation>
                        A maximum count expression. Defaults to "0" (zero).
                        
                        Required. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="field">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will contain the current count.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="not" substitutionGroup="IfCombineConditions">
        <xs:annotation>
            <xs:documentation>
                Inverts a conditional element using a boolean NOT.
                Evaluates to true if the sub-element evaluates to false.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group ref="IfConditions"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="or" substitutionGroup="IfCombineConditions">
        <xs:annotation>
            <xs:documentation>
                Combines conditional elements using a boolean OR.
                Evaluates to true if any sub-element evaluates to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group maxOccurs="unbounded" ref="IfConditions"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="return" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Returns control (execution) to the calling process.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute type="xs:string" name="response-code">
                <xs:annotation>
                    <xs:documentation>
                        A response code to return to the calling process. Defaults to the
                        value of the containing simple-method element "default-success-code" attribute.
                        
                        Optional. Attribute types: constant, ${expression}.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="then">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code to be executed when a condition element evaluates to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="while" substitutionGroup="ControlOperations">
        <xs:annotation>
            <xs:documentation>
                Contains a block of code that is executed repeatedly while a condition element evaluates to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="condition" />
                <xs:element ref="then" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="xor" substitutionGroup="IfCombineConditions">
        <xs:annotation>
            <xs:documentation>
                Combines conditional elements using a boolean XOR.
                Evaluates to true if only one sub-element evaluates to true.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:group maxOccurs="unbounded" ref="IfConditions"/>
        </xs:complexType>
    </xs:element>

<!--
    ===========================
    ===== Call Operations =====
    ===========================
-->

    <xs: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-bsh" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Executes a BSH script. Deprecated - replace with script.
                
                The script can be contained in a Java resource, and/or a short
                script can be included in the element body.
                If a Java resource is specified, and the element body contains a script,
                the element body script will be executed after the Java resource script is executed.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType mixed="true">
            <xs:attribute type="xs:string" name="resource">
                <xs:annotation>
                    <xs:documentation>
                        A Java resource that contains the script.
                        
                        Required if the element body is empty. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-class-method" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Calls a static method on a Java class. Deprecated - replace with script.
                
                The string and field sub-elements are passed to the method as arguments in the order they are specified.
                If the method returns a value, the value will be put in the named field.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="string"/>
                <xs:element ref="field"/>
            </xs:choice>
            <xs:attribute type="xs:string" name="class-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the class containing the static method.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="method-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the static method to call.
                        
                        Required. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="ret-field">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field to put the method return value in.
                        
                        Optional. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>

    <xs:element name="call-map-processor" substitutionGroup="CallOperations">
        <xs:annotation>
            <xs:documentation>
                Invokes a simple map processor.
                
                An inline map processor can be used by including a simple-map-processor element in the call-map-processor element.
                If both an external and an inline map processor are specified, the external
                one will be called first, allowing the inline one to override its behavior.
                
                Map processor messages are added to an error message list.
            </xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" ref="simple-map-processor" />
            </xs:sequence>
            <xs:attribute type="xs:string" name="in-map-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that contains the map to be processed.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="out-map-name" use="required">
                <xs:annotation>
                    <xs:documentation>
                        The name of the field that will receive the processed map.
                        If the map does not exist, one will be created.
                        If the map already exists it will be added to in place.
                        
                        Required. Attribute type: expression.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="xml-resource">
                <xs:annotation>
                    <xs:documentation>
                        The full path and filename on the classpath of the XML file which contains an external map processor to execute.
                        This is only required if an external map processor is desired.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute type="xs:string" name="processor-name">
                <xs:annotation>
                    <xs:documentation>
                        The name of the external map processor to execute in the specified xml-resource.
                        This is only required if an external map processor is desired.
                        
                        Optional. Attribute type: constant.
                    </xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute 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.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.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>
