svn commit: r507545 [2/3] - /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: r507545 [2/3] - /ofbiz/site/dtds/

jaz-3
Modified: ofbiz/site/dtds/simple-methods.xsd
URL: http://svn.apache.org/viewvc/ofbiz/site/dtds/simple-methods.xsd?view=diff&rev=507545&r1=507544&r2=507545
==============================================================================
--- ofbiz/site/dtds/simple-methods.xsd (original)
+++ ofbiz/site/dtds/simple-methods.xsd Wed Feb 14 06:42:08 2007
@@ -1,17 +1,20 @@
 <?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
+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
+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">
@@ -96,16 +99,45 @@
 
   <!-- ELEMENTS start here -->
     <xs:element name="field">
+        <xs:annotation>
+            <xs:documentation>
+                Typical field-name/map-name pair. With the "." Syntax, the map-name is typically no longer necessary because
+                you can do map-name.field-name in the field-name attribute, but those are still there for legacy purposes.                                                                
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the field to put value in.    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the related map.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="type">
+            <xs:annotation>
+                <xs:documentation>
+                    Type of the value put in the field.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="string">
+        <xs:annotation>
+            <xs:documentation>
+                String of type java.lang.String
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType mixed="true">
             <xs:attributeGroup ref="attlist.string"/>
         </xs:complexType>
@@ -114,9 +146,20 @@
         <xs:attribute type="xs:string" name="value"/>
     </xs:attributeGroup>
     <xs:element name="simple-methods">
+        <xs:annotation>
+            <xs:documentation>
+                Opening tag of simple-method files.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
-                <xs:element maxOccurs="unbounded" ref="simple-method"/>
+                <xs:element maxOccurs="unbounded" ref="simple-method">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Opening tag of a simple-method definition.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
             </xs:sequence>
         </xs:complexType>
     </xs:element>
@@ -392,20 +435,46 @@
         </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="set-service-fields" substitutionGroup="CallOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Take all the incoming files for this service, or all the incoming service attributes,
+                and look for fields with the same name in the incoming map and copy those onto the outgoing map.
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="service-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the service from which take all the incoming files, or all incoming attributes.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="map-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Incoming map to copy fields from.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="to-map-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Map to copy to fields to.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="call-service" substitutionGroup="CallOperations">
         <xs:annotation>
             <xs:documentation>
                 The call-service tag invokes a service through the Service Engine.
-                If the specified error code is returned from the service, the event is aborted and the transaction in the current thread is rolled back. Otherwise, the remaining operations are invoked.
+                If the specified error code is returned from the service,
+                the event is aborted and the transaction in the current thread is rolled back.
+                Otherwise, the remaining operations are invoked.
                 
                 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.
@@ -432,14 +501,35 @@
         </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 type="xs:string" name="service-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the service to call.    
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="in-map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    Optional name of a map in the method environment to use as the input map.
+                    If you're not going to pass any parameters to the service than you can just
+                    leave off the in-map name, although typically in a service tag you will see
+                    a service-name and the in-mapname passed in.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="include-user-login" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    Include-user-login by default will include the user login
+                    so if there is a user login for the current simple-method
+                    it will pass that in to the service. If you don't want it to
+                    pass that in you can just set this to false.                
+                    Defaults to "true".
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:annotation>
-                    <xs:documentation>
-                        Defaults to "true".
-                    </xs:documentation>
                 </xs:annotation>            
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -448,12 +538,17 @@
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="break-on-error" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    If there's an error in the service by default
+                    it will stop the current simple-method and return an
+                    error message that came from the service it called. If
+                    you don't want it to when there's an error you can just
+                    set that to false.
+                    Defaults to "true".
+                </xs:documentation>
+            </xs:annotation>            
             <xs:simpleType>
-                <xs:annotation>
-                    <xs:documentation>
-                        Defaults to "true".
-                    </xs:documentation>
-                </xs:annotation>                        
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
                     <xs:enumeration value="false"/>
@@ -474,84 +569,214 @@
                 </xs:documentation>
             </xs:annotation>                                    
         </xs:attribute>
+        <xs:attribute name="require-new-transaction" 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="transaction-timeout"/>
     </xs:attributeGroup>
     <xs:element name="error-prefix">
