You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2016/06/23 16:40:24 UTC

svn commit: r1749938 [4/5] - in /ofbiz/trunk: applications/accounting/minilang/ applications/accounting/minilang/admin/ applications/accounting/minilang/agreement/ applications/accounting/minilang/budget/ applications/accounting/minilang/finaccount/ ap...

Added: ofbiz/trunk/framework/minilang/dtd/simple-methods-ns.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/minilang/dtd/simple-methods-ns.xsd?rev=1749938&view=auto
==============================================================================
--- ofbiz/trunk/framework/minilang/dtd/simple-methods-ns.xsd (added)
+++ ofbiz/trunk/framework/minilang/dtd/simple-methods-ns.xsd Thu Jun 23 16:40:22 2016
@@ -0,0 +1,5171 @@
+<?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:restriction base="xs:token">
+            <xs:pattern value="[a-zA-Z_]{1}[a-zA-Z0-9_$.]+" />
+        </xs:restriction>
+    </xs:simpleType>
+
+    <!-- Reusable attributes and attribute groups -->
+
+    <xs:attribute name="field">
+        <xs:annotation>
+            <xs:documentation>
+                The name of the field to set. The target of the assignment.
+                
+                Required. Attribute type: expression.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:simpleType>
+            <xs:restriction base="xs:token">
+                <xs:minLength value="1" />
+            </xs:restriction>
+        </xs:simpleType>
+    </xs:attribute>
+
+    <xs:attribute name="error-list-name" type="xs:string">
+        <xs:annotation>
+            <xs:documentation>
+                The name of the error message list. It will be created if it does not exist.
+                Defaults to "error_list".
+                
+                Optional. Attribute types: constant, ${expression}.
+            </xs:documentation>
+        </xs:annotation>
+    </xs:attribute>
+
+    <xs:attribute name="type" type="javaClassName">
+        <xs:annotation>
+            <xs:documentation>
+                The Java data type.
+                
+                Optional. Attribute type: constant. Attribute must contain a valid Java class name.
+            </xs:documentation>
+        </xs:annotation>
+    </xs:attribute>
+
+    <xs:attributeGroup name="attlist.operatorRequired">
+        <xs:attribute name="operator" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The comparison operator. The operator describes the l-value compared to the r-value.
+                    
+                    The "contains" operator returns true if the l-value contains the r-value.
+                    This operator does not perform type conversions.
+                    The l-value must be a collection type or a String. A null l-value evaluates to false.
+                    
+                    Required. Attribute type: constant.
+                </xs:documentation>
+            </xs:annotation>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="equals"/>
+                    <xs:enumeration value="not-equals"/>
+                    <xs:enumeration value="less"/>
+                    <xs:enumeration value="less-equals"/>
+                    <xs:enumeration value="greater"/>
+                    <xs:enumeration value="greater-equals"/>
+                    <xs:enumeration value="contains"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+
+    <xs:attributeGroup name="attlist.operatorOptionalRvalue">
+        <xs:attribute name="operator" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The comparison operator. The operator describes the l-value compared to the r-value.
+                    
+                    The "contains" operator returns true if the l-value contains the r-value.
+                    This operator does not perform type conversions.
+                    The l-value must be a collection type or a String. A null l-value evaluates to false.
+                    
+                    The "is-null", "is-not-null", and "is-empty" operators
+                    do not require an r-value. Any r-values will be ignored.
+                    
+                    Required. Attribute type: constant.
+                </xs:documentation>
+            </xs:annotation>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="equals"/>
+                    <xs:enumeration value="not-equals"/>
+                    <xs:enumeration value="less"/>
+                    <xs:enumeration value="less-equals"/>
+                    <xs:enumeration value="greater"/>
+                    <xs:enumeration value="greater-equals"/>
+                    <xs:enumeration value="contains"/>
+                    <xs:enumeration value="is-null"/>
+                    <xs:enumeration value="is-not-null"/>
+                    <xs:enumeration value="is-empty"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+
+    <xs:attributeGroup name="attlist.check-permission">
+        <xs:attribute name="permission" type="xs:string" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the permission.
+                    The user must belong to a security group that includes this permission.
+                    
+                    Required. Attribute types: constant, ${expression}.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="action" type="xs:string">
+            <xs:annotation>
+                <xs:documentation>
+                    If an action is specified the user can have one of two permissions: the permission + "_ADMIN" or permission + action.
+                    Examples of actions include "_CREATE", "_VIEW", etc.
+                    
+                    Optional. Attribute types: constant, ${expression}.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:attributeGroup>
+
+    <xs:attribute name="delegator-name" type="xs:string">
+        <xs:annotation>
+            <xs:documentation>
+                An alternate delegator name. When specified, the entity operation will use the
+                alternate delegator instead of the current delegator.
+                
+                Optional. Attribute types: constant, ${expression}.
+            </xs:documentation>
+        </xs:annotation>
+    </xs:attribute>
+
+<!--
+    =============================
+    ===== The Root Elements =====
+    =============================
+-->
+
+    <xs:element name="simple-methods">
+        <xs:annotation>
+            <xs:documentation>
+                The document-level element of Mini-language files.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="simple-method" minOccurs="0" maxOccurs="unbounded"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="simple-method">
+        <xs:annotation>
+            <xs:documentation>
+                Contains a block of Mini-language code.
+                
+                A simple method can be called in either an event context from the Control
+                Servlet (or another event) or in a service context through the Service
+                Engine, or any other component that has access to a service
+                dispatcher.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:group ref="AllOperations" minOccurs="0" maxOccurs="unbounded" />
+            <xs:attribute name="method-name" type="javaClassName" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        A name (preferably a legal Java identifier) for this method.
+                        This name must be unique for the XML file it is in as it will be used to reference this method externally.
+                        
+                        Required. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="short-description" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        A short description of the method - used for documentation.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="login-required" type="booleanConst">
+                <xs:annotation>
+                    <xs:documentation>
+                        Require a user login to run this method. Defaults to "true".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="use-transaction" type="booleanConst">
+                <xs:annotation>
+                    <xs:documentation>
+                        Create a transaction if none exists for this thread. Defaults to "true".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="default-error-code" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The default error return code. Defaults to "error".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="default-success-code" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The default success return code. Defaults to "success".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="event-request-object-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the javax.servlet.ServletRequest object. Defaults to "request".
+                        
+                        Used when the simple method is invoked as an event, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="event-response-object-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the javax.servlet.ServletResponse object. Defaults to "response".
+                        
+                        Used when the simple method is invoked as an event, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="event-session-object-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the javax.servlet.http.HttpSession object. Defaults to "session".
+                        
+                        Used when the simple method is invoked as an event, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="event-response-code-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the event response code. Defaults to "_response_code_".
+                        
+                        Used when the simple method is invoked as an event, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="event-error-message-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the event error message. Defaults to "_error_message_".
+                        
+                        Used when the simple method is invoked as an event, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="event-error-message-list-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the event error message list. Defaults to "_error_message_list_".
+                        
+                        Used when the simple method is invoked as an event, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="event-event-message-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the event message. Defaults to "_event_message_".
+                        
+                        Used when the simple method is invoked as an event, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="event-event-message-list-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the event message list. Defaults to "_event_message_list_".
+                        
+                        Used when the simple method is invoked as an event, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="service-response-message-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the service response message. Defaults to "responseMessage".
+                        
+                        Used when the simple method is invoked as a service, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="service-error-message-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the service error message. Defaults to "errorMessage".
+                        
+                        Used when the simple method is invoked as a service, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="service-error-message-list-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the service error message list. Defaults to "errorMessageList".
+                        
+                        Used when the simple method is invoked as a service, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="service-error-message-map-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the service error message map. Defaults to "errorMessageMap".
+                        
+                        Used when the simple method is invoked as a service, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="service-success-message-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the service success message. Defaults to "successMessage".
+                        
+                        Used when the simple method is invoked as a service, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="service-success-message-list-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the service success message list. Defaults to "successMessageList".
+                        
+                        Used when the simple method is invoked as a service, it is ignored otherwise.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+<!--
+    =================================
+    ===== Assignment Operations =====
+    =================================
+-->
+
+    <xs:element name="add-error" substitutionGroup="ControlOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Adds an error message to an error message list.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:choice>
+                <xs:element ref="fail-message" />
+                <xs:element ref="fail-property" />
+            </xs:choice>
+            <xs:attribute ref="error-list-name"/>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="assert" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Adds an error message to the error message list for each condition that evaluates to false.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:group maxOccurs="unbounded" ref="IfConditions" />
+            <xs:attribute type="xs:string" name="title">
+                <xs:annotation>
+                    <xs:documentation>
+                        The title of the assert operation. The title is used in test reports.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute ref="error-list-name"/>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="check-id" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Evaluates the specified field, and adds an error message to the error message list if the field's value is not a valid database ID value.
+                
+                <![CDATA[Valid IDs can be any sequence of characters or digits but must not contain the following characters:
+                space [ ], double quote ["], single quote ['], ampersand [&], question mark [?],
+                less-than sign [<], greater-than sign [>], forward-slash [/], back-slash [\].]]>
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:choice minOccurs="0">
+                <xs:element ref="fail-message" />
+                <xs:element ref="fail-property" />
+            </xs:choice>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field that contains the ID value to check.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute ref="error-list-name" />
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="check-permission" substitutionGroup="IfOtherOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Checks to see if the current user has the specified permission.
+                If the user does not have the specified permission or if there is no user associated with the context
+                then the failure message from fail-message or fail-property will be added to the
+                specified error list.
+                
+                Note that this element must be followed by the check-errors element for it to do anything meaningful. 
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="alt-permission" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Declares an alternate permission. Alternate permissions are checked when the primary permission check fails.
+                        </xs:documentation>
+                    </xs:annotation>
+                    <xs:complexType>
+                        <xs:attributeGroup ref="attlist.check-permission" />
+                    </xs:complexType>
+                </xs:element>
+                <xs:choice>
+                    <xs:element ref="fail-message" />
+                    <xs:element ref="fail-property" />
+                </xs:choice>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.check-permission" />
+            <xs:attribute ref="error-list-name" />
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="clear-field" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Sets the value of the specified field to null.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="create-object" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Creates an instance of the specified class.
+                The string and field sub-elements are passed to the constructor method as arguments in the order they are specified.
+                A runtime exception will be thrown if the sub-elements do not match the constructor method arguments.
+                
+                Deprecated - use the script element.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="field" />
+                <xs:element ref="string" />
+            </xs:choice>
+            <xs:attribute ref="field" use="required" />
+            <xs:attribute name="class-name" type="javaClassName" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the class to construct an instance of.
+                        
+                        Required. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="fail-message">
+        <xs:annotation>
+            <xs:documentation>
+                Declares an error message.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="message" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The error message text.
+                        
+                        Required. Attribute type: constant+expr
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="fail-property">
+        <xs:annotation>
+            <xs:documentation>
+                Declares an error message found in a properties file.
+                Typically used for internationalized messages.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="resource" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of a properties file on the classpath.
+                        
+                        Required. Attribute type: constant
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="property" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The property key.
+                        
+                        Required. Attribute type: constant
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="field">
+        <xs:annotation>
+            <xs:documentation>
+                Declares an environment field to be passed as an argument to an object method call.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the environment field to use.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute ref="type">
+                <xs:annotation>
+                    <xs:documentation>
+                        The Java class of the argument. Defaults to "java.lang.String".
+                        It should be the type specified in the method signature, not the type of the object being
+                        passed in.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="field-to-list" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Appends an object to the specified list.
+                
+                Deprecated - use the set element.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The field name of the object to append. The operation does nothing if the field does not exist.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="list" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The field name of the list that the object will be appended to.
+                        If the list does not exist, one will be created.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="field-to-request" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copies a field to a servlet request attribute.
+                Valid only when the simple-method is called as an event, it is ignored otherwise.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field to copy from. The source of the assignment.
+                        The operation does nothing if the field does not exist.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="request-name">
+                <xs:annotation>
+                    <xs:documentation>
+                        The servlet request attribute name. The target of the assignment.
+                        Defaults to the value of the field attribute.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="field-to-result" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copies a field to a service OUT attribute.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field to copy from. The source of the assignment.
+                        The operation does nothing if the field does not exist.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="result-name">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the result field to set. The target of the assignment.
+                        Defaults to the value of the field attribute.
+                        
+                        Optional. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="field-to-session" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copies a field to a servlet session attribute.
+                Valid only when the simple-method is called as an event, it is ignored otherwise.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field to copy from. The source of the assignment.
+                        The operation does nothing if the field does not exist.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="session-name">
+                <xs:annotation>
+                    <xs:documentation>
+                        The servlet session attribute name. The target of the assignment.
+                        Defaults to the value of the field attribute.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="first-from-list" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Assigns the first (lowest order) entry in a list to a field.
+                If the list does not exist or is empty, assigns null to a field.
+                
+                Deprecated - use the set element.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="entry" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field to set. The target of the assignment.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="list" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the list that contains the object to copy.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="list-to-list" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copy a list to another list.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="list" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        Name of the list to copy from. The operation does nothing if the list does not exist.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="to-list" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        Name of the list to copy to. If the list does not exist, one will be created.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="map-to-map" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copies a map to another map.
+                If a target map is not specified, the source map is copied to the current
+                environment (memory space).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="map" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the map to copy from. The operation does nothing if the map does not exist.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="to-map">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the map to copy to. If the target map does not exist, one will be created.
+                        If this attribute is empty, the source map will be copied to the current environment.
+                        
+                        Optional. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="now" substitutionGroup="OtherOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Sets a field to the current system time.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+            <xs:attribute name="type">
+                <xs:annotation>
+                    <xs:documentation>
+                        The field data type. Defaults to "java.sql.Timestamp".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="java.sql.Timestamp"/>
+                        <xs:enumeration value="java.sql.Date" />
+                        <xs:enumeration value="java.sql.Time" />
+                        <xs:enumeration value="java.util.Date" />
+                        <xs:enumeration value="java.lang.Long" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="now-date-to-env" substitutionGroup="OtherOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Sets a field to a java.sql.Date object initialized to the current system time.
+                Deprecated - use now.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="now-timestamp" substitutionGroup="OtherOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Sets a field to a java.sql.Timestamp object initialized to the current system time.
+                Deprecated - use now.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="order-by">
+        <xs:annotation>
+            <xs:documentation>
+                Declares a field or map key to sort on.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute name="field-name" type="xs:string" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field or map key to sort on.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="order-map-list" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Sorts a list of maps. Maps are sorted by the keys specified in the order-by sub-elements.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element maxOccurs="unbounded" ref="order-by" />
+            </xs:sequence>
+            <xs:attribute type="xs:string" name="list" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the list to be sorted. The operation does nothing if the list is not found.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="property-to-field" substitutionGroup="OtherOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Assigns a resource property value to a field.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+            <xs:attribute type="xs:string" name="resource" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of a properties resource. Can be a file on the classpath or
+                        a resource defined in the SystemProperty entity.
+                        
+                        Required. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="property" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The property key.
+                        
+                        Required. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default">
+                <xs:annotation>
+                    <xs:documentation>
+                        The default value to use if the specified property value is null or empty.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="booleanConst" name="no-locale">
+                <xs:annotation>
+                    <xs:documentation>
+                        Suppress property value localization. The user's/system locale will be ignored
+                        when retriving the property value.
+                        Defaults to "false".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="arg-list">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of an argument list to be used with a formatting string.
+                        The argument list is applied to the property value.
+                        The attribute does nothing if the argument list is not found.
+                        See the java.text.MessageFormat class for more information.
+                        
+                        Optional. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="arg-list-name">
+                <xs:annotation>
+                    <xs:documentation>
+                        Deprecated - use the arg-list attribute.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="request-parameters-to-list" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Appends a servlet request parameter list to a list.
+                Valid only when the simple-method is called as an event, it is ignored otherwise.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="request-name" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The servlet request parameter name. All matching parameter values will be added to the list.
+                        
+                        Required. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="list">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the list. If the list does not exist, one will be created.
+                        Defaults to the request-name attribute value.
+                        
+                        Optional. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="list-name">
+                <xs:annotation>
+                    <xs:documentation>
+                        Deprecated - use the list attribute.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="request-to-field" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copies a servlet request attribute to a field.
+                Valid only when the simple-method is called as an event, it is ignored otherwise.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+            <xs:attribute type="xs:string" name="request-name">
+                <xs:annotation>
+                    <xs:documentation>
+                        The servlet request attribute name. Defaults to the value of field attribute.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default">
+                <xs:annotation>
+                    <xs:documentation>
+                        A default value to use if the request attribute does not exist.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="session-to-field" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copies a servlet session attribute to a field.
+                Valid only when the simple-method is called as an HTTP event, it is ignored otherwise.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+            <xs:attribute type="xs:string" name="session-name">
+                <xs:annotation>
+                    <xs:documentation>
+                        The servlet session attribute name. Defaults to the value of the field attribute.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default">
+                <xs:annotation>
+                    <xs:documentation>
+                        A default value to use if the request attribute does not exist.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="set" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Assigns a field from an expression or script, or from a constant value. Also supports a default value and type conversion.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+            <xs:attribute type="xs:string" name="from">
+                <xs:annotation>
+                    <xs:documentation>
+                        An expression or script that returns an object or null. The source of the assignment.
+                        
+                        A script must be prefixed with the script language followed by a colon (":").
+                        
+                        Required if the value attribute is empty. Attribute types: expression, script.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="from-field">
+                <xs:annotation>
+                    <xs:documentation>
+                        Deprecated - use the from attribute.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="value">
+                <xs:annotation>
+                    <xs:documentation>
+                        A constant value, or a constant that includes an expression. The source of the assignment.
+                        
+                        Required if the from attribute is empty. Attribute type: constant+expr.
+                        Defaults to java.lang.String data type.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default">
+                <xs:annotation>
+                    <xs:documentation>
+                        A default value that is used when the from attribute evaluates to null or empty.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-value">
+                <xs:annotation>
+                    <xs:documentation>
+                        Deprecated - use the default attribute.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="javaClassName" name="type">
+                <xs:annotation>
+                    <xs:documentation>
+                        The Java data type to convert to. "NewList" will create a new java.util.List, "NewMap" will create a new java.util.Map.
+                        Otherwise, the attribute must contain a valid Java class name.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="format">
+                <xs:annotation>
+                    <xs:documentation>
+                        Format to be used for object type conversion. Used when the type attribute is not empty.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="set-if-null" type="booleanConst">
+                <xs:annotation>
+                    <xs:documentation>
+                        Controls if the target field can be set to null when the from attribute evaluates to null.
+                        Defaults to "false".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="set-if-empty" type="booleanConst">
+                <xs:annotation>
+                    <xs:documentation>
+                        Controls if the target field can be set to an empty value. The meaning of "empty" depends on the Java data type.
+                        Defaults to "true".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="set-calendar" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Adjusts a Timestamp by a specified time duration.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+            <xs:attribute type="xs:string" name="from">
+                <xs:annotation>
+                    <xs:documentation>
+                        An expression or script that returns an object or null. The source of the assignment.
+                        
+                        A script must be prefixed with the script language followed by a colon (":").
+                        
+                        Required if the value attribute is empty. Attribute types: expression, script.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="from-field">
+                <xs:annotation>
+                    <xs:documentation>
+                        Deprecated - use the from attribute.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="value">
+                <xs:annotation>
+                    <xs:documentation>
+                        A constant value, or a constant that includes an expression. The source of the assignment.
+                        
+                        Required if the from attribute is empty. Attribute type: constant+expr.
+                        Defaults to java.lang.String data type.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default">
+                <xs:annotation>
+                    <xs:documentation>
+                        A default value that is used when the from attribute evaluates to null or empty.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-value">
+                <xs:annotation>
+                    <xs:documentation>
+                        Deprecated - use the default attribute.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="set-if-null" type="booleanConst">
+                <xs:annotation>
+                    <xs:documentation>
+                        Controls if the target field can be set to null when the from attribute evaluates to null.
+                        Defaults to "false".
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="years">
+                <xs:annotation>
+                    <xs:documentation>
+                        Add (optionally using +) or subtract (using -) a number of year(s).
+                        If an expression is used, it should evaluate to an integer.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="months">
+                <xs:annotation>
+                    <xs:documentation>
+                        Add (optionally using +) or subtract (using -) a number of month(s).
+                        If an expression is used, it should evaluate to an integer.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="days">
+                <xs:annotation>
+                    <xs:documentation>
+                        Add (optionally using +) or subtract (using -) a number of days(s).
+                        If an expression is used, it should evaluate to an integer.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="hours">
+                <xs:annotation>
+                    <xs:documentation>
+                        Add (optionally using +) or subtract (using -) a number of hour(s).
+                        If an expression is used, it should evaluate to an integer.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="minutes">
+                <xs:annotation>
+                    <xs:documentation>
+                        Add (optionally using +) or subtract (using -) a number of minute(s).
+                        If an expression is used, it should evaluate to an integer.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="seconds">
+                <xs:annotation>
+                    <xs:documentation>
+                        Add (optionally using +) or subtract (using -) a number of second(s).
+                        If an expression is used, it should evaluate to an integer.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="millis">
+                <xs:annotation>
+                    <xs:documentation>
+                        Add (optionally using +) or subtract (using -) a number of millisecond(s).
+                        If an expression is used, it should evaluate to an integer.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="period-align-start">
+                <xs:annotation>
+                    <xs:documentation>
+                        Align the adjusted date to the start of a period.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="year" />
+                        <xs:enumeration value="month" />
+                        <xs:enumeration value="week" />
+                        <xs:enumeration value="day" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="period-align-end">
+                <xs:annotation>
+                    <xs:documentation>
+                        Align the adjusted date to the end of a period.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="year" />
+                        <xs:enumeration value="month" />
+                        <xs:enumeration value="week" />
+                        <xs:enumeration value="day" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="locale">
+                <xs:annotation>
+                    <xs:documentation>
+                        A locale value (eg: en). The locale selects the calendar to be used for the adjustment.
+                        Defaults to the environment locale.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="time-zone">
+                <xs:annotation>
+                    <xs:documentation>
+                        A time zone value (eg: GMT).
+                        Defaults to the environment time zone.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="set-current-user-login" substitutionGroup="OtherOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Sets the UserLogin entity value to be used for authentication for the rest of the method.
+                This is mostly used for calling services, etc.
+                
+                This element is deprecated. You can pass an alternate UserLogin
+                entity value to the called service's IN attributes.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="value-field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field that contains the UserLogin entity value.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="set-service-fields" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copies elements from a source map that match a service's IN or OUT attributes to a target map.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="service-name" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the service.
+
+                        Required. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="map" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The map to copy the matching attributes from.
+
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="to-map" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The map to copy the matching attributes to.
+                        If the map does not exist, a new one will be created.
+
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="mode">
+                <xs:annotation>
+                    <xs:documentation>
+                        The service attributes mode - IN or OUT. Defaults to "IN".
+
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="IN" />
+                        <xs:enumeration value="OUT" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="string">
+        <xs:annotation>
+            <xs:documentation>
+                Declares a java.lang.String to be passed as an argument to a method call.
+                The String can be contained in the value attribute and/or in the element body.
+                The element body text is appended to the value attribute text. 
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="value">
+                <xs:annotation>
+                    <xs:documentation>
+                        The String text.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="string-append" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Performs string concatenation and formatting. The operation starts by applying
+                an argument list (if found) to the string attribute value, the result is
+                prepended by the prefix attribute value, and the suffix attribute value is
+                appended to the result. If the string specified in the field attribute exists,
+                the final result is appended to it, else the field is set to the final result.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The target of the string concatention.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="string" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The string to append to the field named in the field attribute.
+                        This can be a formatting string that is used with the argument list
+                        specified in the arg-list attribute.
+                        
+                        Required. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="arg-list">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of an argument list to be used with a formatting string.
+                        The argument list is applied to the string attribute value.
+                        The attribute does nothing if the argument list is not found.
+                        See the java.text.MessageFormat class for more information.
+                        
+                        Optional. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="prefix">
+                <xs:annotation>
+                    <xs:documentation>
+                        A string that will be prepended to the string attribute value.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="suffix">
+                <xs:annotation>
+                    <xs:documentation>
+                        A string that will be appended to the string attribute value.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="string-to-list" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Adds a string to a list of strings. Deprecated - use the set element.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="string" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The string to add to the list specified in the list attribute.
+                        
+                        Required. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="list" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        List to add the string to. If the list does not exist, one will be created.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="arg-list">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of an argument list to be used with a formatting string.
+                        The argument list is applied to the string attribute value.
+                        The attribute does nothing if the argument list is not found.
+                        See the java.text.MessageFormat class for more information.
+                        
+                        Optional. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="message-field">
+                <xs:annotation>
+                    <xs:documentation>
+                        Inserts a message above a field (used in conjunction with @fieldErrors FTL macro).
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="to-string" substitutionGroup="EnvOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Converts an object to a string. Deprecated - use the set element.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field containing the object to convert.
+                        The operation does nothing if the object is not found.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="format">
+                <xs:annotation>
+                    <xs:documentation>
+                        The format to use for the conversion.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="numeric-padding">
+                <xs:annotation>
+                    <xs:documentation>
+                        Left-pad the string with the specified number of zeroes.
+                        
+                        Optional. Attribute type: constant.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="webapp-property-to-field" substitutionGroup="EventOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Copies a property value from a properties file in a ServletContext resource to a field.
+                Valid only when the simple-method is called as an event, it is ignored otherwise.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute ref="field" use="required" />
+            <xs:attribute type="xs:string" name="resource" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The resource location of the properties file inside the webapp,
+                        and relative to the root of the webapp (can be inside a war file).
+                        An example of this is "/WEB-INF/myprops.properties".
+                        
+                        Required. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="property" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The property key.
+                        
+                        Required. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default">
+                <xs:annotation>
+                    <xs:documentation>
+                        A default value to use if the property value is null or empty.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+<!--
+    ==========================================
+    ===== Conditional/Looping Statements =====
+    ==========================================
+-->
+
+    <xs:element name="and" substitutionGroup="IfCombineConditions">
+        <xs:annotation>
+            <xs:documentation>
+                Combines conditional elements using a boolean AND.
+                Evaluates to true if all sub-elements evaluate to true.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:group maxOccurs="unbounded" ref="IfConditions"/>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="break" substitutionGroup="ControlOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Causes script execution to exit the nearest enclosing loop element.
+                Throws an exception if there is no enclosing looping element.
+            </xs:documentation>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="check-errors" substitutionGroup="ControlOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Halts script execution if the error message list contains any messages.
+                The error message list is returned to the calling process.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute type="xs:string" name="error-code">
+                <xs:annotation>
+                    <xs:documentation>
+                        The error code to return to the calling process.
+                        Defaults to value of the containing simple-method default-error-code attribute.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute ref="error-list-name"/>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="condition">
+        <xs:annotation>
+            <xs:documentation>
+                Combines a group of conditional elements into a single logical (true/false) expression.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:group ref="IfConditions"/>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="continue" substitutionGroup="ControlOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Causes script execution to return to the beginning of the nearest enclosing loop element.
+                Throws an exception if there is no enclosing looping element.
+            </xs:documentation>
+        </xs:annotation>
+    </xs:element>
+
+    <xs:element name="else">
+        <xs:annotation>
+            <xs:documentation>
+                Contains a block of code to be executed when a condition evaluates to false.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations"/>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="else-if">
+        <xs:annotation>
+            <xs:documentation>
+                Contains a condition and a block of code to be evaluated/executed when a parent condition evaluates to false.
+                This element must contain two sub-elements: condition and then.
+                If the condition of the parent element evaluates to false, then this element's condition will be evaluated,
+                and if that condition evaluates to true, then the operations under the then element will be run.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="condition" />
+                <xs:element ref="then" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:element name="if" substitutionGroup="IfOtherOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Performs conditional processing on blocks of code.
+                This operation specifies combinations of conditions, alternate conditions,
+                and operations to run based on the evaluation of condition expressions.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="condition" />
+                <xs:element ref="then" />
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="else-if" />
+                <xs:element minOccurs="0" ref="else" />
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <!-- FIXME: We need two versions of this element. -->
+    <xs:element name="if-compare" substitutionGroup="IfBasicOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Compares a field to a constant value.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
+                <xs:element minOccurs="0" ref="else" />
+            </xs:sequence>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field that will be compared. The l-value.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attributeGroup ref="attlist.operatorOptionalRvalue" />
+            <xs:attribute type="xs:string" name="value" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The value that the field will be compared to. The r-value.
+                        
+                        Ignored when the operator attribute equals "is-null", "is-not-null", or "is-empty" - required otherwise. Attribute type: constant+expr.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute ref="type">
+                <xs:annotation>
+                    <xs:documentation>
+                        The Java data type. Both values will be converted to this type before comparison.
+                        Invalid when the operator attribute value is "contains".
+                        
+                        Optional. Attribute type: constant. Attribute must contain a valid Java class name.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="format">
+                <xs:annotation>
+                    <xs:documentation>
+                        Format used for type conversions. Valid only when the type attribute is not empty.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <!-- FIXME: We need two versions of this element. -->
+    <xs:element name="if-compare-field" substitutionGroup="IfBasicOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Compares a field to another field.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
+                <xs:element minOccurs="0" ref="else" />
+            </xs:sequence>
+            <xs:attribute type="xs:string" name="field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field that will be compared. The l-value.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attributeGroup ref="attlist.operatorRequired" />
+            <xs:attribute type="xs:string" name="to-field" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        The name of the field that will be compared to the field specified in the field attribute.
+                        The r-value.
+                        
+                        Required. Attribute type: expression.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute ref="type" />
+            <xs:attribute type="xs:string" name="format">
+                <xs:annotation>
+                    <xs:documentation>
+                        Format used for type conversions. Valid only when the type attribute is not empty.
+                        
+                        Optional. Attribute types: constant, ${expression}.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
+
+    <!-- FIXME: We need two versions of this element. -->
+    <xs:element name="if-empty" substitutionGroup="IfBasicOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Tests if a field is null or empty.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations" />
+                <xs:element minOccurs="0" ref="else" />

[... 3216 lines stripped ...]