svn commit: r491649 [3/7] - in /ofbiz/site: ./ dtds/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r491649 [3/7] - in /ofbiz/site: ./ dtds/

jacopoc
Added: ofbiz/site/dtds/simple-methods.xsd
URL: http://svn.apache.org/viewvc/ofbiz/site/dtds/simple-methods.xsd?view=auto&rev=491649
==============================================================================
--- ofbiz/site/dtds/simple-methods.xsd (added)
+++ ofbiz/site/dtds/simple-methods.xsd Mon Jan  1 13:56:13 2007
@@ -0,0 +1,2093 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright 2001-2006 The Apache Software Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License. You may obtain a copy of
+the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations
+under the License.
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+<!--
+    ==================================================
+    ========== The Simple Methods Section ==========
+    ==================================================
+    (see further down for the Simple Map Processor Section)
+-->
+
+  <!-- Reusable artifacts (abstract elements, groups, attributeGroups -->
+    <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:attributeGroup name="attlist.propertyInfoOptional">
+        <xs:attribute type="xs:string" name="resource"/>
+        <xs:attribute type="xs:string" name="property"/>
+    </xs:attributeGroup>
+    <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:attributeGroup name="attlist.operatorRequired">
+        <xs:attribute name="operator" use="required">
+            <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="contains"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+
+  <!-- ELEMENTS start here -->
+    <xs:element name="field">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.field">
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="type"/>
+    </xs:attributeGroup>
+    <xs:element name="string">
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.string"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.string">
+        <xs:attribute type="xs:string" name="value"/>
+    </xs:attributeGroup>
+    <xs:element name="simple-methods">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element maxOccurs="unbounded" ref="simple-method"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="simple-method">
+        <xs:annotation>
+            <xs:documentation>
+        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.
+        
+        The field-to-request and field-to-session elements will be IGNORED when
+        called in a service context. So, they are ONLY used when called in an event context.
+        
+        The field-to-result elements will be ignored in an event context, ie only used in a service.
+        
+        The parameter-map-name env entry will contain the HttpRequest parameters for
+        running in an event context and and the input context when running in a service.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:group minOccurs="0" maxOccurs="unbounded" ref="AllOperations"/>
+            <xs:attributeGroup ref="attlist.simple-method"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.simple-method">
+        <xs:attribute type="xs:string" name="method-name" use="required"/>
+        <xs:attribute type="xs:string" name="short-description" use="required"/>
+        <xs:attribute name="login-required" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="use-transaction" default="true">
+            <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="default-error-code" default="error"/>
+        <xs:attribute type="xs:string" name="default-success-code" default="success"/>
+        <xs:attribute type="xs:string" name="parameter-map-name" default="parameters"/>
+        <xs:attribute type="xs:string" name="event-request-object-name" default="request"/>
+        <xs:attribute type="xs:string" name="event-response-object-name" default="response"/>
+        <xs:attribute type="xs:string" name="event-response-code-name" default="_response_code_"/>
+        <xs:attribute type="xs:string" name="event-error-message-name" default="_error_message_"/>
+        <xs:attribute type="xs:string" name="event-event-message-name" default="_event_message_"/>
+        <xs:attribute type="xs:string" name="service-response-message-name" default="responseMessage"/>
+        <xs:attribute type="xs:string" name="service-error-message-name" default="errorMessage"/>
+        <xs:attribute type="xs:string" name="service-error-message-list-name" default="errorMessageList"/>
+        <xs:attribute type="xs:string" name="service-error-message-map-name" default="errorMessageMap"/>
+        <xs:attribute type="xs:string" name="service-success-message-name" default="successMessage"/>
+        <xs:attribute type="xs:string" name="service-success-message-list-name" default="successMessageList"/>
+        <xs:attribute type="xs:string" name="locale-name" default="locale"/>
+        <xs:attribute type="xs:string" name="delegator-name" default="delegator"/>
+        <xs:attribute type="xs:string" name="security-name" default="security"/>
+        <xs:attribute type="xs:string" name="dispatcher-name" default="dispatcher"/>
+        <xs:attribute type="xs:string" name="user-login-name" default="userLogin"/>
+    </xs:attributeGroup>
+    <xs:element name="call-map-processor" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+        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
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" ref="simple-map-processor"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.call-map-processor"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.call-map-processor">
+        <xs:attribute type="xs:string" name="xml-resource"/>
+        <xs:attribute type="xs:string" name="processor-name"/>
+        <xs:attribute type="xs:string" name="in-map-name" use="required"/>
+        <xs:attribute type="xs:string" name="out-map-name" use="required"/>
+        <xs:attribute type="xs:string" name="error-list-name" default="error_list"/>
+    </xs:attributeGroup>
+    <xs:element name="set-service-fields" substitutionGroup="CallOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.set-service-fields"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.set-service-fields">
+        <xs:attribute type="xs:string" name="service-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name" use="required"/>
+        <xs:attribute type="xs:string" name="to-map-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="call-service" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+        The result-to-request and result-to-session elements will be IGNORED when
+        called in a service context. So, they are ONLY used when called in an event context.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" ref="error-prefix"/>
+                <xs:element minOccurs="0" ref="error-suffix"/>
+                <xs:element minOccurs="0" ref="success-prefix"/>
+                <xs:element minOccurs="0" ref="success-suffix"/>
+                <xs:element minOccurs="0" ref="message-prefix"/>
+                <xs:element minOccurs="0" ref="message-suffix"/>
+                <xs:element minOccurs="0" ref="default-message"/>
+                <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:attributeGroup ref="attlist.call-service"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.call-service">
+        <xs:attribute type="xs:string" name="service-name" use="required"/>
+        <xs:attribute type="xs:string" name="in-map-name"/>
+        <xs:attribute name="include-user-login" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="break-on-error" default="true">
+            <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="error-code" default="error"/>
+        <xs:attribute type="xs:string" name="success-code" default="success"/>
+    </xs:attributeGroup>
+    <xs:element name="error-prefix">
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="error-suffix">
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="success-prefix">
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="success-suffix">
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="message-prefix">
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="message-suffix">
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="default-message">
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="results-to-map">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.results-to-map"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.results-to-map">
+        <xs:attribute type="xs:string" name="map-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="result-to-field">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.result-to-field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.result-to-field">
+        <xs:attribute type="xs:string" name="result-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name"/>
+    </xs:attributeGroup>
+    <xs:element name="result-to-request">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.result-to-request"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.result-to-request">
+        <xs:attribute type="xs:string" name="result-name" use="required"/>
+        <xs:attribute type="xs:string" name="request-name"/>
+    </xs:attributeGroup>
+    <xs:element name="result-to-session">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.result-to-session"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.result-to-session">
+        <xs:attribute type="xs:string" name="result-name" use="required"/>
+        <xs:attribute type="xs:string" name="session-name"/>
+    </xs:attributeGroup>
+    <xs:element name="result-to-result">
+        <xs:annotation>
+            <xs:documentation>
+        NOTE that these attributes are somewhat confusing: result-name is the name of the field in the result of this service call that the value comes FROM;
+        service-result-name is the name of the field in the result of this simple-method called as a service where the value goes TO;
+        in other words FROM result-name and TO service-result-name
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.result-to-result"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.result-to-result">
+        <xs:attribute type="xs:string" name="result-name" use="required"/>
+        <xs:attribute type="xs:string" name="service-result-name"/>
+    </xs:attributeGroup>
+    <xs:element name="call-service-asynch" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+        Calls a service asynchronously and ignores the result, so 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:attributeGroup ref="attlist.call-service-asynch"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.call-service-asynch">
+        <xs:attribute type="xs:string" name="service-name" use="required"/>
+        <xs:attribute type="xs:string" name="in-map-name"/>
+        <xs:attribute name="include-user-login" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="call-bsh" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+        Runs an external bsh script from the classpath if resource is specified and
+        then runs the inlined bsh script if any is specified.
+        
+        The bsh context is the current simple-method environment including maps, lists
+        and special objects whose names are defined in the simple-method attributes.
+        
+        The current env cannot be modified, but if a Map is returned by the bsh block
+        the entries in the map will be put into the current env.
+        
+        Error messages go on the error list and are handled with the check-errors tag.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType mixed="true">
+            <xs:attributeGroup ref="attlist.call-bsh"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.call-bsh">
+        <xs:attribute type="xs:string" name="resource"/>
+        <xs:attribute type="xs:string" name="error-list-name" default="error_list"/>
+    </xs:attributeGroup>
+    <xs:element name="call-simple-method" substitutionGroup="CallOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.call-simple-method"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.call-simple-method">
+        <xs:attribute type="xs:string" name="xml-resource"/>
+        <xs:attribute type="xs:string" name="method-name" use="required"/>
+    </xs:attributeGroup>
+    <!-- Operations to call Java methods and create Java objects -->
+    <xs:element name="call-object-method" substitutionGroup="CallOperations">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="string"/>
+                <xs:element ref="field"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.call-object-method"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.call-object-method">
+        <xs:attribute type="xs:string" name="obj-field-name" use="required"/>
+        <xs:attribute type="xs:string" name="obj-map-name"/>
+        <xs:attribute type="xs:string" name="method-name" use="required"/>
+        <xs:attribute type="xs:string" name="ret-field-name"/>
+        <xs:attribute type="xs:string" name="ret-map-name"/>
+    </xs:attributeGroup>
+    <xs:element name="call-class-method" substitutionGroup="CallOperations">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="string"/>
+                <xs:element ref="field"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.call-class-method"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.call-class-method">
+        <xs:attribute type="xs:string" name="class-name" use="required"/>
+        <xs:attribute type="xs:string" name="method-name" use="required"/>
+        <xs:attribute type="xs:string" name="ret-field-name"/>
+        <xs:attribute type="xs:string" name="ret-map-name"/>
+    </xs:attributeGroup>
+    <xs:element name="create-object" substitutionGroup="CallOperations">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="string"/>
+                <xs:element ref="field"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.create-object"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.create-object">
+        <xs:attribute type="xs:string" name="class-name" use="required"/>
+        <xs:attribute type="xs:string" name="field-name"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+    </xs:attributeGroup>
+    <!-- Operations to copy map fields in the current env to context specific containers -->
+    <!-- Event specific operations -->
+    <xs:element name="field-to-request" substitutionGroup="EventOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.field-to-request"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.field-to-request">
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="request-name"/>
+    </xs:attributeGroup>
+    <xs:element name="field-to-session" substitutionGroup="EventOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.field-to-session"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.field-to-session">
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="session-name"/>
+    </xs:attributeGroup>
+    <xs:element name="request-to-field" substitutionGroup="EventOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.request-to-field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.request-to-field">
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="default"/>
+        <xs:attribute type="xs:string" name="request-name"/>
+    </xs:attributeGroup>
+    <xs:element name="request-parameters-to-list" substitutionGroup="EventOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.request-parameters-to-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.request-parameters-to-list">
+        <xs:attribute type="xs:string" name="request-name" use="required"/>
+        <xs:attribute type="xs:string" name="list-name"/>
+    </xs:attributeGroup>
+    <xs:element name="session-to-field" substitutionGroup="EventOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.session-to-field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.session-to-field">
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="default"/>
+        <xs:attribute type="xs:string" name="session-name"/>
+    </xs:attributeGroup>
+    <xs:element name="webapp-property-to-field" substitutionGroup="EventOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.webapp-property-to-field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.webapp-property-to-field">
+        <xs:attribute type="xs:string" name="resource" use="required"/>
+        <xs:attribute type="xs:string" name="property" use="required"/>
+        <xs:attribute type="xs:string" name="default"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="session-name"/>
+    </xs:attributeGroup>
+    <!-- Service specific operations -->
+    <xs:element name="field-to-result" substitutionGroup="ServiceOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.field-to-result"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.field-to-result">
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="result-name"/>
+    </xs:attributeGroup>
+    <!-- Environment specific operations -->
+    <xs:element name="map-to-map" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.map-to-map"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.map-to-map">
+        <xs:attribute type="xs:string" name="map-name" use="required"/>
+        <xs:attribute type="xs:string" name="to-map-name"/>
+    </xs:attributeGroup>
+    <xs:element name="field-to-list" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.field-to-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.field-to-list">
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="list-to-list" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.list-to-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.list-to-list">
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute type="xs:string" name="to-list-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="order-map-list" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element maxOccurs="unbounded" ref="order-by"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.order-map-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.order-map-list">
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+    </xs:attributeGroup>
+
+    <xs:element name="set" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.set"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.set">
+        <xs:attribute type="xs:string" name="field" use="required"/>
+        <xs:attribute type="xs:string" name="from-field"/>
+        <xs:attribute type="xs:string" name="value"/>
+        <xs:attribute type="xs:string" name="default-value"/>
+        <xs:attribute name="type">
+            <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:attribute name="set-if-null" default="false">
+            <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-empty" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="string-append" substitutionGroup="EnvOperations">
+        <xs:annotation><xs:documentation>NOTE: the prefix and suffix will only be used IFF the current string and the string to be appended are both not empty</xs:documentation></xs:annotation>
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.string-append"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.string-append">
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="string" use="required"/>
+        <xs:attribute type="xs:string" name="arg-list-name"/>
+        <xs:attribute type="xs:string" name="prefix"/>
+        <xs:attribute type="xs:string" name="suffix"/>
+    </xs:attributeGroup>
+    <xs:element name="string-to-list" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.string-to-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.string-to-list">
+        <xs:attribute type="xs:string" name="string" use="required"/>
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute type="xs:string" name="arg-list-name"/>
+        <xs:attribute type="xs:string" name="message-field-name"/>
+    </xs:attributeGroup>
+    <xs:element name="to-string" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.to-string"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.to-string">
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="format"/>
+        <xs:attribute type="xs:string" name="numeric-padding"/>
+    </xs:attributeGroup>
+    <xs:element name="clear-field" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.clear-field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.clear-field">
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="first-from-list" substitutionGroup="EnvOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.first-from-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.first-from-list">
+        <xs:attribute type="xs:string" name="entry-name" use="required"/>
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+    </xs:attributeGroup>
+    <!--
+        These operations are used to interact with a data source through the entity
+        engine and facilitate related operations.
+    -->
+    <xs:element name="transaction-begin" substitutionGroup="EntityTxOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.transaction-begin"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.transaction-begin">
+        <xs:attribute type="xs:string" name="began-transaction-name" default="beganTransaction"/>
+    </xs:attributeGroup>
+    <xs:element name="transaction-commit" substitutionGroup="EntityTxOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.transaction-commit"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.transaction-commit">
+        <xs:attribute type="xs:string" name="began-transaction-name" default="beganTransaction"/>
+    </xs:attributeGroup>
+    <xs:element name="transaction-rollback" substitutionGroup="EntityTxOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.transaction-rollback"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.transaction-rollback">
+        <xs:attribute type="xs:string" name="began-transaction-name" default="beganTransaction"/>
+    </xs:attributeGroup>
+
+    <xs:element name="sequenced-id-to-env" substitutionGroup="EntityMiscOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.sequenced-id-to-env"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.sequenced-id-to-env">
+        <xs:attribute type="xs:string" name="sequence-name" use="required"/>
+        <xs:attribute type="xs:string" name="env-name" use="required"/>
+        <xs:attribute name="get-long-only" default="false">
+            <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="stagger-max"/>
+    </xs:attributeGroup>
+    <xs:element name="make-next-seq-id" substitutionGroup="EntityMiscOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.make-next-seq-id"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.make-next-seq-id">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute type="xs:string" name="seq-field-name" use="required"/>
+        <xs:attribute type="xs:string" name="numeric-padding" default="5"/>
+        <xs:attribute type="xs:string" name="increment-by" default="1"/>
+    </xs:attributeGroup>
+
+    <xs:element name="entity-data" substitutionGroup="EntityMiscOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.entity-data"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.entity-data">
+        <xs:attribute type="xs:string" name="location" use="required"/>
+        <xs:attribute type="xs:string" name="delegator-name" use="optional"/>
+        <xs:attribute type="xs:integer" name="timeout" default="-1"/>
+        <xs:attribute type="xs:string" name="error-list-name" default="error_list"/>
+        <xs:attribute name="mode" default="load">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="load"/>
+                    <xs:enumeration value="assert"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+
+    <xs:element name="find-by-primary-key" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.find-by-primary-key"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.find-by-primary-key">
+        <xs:attribute type="xs:string" name="entity-name"/>
+        <xs:attribute type="xs:string" name="map-name" use="required"/>
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute type="xs:string" name="use-cache" default="false"/>
+        <xs:attribute type="xs:string" name="fields-to-select-list"/>
+        <xs:attribute type="xs:string" name="delegator-name"/>
+    </xs:attributeGroup>
+    <xs:element name="find-by-and" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.find-by-and"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.find-by-and">
+        <xs:attribute type="xs:string" name="entity-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name" use="required"/>
+        <xs:attribute type="xs:string" name="order-by-list-name"/>
+        <xs:attribute type="xs:string" name="delegator-name"/>
+        <xs:attribute type="xs:string" name="use-cache" default="false"/>
+        <xs:attribute name="use-iterator" default="false">
+            <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="list-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="entity-one" substitutionGroup="EntityFindOperations">
+        <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:attributeGroup ref="attlist.entity-one"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.entity-one">
+        <xs:attribute name="entity-name" type="xs:string" use="required"/>
+        <xs:attribute name="value-name" type="xs:string" use="required"/>
+        <xs:attribute type="xs:string" name="use-cache" default="false"/>
+        <xs:attribute name="auto-field-map" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="entity-and" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element maxOccurs="unbounded" ref="field-map"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by"/>
+                <xs:choice minOccurs="0">
+                    <xs:element ref="limit-range"/>
+                    <xs:element ref="limit-view"/>
+                    <xs:element ref="use-iterator"/>
+                </xs:choice>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.entity-and"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.entity-and">
+        <xs:attribute name="entity-name" type="xs:string" use="required"/>
+        <xs:attribute type="xs:string" name="use-cache" default="false"/>
+        <xs:attribute name="filter-by-date" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="by-name"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="list-name" type="xs:string" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="entity-condition" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:choice minOccurs="0">
+                    <xs:element ref="condition-expr"/>
+                    <xs:element ref="condition-list"/>
+                    <xs:element ref="condition-object"/>
+                </xs:choice>
+                <xs:element minOccurs="0" ref="having-condition-list"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by"/>
+                <xs:choice minOccurs="0">
+                    <xs:element ref="limit-range"/>
+                    <xs:element ref="limit-view"/>
+                    <xs:element ref="use-iterator"/>
+                </xs:choice>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.entity-condition"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.entity-condition">
+        <xs:attribute name="entity-name" type="xs:string" use="required"/>
+        <xs:attribute type="xs:string" name="use-cache" default="false"/>
+        <xs:attribute name="filter-by-date" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="by-name"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="distinct" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="delegator-name" type="xs:string"/>
+        <xs:attribute name="list-name" type="xs:string" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="condition-list">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="condition-expr"/>
+                <xs:element ref="condition-list"/>
+                <xs:element ref="condition-object"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.condition-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.condition-list">
+        <xs:attribute name="combine" default="and">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="and"/>
+                    <xs:enumeration value="or"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="having-condition-list">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="condition-expr"/>
+                <xs:element ref="condition-list"/>
+                <xs:element ref="condition-object"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.having-condition-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.having-condition-list">
+        <xs:attribute name="combine" default="and">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="and"/>
+                    <xs:enumeration value="or"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="condition-expr">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.condition-expr"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.condition-expr">
+        <xs:attribute name="field-name" type="xs:string" use="required"/>
+        <xs:attribute name="operator" default="equals">
+            <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="between"/>
+                    <xs:enumeration value="like"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="env-name" type="xs:string"/>
+        <xs:attribute name="value" type="xs:string"/>
+        <xs:attribute name="ignore-if-null" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="ignore-if-empty" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="ignore-case" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="condition-object">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.condition-object"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.condition-object">
+        <xs:attribute name="field-name" type="xs:string" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="select-field">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.select-field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.select-field">
+        <xs:attribute name="field-name" type="xs:string" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="order-by">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.order-by"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.order-by">
+        <xs:attribute name="field-name" type="xs:string" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="limit-range">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.limit-range"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.limit-range">
+        <xs:attribute name="start" type="xs:string" use="required"><xs:annotation><xs:documentation>Should resolve into a non-negative integer.</xs:documentation></xs:annotation></xs:attribute>
+        <xs:attribute name="size" type="xs:string" use="required"><xs:annotation><xs:documentation>Should resolve into a non-negative integer.</xs:documentation></xs:annotation></xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="limit-view">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.limit-view"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.limit-view">
+        <xs:attribute name="view-index" type="xs:string" use="required"><xs:annotation><xs:documentation>Should resolve into a non-negative integer.</xs:documentation></xs:annotation></xs:attribute>
+        <xs:attribute name="view-size" type="xs:string" use="required"><xs:annotation><xs:documentation>Should resolve into a positive integer.</xs:documentation></xs:annotation></xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="use-iterator">
+        <xs:complexType/>
+    </xs:element>
+    <xs:element name="field-map">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.field-map"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.field-map">
+        <xs:attribute type="xs:string" name="field-name" use="required"/>
+        <xs:attribute type="xs:string" name="env-name"/>
+        <xs:attribute type="xs:string" name="value"/>
+    </xs:attributeGroup>
+    <xs:element name="entity-count" substitutionGroup="EntityFindOperations">
+        <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:attributeGroup ref="attlist.entity-count"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.entity-count">
+        <xs:attribute name="entity-name" type="xs:string" use="required"/>
+        <xs:attribute name="delegator-name" type="xs:string"/>
+        <xs:attribute name="count-name" type="xs:string" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="get-related-one" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.get-related-one"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.get-related-one">
+        <xs:attribute name="value-name" type="xs:string" use="required"/>
+        <xs:attribute name="relation-name" type="xs:string" use="required"/>
+        <xs:attribute type="xs:string" name="use-cache" default="false"/>
+        <xs:attribute type="xs:string" name="to-value-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="get-related" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.get-related"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.get-related">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute type="xs:string" name="relation-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute type="xs:string" name="order-by-list-name"/>
+        <xs:attribute type="xs:string" name="use-cache" default="false"/>
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="order-value-list" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.order-value-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.order-value-list">
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute type="xs:string" name="to-list-name"/>
+        <xs:attribute type="xs:string" name="order-by-list-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="filter-list-by-and" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.filter-list-by-and"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.filter-list-by-and">
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute type="xs:string" name="to-list-name"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+    </xs:attributeGroup>
+    <xs:element name="filter-list-by-date" substitutionGroup="EntityFindOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.filter-list-by-date"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.filter-list-by-date">
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute type="xs:string" name="to-list-name"/>
+        <xs:attribute type="xs:string" name="valid-date-name"/>
+        <xs:attribute type="xs:string" name="from-field-name" default="fromDate"/>
+        <xs:attribute type="xs:string" name="thru-field-name" default="thruDate"/>
+        <xs:attribute name="all-same" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="make-value" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.make-value"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.make-value">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute type="xs:string" name="entity-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+    </xs:attributeGroup>
+    <xs:element name="clone-value" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.clone-value"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.clone-value">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute type="xs:string" name="new-value-name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="create-value" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.create-value"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.create-value">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute name="do-cache-clear" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="store-value" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.store-value"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.store-value">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute name="do-cache-clear" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="refresh-value" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.refresh-value"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.refresh-value">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute name="do-cache-clear" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="remove-value" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.remove-value"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.remove-value">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute name="do-cache-clear" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="remove-related" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.remove-related"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.remove-related">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute type="xs:string" name="relation-name" use="required"/>
+        <xs:attribute name="do-cache-clear" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="remove-by-and" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.remove-by-and"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.remove-by-and">
+        <xs:attribute type="xs:string" name="entity-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name" use="required"/>
+        <xs:attribute name="do-cache-clear" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="clear-cache-line" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.clear-cache-line"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.clear-cache-line">
+        <xs:attribute type="xs:string" name="entity-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+    </xs:attributeGroup>
+    <xs:element name="clear-entity-caches" substitutionGroup="EntityValueOperations">
+        <xs:complexType/>
+    </xs:element>
+    <xs:element name="set-pk-fields" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.set-pk-fields"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.set-pk-fields">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute name="set-if-null" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="set-nonpk-fields" substitutionGroup="EntityValueOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.set-nonpk-fields"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.set-nonpk-fields">
+        <xs:attribute type="xs:string" name="value-name" use="required"/>
+        <xs:attribute type="xs:string" name="map-name"/>
+        <xs:attribute name="set-if-null" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="store-list" substitutionGroup="EntityListOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.store-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.store-list">
+        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute name="do-cache-clear" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="remove-list" substitutionGroup="EntityListOperations">
+        <xs:complexType>
+            <xs:attributeGroup ref="attlist.remove-list"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.remove-list">
+