+        <xs:annotation>
+            <xs:documentation>
+                Specify a resource and a property to prepend to the error message.
+            </xs:documentation>
+        </xs:annotation>        
         <xs:complexType mixed="true">
             <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
         </xs:complexType>
     </xs:element>
     <xs:element name="error-suffix">
+        <xs:annotation>
+            <xs:documentation>
+                Specify a resource and a property to append to the error message.
+            </xs:documentation>
+        </xs:annotation>        
         <xs:complexType mixed="true">
             <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
         </xs:complexType>
     </xs:element>
     <xs:element name="success-prefix">
+        <xs:annotation>
+            <xs:documentation>
+                Specify a resource and a property to prepend to the success message.
+            </xs:documentation>
+        </xs:annotation>                
         <xs:complexType mixed="true">
             <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
         </xs:complexType>
     </xs:element>
     <xs:element name="success-suffix">
+        <xs:annotation>
+            <xs:documentation>
+                Specify a resource and a property to append to the success message.
+            </xs:documentation>
+        </xs:annotation>                
         <xs:complexType mixed="true">
             <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
         </xs:complexType>
     </xs:element>
     <xs:element name="message-prefix">
+        <xs:annotation>
+            <xs:documentation>
+                Specify a resource and a property to prepend to any kind of message.
+            </xs:documentation>
+        </xs:annotation>                        
         <xs:complexType mixed="true">
             <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
         </xs:complexType>
     </xs:element>
     <xs:element name="message-suffix">
+        <xs:annotation>
+            <xs:documentation>
+                Specify a resource and a property to append to any kind of message.
+            </xs:documentation>
+        </xs:annotation>                        
         <xs:complexType mixed="true">
             <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
         </xs:complexType>
     </xs:element>
     <xs:element name="default-message">
+        <xs:annotation>
+            <xs:documentation>
+                Message that you can specify for the case where the service does not return a message.
+                You can just specify a default-message to use as if the service had returned that default-message.                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType mixed="true">
             <xs:attributeGroup ref="attlist.propertyInfoOptional"/>
         </xs:complexType>
     </xs:element>
     <xs:element name="results-to-map">
+        <xs:annotation>
+            <xs:documentation>
+                results-to-map will take all of the results of the service,
+                the outgoing maps from the service and put them in a map of the given map-name.                
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="map-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of a map where results will be put in.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="result-to-field">
+        <xs:annotation>
+            <xs:documentation>
+                Specify the name of the field in the result and then the name of the field in the context you want to put it in,
+                and optionally the  name in the map.
+
+                There's a field-map there. If you don't specify a field-name then the result-name will be used for the field-name,
+                that's the name of the variable that will be created in the current context for the value of that result.                
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="result-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the result. May be used for the field-name. If you don't specify a field-name,
+                    that's the name of the variable that will be created in the current context for the value of that result.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    Optionnal map name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="field-name">
+            <xs:annotation>
+                <xs:documentation>
+                    Optionnal field name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="result-to-request">
+        <xs:annotation>
+            <xs:documentation>
+                result-to-request is event specific.
+                It takes the result with the given name and puts it in a request attribute with the given name here.
+                Again the request-name is optional.
+                If you leave it off then it will put it in an attribute with the name of the result-name.
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="result-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the result. May be used for the request attribute name. If you don't specify a request-name ,
+                    that's the name of the request attribute that will be created for the value of that result.                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="request-name">
+            <xs:annotation>
+                <xs:documentation>
+                    Optionnal request name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="result-to-session">
+        <xs:annotation>
+            <xs:documentation>
+                Specify the name of the session attribute that you want it to put the value in.
+                If you don't specify one it will use the result-name.
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="result-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the result. May be used for the session attribute name. If you don't specify a session-name ,
+                    that's the name of the session attribute that will be created for the value of that result.                                        
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="session-name">
+            <xs:annotation>
+                <xs:documentation>
+                    Optionnal session name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="result-to-result">
         <xs:annotation>
             <xs:documentation>
+                result-to-result is service specific (when the service is being called as a service).
+                
+                It will take the result of the service you're calling with the call service operation and it will put it in with the result of the current service.
+                So result-name is the name of the result in the service that was called using the call-service tag.
+                
                 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.
+                in other words FROM result-name and TO service-result-name.                
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -559,8 +784,20 @@
         </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:attribute type="xs:string" name="result-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the field in the result of this service call that the value comes FROM.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="service-result-name">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the field in the result of this simple-method called as a service where the value goes TO.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="call-service-asynch" substitutionGroup="CallOperations">
         <xs:annotation>
@@ -575,15 +812,27 @@
         </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 type="xs:string" name="service-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the service called asynchronously.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="in-map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of a map in the method environment to use as the input map.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="include-user-login" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    Defaults to "true".
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
-                <xs:annotation>
-                    <xs:documentation>
-                        Defaults to "true".
-                    </xs:documentation>
-                </xs:annotation>                                    
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
                     <xs:enumeration value="false"/>
@@ -615,9 +864,10 @@
         <xs:attribute type="xs:string" name="error-list-name" default="error_list">
             <xs:annotation>
                 <xs:documentation>
+                    The name of the list in the method environment to check for error messages.
                     Defaults to "error_list".
                 </xs:documentation>
-            </xs:annotation>                                                
+            </xs:annotation>
         </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="call-simple-method" substitutionGroup="CallOperations">
@@ -1031,7 +1281,7 @@
             </xs:annotation>
         </xs:attribute>
     </xs:attributeGroup>
-    <xs:element name="webapp-property-to-field" substitutionGroup="EventOperations">
+    <xs:element name="webapp-property-to-field" substitutionGroup="EventOperations">        
         <xs:annotation>
             <xs:documentation>
                 The webapp-property-to-field tag copies a property value from a properties file in a ServletContext resource to a field.                
@@ -1069,15 +1319,14 @@
         <xs:attribute type="xs:string" name="field-name" use="required">
             <xs:annotation>
                 <xs:documentation>
-                    The name of the map in the method environment.
-                    If not specified the field-name will be used to set the field in the method environment.
+                    The name (key) of the field to use.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="session-name">
             <xs:annotation>
                 <xs:documentation>
-                    The name (key) of the map field to use.
+                    The name of the session attribute to use. Defaults to the field-name.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
@@ -1140,7 +1389,8 @@
         <xs:attribute type="xs:string" name="to-map-name">
             <xs:annotation>
                 <xs:documentation>
-                    The name of the map in the method environment the fields will go to. If empty the fields will be copied to the environment.
+                    The name of the map in the method environment the fields will go to.
+                    If empty the fields will be copied to the environment.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
@@ -1159,7 +1409,8 @@
         <xs:attribute type="xs:string" name="map-name">
             <xs:annotation>
                 <xs:documentation>
-                    The name of the map in the method environment. If not specified the field-name will be used to get the field from the method environment.
+                    The name of the map in the method environment.
+                    If not specified the field-name will be used to get the field from the method environment.
                 </xs:documentation>
             </xs:annotation>            
         </xs:attribute>
@@ -1181,7 +1432,7 @@
     <xs:element name="list-to-list" substitutionGroup="EnvOperations">
         <xs:annotation>
             <xs:documentation>
-                
+                Copy a list to another list.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -1192,14 +1443,14 @@
         <xs:attribute type="xs:string" name="list-name" use="required">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Name of the list to copy from
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="to-list-name" use="required">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Name of the list to copy to
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
@@ -1207,7 +1458,7 @@
     <xs:element name="order-map-list" substitutionGroup="EnvOperations">
         <xs:annotation>
             <xs:documentation>
-                
+                Sort a list : ordered by fields names given in order-by attribute.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -1221,16 +1472,28 @@
         <xs:attribute type="xs:string" name="list-name" use="required">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Name of the list ordered by fields names given in order-by attribute.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
     </xs:attributeGroup>
-
     <xs:element name="set" substitutionGroup="EnvOperations">
         <xs:annotation>
             <xs:documentation>
-                
+                Move a value from one field to another field.
+                You can also take a value, just a string constant or a string
+                that is made up of a mixture of constant and flexible
+                string expansion variables, the ${} things, that will be
+                put in the field.
+                You can also specify a default value in the case that the
+                value evaluates to an empty string or the from field is
+                null or empty. Then the default-value will be used.
+                Again you can use the flexible string expander here, the
+                ${} syntax and such. It can also do a type conversion,
+                so going from whatever type the source data is in,
+                which would be a string value or whatever the variable
+                type is for a from field, it can convert that to any of
+                these types before setting it in the target field.                
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -1241,35 +1504,35 @@
         <xs:attribute type="xs:string" name="field" use="required">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Name of the field to copy value to.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="from-field">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Name of the field to copy value from.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="value">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Simple value to copy in field.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="default-value">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Default value to copy in field if value evaluates to an empty string or the from field is null or empty.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute name="type">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Type to convert to.
                 </xs:documentation>
             </xs:annotation>            
             <xs:simpleType>
@@ -1292,7 +1555,8 @@
         <xs:attribute name="set-if-null" default="false">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    If the source variable is null it should set it on the new field, and the default for that is false.
+                    If the source variable is null it will leave the target field as it was.
                 </xs:documentation>
             </xs:annotation>            
             <xs:simpleType>
@@ -1305,7 +1569,11 @@
         <xs:attribute name="set-if-empty" default="true">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    If the source value, either from a value or from a field, is empty, and
+                    empty-string an empty list or a null value. In this case
+                    it's set to true. If you don't want to set, if you want it to
+                    leave the target field alone when the source is empty,
+                    then you need to set this to false.
                 </xs:documentation>
             </xs:annotation>            
             <xs:simpleType>
@@ -1319,7 +1587,10 @@
     <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
+                NOTE: the prefix and suffix will only be used IFF the current string and the string to be appended are both not empty.
+                
+                So if the field does not exist then it will create a new field with this string value.
+                If it does exist then it will append this string value to the end.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -1327,17 +1598,73 @@
         </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:attribute type="xs:string" name="field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The field that you want string-append to operate on.
+                    This is the target field where the value will be put, and this is the string to append to
+                    that field. So if the field does not exist then it will create
+                    a new field with this string value. If it does exist then it
+                    will append this string value to the end.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="map-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the map in the method environment.
+                    If not specified the field-name will be used to get the field from the method environment.
+                </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 field-name.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="arg-list-name">
+            <xs:annotation>
+                <xs:documentation>
+                    arg-list-name is used to insert values from a list into
+                    the string using the object in the standard Java library
+                    that does this sort of string expresison with a { } brackets
+                    and a number, no dollar sign.
+                    This pattern of the arg-list-name with the prefix and
+                    suffix is something form the early days which is still
+                    supported, but the best thing to do here is just use the
+                    flexible string expander which is far more flexible and
+                    powerful. So you can have the prefix variables to expand
+                    and everything all mixed into one string.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="prefix">
+            <xs:annotation>
+                <xs:documentation>
+                    Used in conjunction with arg-list-name.
+                    String that will be prepended to the string,
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="suffix">
+            <xs:annotation>
+                <xs:documentation>
+                    Used in conjunction with arg-list-name.
+                    String that will be appended to the string,
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="string-to-list" substitutionGroup="EnvOperations">
         <xs:annotation>
             <xs:documentation>
-                
+                Take a string literally that can also have a flexible string expander and such in it,
+                and it will add it to a list.
+                Note that you can have an arg-listname for using the standard
+                Java style argument list where you have in the source
+                string numbers inside of { } brackets that represent the
+                number the index in the argument list to insert at that point.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -1348,28 +1675,37 @@
         <xs:attribute type="xs:string" name="string" use="required">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    String to add to the list named in list-name.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="list-name" use="required">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    List to add string to.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="arg-list-name">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    arg-list-name is used to insert values from a list into
+                    the string using the object in the standard Java library
+                    that does this sort of string expresison with a { } brackets
+                    and a number, no dollar sign.
+                    This pattern of the arg-list-name with the prefix and
+                    suffix is something form the early days which is still
+                    supported, but the best thing to do here is just use the
+                    flexible string expander which is far more flexible and
+                    powerful. So you can have the prefix variables to expand
+                    and everything all mixed into one string.                    
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="message-field-name">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    To insert a message above a field (used in conjunction with @fieldErrors FTL macro)
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
@@ -1403,14 +1739,14 @@
         <xs:attribute type="xs:string" name="format">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Format based on the type of the object (date,number, etc.).
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
         <xs:attribute type="xs:string" name="numeric-padding">
             <xs:annotation>
                 <xs:documentation>
-                    
+                    Padding to use if a numeric object is used.
                 </xs:documentation>
             </xs:annotation>
         </xs:attribute>
@@ -1475,7 +1811,11 @@
     <xs:element name="transaction-begin" substitutionGroup="EntityTxOperations">
         <xs:annotation>
             <xs:documentation>
+                The transaction-begin tag will begin a transaction if one is not already in place.
+                If a transaction is begun the environment field named as the began-transaction-name will be set to true, otherwise it will be set to false.
                 
+                Note that unless the simple-method is flagged to not use a transaction all simple-methods will be inside a transaction.
+                The same is true for service calls through the Service Engine.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
@@ -1483,34 +1823,93 @@
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.transaction-begin">
-        <xs:attribute type="xs:string" name="began-transaction-name" default="beganTransaction"/>
+        <xs:attribute type="xs:string" name="began-transaction-name" default="beganTransaction">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the method environment field that contains a Boolean specifying whether or not a transaction was begun in the current transaction demarcation.
+                    Defaults to "beganTransaction".
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="transaction-commit" substitutionGroup="EntityTxOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The transaction-commit tag will commit a transaction if a transaction was begun in the current demarcation context as represented by the environment field named as the began-transaction-name.
+                If the Boolean in that field is false no commit will be done.                
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="began-transaction-name" default="beganTransaction">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the method environment field that contains a Boolean specifying whether or not a transaction was begun in the current transaction demarcation.
+                    Defaults to "beganTransaction".                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="transaction-rollback" substitutionGroup="EntityTxOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The transaction-rollback tag will rollback a transaction if a transaction was begun in the current demarcation context as represented by the environment field named as the began-transaction-name.
+                If the Boolean in that field is false a set rollback only will operation will be done instead of rollback which will force the transaction to rollback regardless of which method or object is responsible for beginning and ending the transaction.                
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs: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:attribute type="xs:string" name="began-transaction-name" default="beganTransaction">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the method environment field that contains a Boolean specifying whether or not a transaction was begun in the current transaction demarcation.
+                    Defaults to "beganTransaction".
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:attributeGroup>    
     <xs:element name="sequenced-id-to-env" substitutionGroup="EntityMiscOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The sequenced-id-to-env tag gets a sequenced ID from the Entity Engine (through the delegator) and puts it in the specified method environment field.
+                The object will be a java.lang.Long, but can of course be converted to a String.
+            </xs:documentation>
+        </xs:annotation>        
         <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 type="xs:string" name="sequence-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the sequence to pass to the delegator.
+                    The same name must always be used for sequenced IDs that will be used for a certain entity field otherwise non-unique keys may result.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="env-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the method environment field the sequenced ID will be put in.                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="get-long-only" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    Get a numerical long value and put it there, so it does not do that by default.
+                    By default getlong-only is false. If you want it to just get a long number
+                    then you can set that to true. That's in there for supporting lower level functionality,
+                    but that's not the typical pattern used in OFBiz as we do use strings for sequencing.                    
+                </xs:documentation>
+            </xs:annotation>            
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -1518,31 +1917,105 @@
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
-        <xs:attribute type="xs:string" name="stagger-max"/>
+        <xs:attribute type="xs:string" name="stagger-max">
+            <xs:annotation>
+                <xs:documentation>
+                    By default this is one. But if you want to have sequenced Ids that are staggered, instead
+                    of consecutive, then you can set this to something like twenty. And then it will do a random staggering for
+                    each sequenced id; instead of picking the next value all the time it will pick something between the next value
+                    and twenty away from the next value, if stagger-max is set to twenty.
+                    So that can be used to make the sequenced Ids more difficult to guess.                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="make-next-seq-id" substitutionGroup="EntityMiscOperations">
+        <xs:annotation>
+            <xs:documentation>
+                
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="value-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="seq-field-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="numeric-padding" default="5">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="increment-by" default="1">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
 
     <xs:element name="entity-data" substitutionGroup="EntityMiscOperations">
+        <xs:annotation>
+            <xs:documentation>
+                
+            </xs:documentation>
+        </xs:annotation>
         <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 type="xs:string" name="location" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="delegator-name" use="optional">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:integer" name="timeout" default="-1">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="error-list-name" default="error_list">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the list in the method environment to check for error messages.
+                    Defaults to "error_list".
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="mode" default="load">
+            <xs:annotation>
+                <xs:documentation>
+                    
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="load"/>
@@ -1551,32 +2024,124 @@
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
-
     <xs:element name="find-by-primary-key" substitutionGroup="EntityFindOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The find-by-primary-key tag uses the delegator to find an entity value by its primary key.
+                The resulting GenericValue object will be placed in the method environment using the specified value-name.
+            </xs:documentation>
+        </xs:annotation>
         <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:attribute type="xs:string" name="entity-name" use="optional">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the entity to find an instance of.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="map-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of a map in the method environment that will be used for the entity fields.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="value-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the method environment field that contains the GenericValue object.
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="use-cache" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    Specifies whether or not the delegator's cache should be searched before going to the database.
+                    This results in much faster retrieval times, but can return stale data that is not the most current in the database.
+                    Must be "true" or "false", defaults to "false".
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="fields-to-select-list">
+            <xs:annotation>
+                <xs:documentation>
+                    List containing name of fields to select, if empty defaults to all entity fields.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="delegator-name">
+            <xs:annotation>
+                <xs:documentation>
+                    By default this operation is done using the delegator that is part of the simple-method calling context.
+                    This allows you to override the default delegator by naming an alternate delegator.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="find-by-and" substitutionGroup="EntityFindOperations">
+        <xs:annotation>
+            <xs:documentation>
+                The find-by-and tag uses the delegator to find entity values by anding the fields passed in the map.
+                The resulting GenericValue objects will be placed in the method environment using the specified list-name.
+            </xs:documentation>
+        </xs:annotation>
         <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 type="xs:string" name="entity-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the entity to find instances of.                    
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="map-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of a map in the method environment that will be used for the entity fields.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="order-by-list-name">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of a list in the method environment that contains a list of strings specifying fields to order the results by.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="delegator-name">
+            <xs:annotation>
+                <xs:documentation>
+                    By default this operation is done using the delegator that is part of the simple-method calling context.
+                    This allows you to override the default delegator by naming an alternate delegator.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="use-cache" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    Specifies whether or not the delegator's cache should be searched before going to the database.
+                    This results in much faster retrieval times, but can return stale data that is not the most current in the database.
+                    Must be "true" or "false", defaults to "false".
+                </xs:documentation>
+            </xs:annotation>            
+        </xs:attribute>
         <xs:attribute name="use-iterator" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    Specifies whether or not to use the EntityListIterator when doing the query.
+                    This is much more efficient for large data sets because the results are read incrementaly instead of all at once.
+                    Note that when using this the use-cache setting will be ignored.
+                    Also note that an EntityListIterator must be closed when you are finished, but this is done automatically by the iterate operation.
+                    Must be "true" or "false", defaults to "false".                
+                </xs:documentation>
+            </xs:annotation>                                    
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -1584,22 +2149,71 @@
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
-        <xs:attribute type="xs:string" name="list-name" use="required"/>
+        <xs:attribute type="xs:string" name="list-name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the method environment field that contains the list of GenericValue objects.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="entity-one" substitutionGroup="EntityFindOperations">
+        <xs:annotation>
+            <xs:documentation>
+                Does a find-by-primarykey, always returns a single generic value object if it's found, otherwise returns null.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="field-map"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="field-map">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Specify where to find primary key fields if you set auto-field-map to false.                            
+                        </xs:documentation>
+                    </xs:annotation>                    
+                </xs:element>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Specify fields to select, otherwise all fields will be selected.                            
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
             </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="entity-name" type="xs:string" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the entity to look for.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="value-name" type="xs:string" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the variable to put entity in.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="use-cache" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    Specifies whether or not the delegator's cache should be searched before going to the database.
+                    This results in much faster retrieval times, but can return stale data that is not the most current in the database.
+                    Must be "true" or "false", defaults to "false".
+