svn commit: r1361924 - in /ofbiz/site/dtds: ofbiz-properties.xsd services.xsd site-conf.xsd

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

svn commit: r1361924 - in /ofbiz/site/dtds: ofbiz-properties.xsd services.xsd site-conf.xsd

adrianc
Author: adrianc
Date: Mon Jul 16 07:17:58 2012
New Revision: 1361924

URL: http://svn.apache.org/viewvc?rev=1361924&view=rev
Log:
Updated some schemas.

Modified:
    ofbiz/site/dtds/ofbiz-properties.xsd
    ofbiz/site/dtds/services.xsd
    ofbiz/site/dtds/site-conf.xsd

Modified: ofbiz/site/dtds/ofbiz-properties.xsd
URL: http://svn.apache.org/viewvc/ofbiz/site/dtds/ofbiz-properties.xsd?rev=1361924&r1=1361923&r2=1361924&view=diff
==============================================================================
--- ofbiz/site/dtds/ofbiz-properties.xsd (original)
+++ ofbiz/site/dtds/ofbiz-properties.xsd Mon Jul 16 07:17:58 2012
@@ -18,31 +18,30 @@ specific language governing permissions
 under the License.
 -->
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
-    <xs:import namespace="http://www.w3.org/XML/1998/namespace"
-            schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd" />
+
+    <xs:complexType name="valueType">
+        <xs:simpleContent>
+            <xs:extension base="xs:string">
+                <xs:attribute ref="xml:lang" />
+            </xs:extension>
+        </xs:simpleContent>
+    </xs:complexType>
+
     <xs:element name="resource">
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="1" maxOccurs="unbounded" ref="property"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property" />
             </xs:sequence>
         </xs:complexType>
     </xs:element>
+
     <xs:element name="property">
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="1" maxOccurs="unbounded" name="value" type="valueType"/>
+                <xs:element minOccurs="1" maxOccurs="unbounded" name="value" type="valueType" />
             </xs:sequence>
-            <xs:attributeGroup ref="attlist.property"/>
+            <xs:attribute type="xs:string" name="key" use="required" />
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.property">
-        <xs:attribute type="xs:string" name="key" use="required"/>
-    </xs:attributeGroup>
-    <xs:complexType name="valueType">
-        <xs:simpleContent>
-            <xs:extension base="xs:string">
-                <xs:attribute ref="xml:lang"/>
-            </xs:extension>
-        </xs:simpleContent>
-    </xs:complexType>
 </xs:schema>

Modified: ofbiz/site/dtds/services.xsd
URL: http://svn.apache.org/viewvc/ofbiz/site/dtds/services.xsd?rev=1361924&r1=1361923&r2=1361924&view=diff
==============================================================================
--- ofbiz/site/dtds/services.xsd (original)
+++ ofbiz/site/dtds/services.xsd Mon Jul 16 07:17:58 2012
@@ -43,6 +43,7 @@ under the License.
                 <xs:element minOccurs="0" maxOccurs="1" ref="permission-service"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="required-permissions"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="implements"/>
+                <xs:element minOccurs="0" ref="metric"/>
                 <xs:choice maxOccurs="1" minOccurs="0">
                     <xs:choice minOccurs="0" maxOccurs="unbounded">
                         <xs:element ref="auto-attributes"/>
@@ -114,6 +115,19 @@ under the License.
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
+        <xs:attribute name="hideResultInLog" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    If set to true the result will be hidden from possible exposition in ServiceDispatcher.runSync()
+                </xs:documentation>
+            </xs:annotation>
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>        
         <xs:attribute name="transaction-timeout" type="xs:int" default="0">
             <xs:annotation>
                 <xs:documentation>
@@ -247,6 +261,48 @@ under the License.
 
         </xs:attribute>
     </xs:attributeGroup>
+    <xs:element name="metric">
+        <xs:annotation>
+            <xs:documentation>
+                Calculate and maintain an average response time for this service. Service metrics can be used
+                for monitoring and reporting.
+                &lt;br/&gt;&lt;br/&gt;
+                The metric works by gathering statistics until a configurable maximum is reached (number of
+                requests or elapsed time), then the average is calculated. A smoothing factor is used to
+                smooth differences between calculations.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute name="name" type="xs:string" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        Each metric must have a unique name.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="estimation-size" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        Positive integer number of requests to include in the metrics calculation. Defaults to "100".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="estimation-time" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        Positive integer number of milliseconds to include in the metrics calculation. Defaults to "1000".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="smoothing" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        Positive decimal smoothing factor - used to smooth the differences between calculations. A value of "1" disables smoothing. Defaults to "0.7".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
     <xs:element name="auto-attributes">
         <xs:complexType>
             <xs:sequence>

Modified: ofbiz/site/dtds/site-conf.xsd
URL: http://svn.apache.org/viewvc/ofbiz/site/dtds/site-conf.xsd?rev=1361924&r1=1361923&r2=1361924&view=diff
==============================================================================
--- ofbiz/site/dtds/site-conf.xsd (original)
+++ ofbiz/site/dtds/site-conf.xsd Mon Jul 16 07:17:58 2012
@@ -26,13 +26,13 @@ under the License.
                 <xs:element minOccurs="0" ref="owner"/>
                 <xs:element minOccurs="0" ref="errorpage"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="handler"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="protect"/>
+                <xs:element minOccurs="0" ref="protect"/>
                 <xs:element minOccurs="0" ref="firstvisit"/>
                 <xs:element minOccurs="0" ref="preprocessor"/>
                 <xs:element minOccurs="0" ref="postprocessor"/>
                 <xs:element minOccurs="0" ref="after-login"/>
                 <xs:element minOccurs="0" ref="before-logout"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="default-request"/>
+                <xs:element minOccurs="0" ref="default-request"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="request-map"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="view-map"/>
             </xs:sequence>
@@ -59,6 +59,12 @@ under the License.
     <xs:element name="owner" type="xs:string"/>
     <xs:element name="errorpage" type="xs:string"/>
     <xs:element name="handler">
+        <xs:annotation>
+            <xs:documentation>
+                Defines a Java class which handles a specific named type (either request or view).
+                This allows different logics for processing input from requests.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.handler"/>
         </xs:complexType>
@@ -66,16 +72,28 @@ under the License.
     <xs:attributeGroup name="attlist.handler">
         <xs:attribute type="xs:string" name="name" use="required"/>
         <xs:attribute name="type" default="request">
+            <xs:annotation>
+                <xs:documentation>
+                    To keep it short, request is for action when view is for rendering
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
-                    <xs:enumeration value="view"/>
                     <xs:enumeration value="request"/>
+                    <xs:enumeration value="view"/>
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute type="xs:string" name="class" use="required"/>
     </xs:attributeGroup>
     <xs:element name="protect">
+        <xs:annotation>
+            <xs:documentation>
+                Mechanism used to protect from data leakage (data stolen from a login/password couple compromised).
+                It works like the grey list anti-spam feature (aka tarpitting).
+                Any error will be ignored and will not affect the requests processing flow.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.protect"/>
         </xs:complexType>
@@ -84,6 +102,12 @@ under the License.
         <xs:attribute type="xs:string" name="view" use="required"/>
     </xs:attributeGroup>
     <xs:element name="firstvisit">
+        <xs:annotation>
+            <xs:documentation>
+                Event runs at the 1st visit and only then.
+                Any error will be ignored and will not affect the requests processing flow.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="event"/>
@@ -91,6 +115,12 @@ under the License.
         </xs:complexType>
     </xs:element>
     <xs:element name="preprocessor">
+        <xs:annotation>
+            <xs:documentation>
+                Event runs before each request.
+                Any error will be ignored and will not affect the requests processing flow.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="event"/>
@@ -98,6 +128,12 @@ under the License.
         </xs:complexType>
     </xs:element>
     <xs:element name="postprocessor">
+        <xs:annotation>
+            <xs:documentation>
+                Event runs after each request.
+                Any error will be ignored and will not affect the requests processing flow.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="event"/>
@@ -105,6 +141,12 @@ under the License.
         </xs:complexType>
     </xs:element>
     <xs:element name="after-login">
+        <xs:annotation>
+            <xs:documentation>
+                Event runs after login and only then.
+                Any error will be ignored and will not affect the requests processing flow.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="event"/>
@@ -112,6 +154,12 @@ under the License.
         </xs:complexType>
     </xs:element>
     <xs:element name="before-logout">
+        <xs:annotation>
+            <xs:documentation>
+                Event runs before logout and only then.
+                Any error will be ignored and will not affect the requests processing flow.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="event"/>
@@ -119,6 +167,11 @@ under the License.
         </xs:complexType>
     </xs:element>
     <xs:element name="default-request">
+        <xs:annotation>
+            <xs:documentation>
+                If a request cannot be called, or is not defined, the default-request is used
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.default-request"/>
         </xs:complexType>
@@ -127,10 +180,16 @@ under the License.
         <xs:attribute type="xs:string" name="request-uri" use="required"/>
     </xs:attributeGroup>
     <xs:element name="request-map">
+        <xs:annotation>
+            <xs:documentation>
+                Place where are defined the elements of a request.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" ref="description"/>
                 <xs:element minOccurs="0" ref="security"/>
+                <xs:element minOccurs="0" ref="metric"/>
                 <xs:element minOccurs="0" ref="event"/>
                 <xs:element maxOccurs="unbounded" ref="response"/>
             </xs:sequence>
@@ -138,8 +197,19 @@ under the License.
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.request-map">
-        <xs:attribute type="xs:string" name="uri" use="required"/>
+        <xs:attribute type="xs:string" name="uri" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of this request. This will be the name used to access the request.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="edit" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    Reserved for future use (not used yet).
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -148,23 +218,50 @@ under the License.
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="track-visit" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    Allow or not to track first visit (related to firstvisit preprocessor).
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="false">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Don't track as first visit (related to firstvisit preprocessor).
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="track-serverhit" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    Allow or not to track statistics.
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="false">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Don't track in the statistics.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="security">
+        <xs:annotation>
+            <xs:documentation>
+                Define the security of the request-map, using https and auth boolean attributes.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.security"/>
         </xs:complexType>
@@ -173,12 +270,23 @@ under the License.
         <xs:attribute name="https" default="false">
             <xs:simpleType>
                 <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="true">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Redirects to/uses/generates the secured HTTPS protocol if necessary and possible
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
                     <xs:enumeration value="false"/>
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="auth" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    If auth=true, when you hit the request if you are not logged in you will be forwarded to the login page.
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -187,6 +295,12 @@ under the License.
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="cert" default="false">
+            <xs:annotation>
+                <xs:documentation>
+                    It true, check for HTTPS client (x.509) security.
+                    If the request is not secured throws an exception
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -195,6 +309,13 @@ under the License.
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="external-view" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    If false, prevent to pass a view through the url ("chaining" it after the request,
+                    like control/request/view in an FTL file).
+                    Default to true.
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -203,6 +324,11 @@ under the License.
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="direct-request" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    If false the request can only be accessed in a chained request
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -211,17 +337,117 @@ under the License.
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
+    <xs:element name="metric">
+        <xs:annotation>
+            <xs:documentation>
+                Calculate and maintain an average response time for this request. Request metrics can be used
+                for monitoring and reporting. Metrics can also be used to trigger an alternate
+                response if the optional threshold attribute is used.
+                &lt;br/&gt;&lt;br/&gt;
+                The metric works by gathering statistics until a configurable maximum is reached (number of
+                requests or elapsed time), then the average is calculated. A smoothing factor is used to
+                smooth differences between calculations.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:attribute name="name" type="xs:string" use="required">
+                <xs:annotation>
+                    <xs:documentation>
+                        Each metric must have a unique name.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="estimation-size" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        Positive integer number of requests to include in the metrics calculation. Defaults to "100".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="estimation-time" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        Positive integer number of milliseconds to include in the metrics calculation. Defaults to "1000".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="smoothing" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        Positive decimal smoothing factor - used to smooth the differences between calculations. A value of "1" disables smoothing. Defaults to "0.7".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="threshold" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        The metric threshold in milliseconds. If the average response time exceeds this setting,
+                        then a "threshold-exceeded" response code will be generated. That response code can be used
+                        in a response element. The threshold check will ignore the first three requests - to give
+                        the metric a chance to stablize after startup. A value of "0.0" disables the threshold.
+                        Defaults to "0.0".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
     <xs:element name="event">
+        <xs:annotation>
+            <xs:documentation>
+                Defines a piece of code (see handlers) which will handles the request need.
+                Return any string which is then used to route to different responses.
+                Only one event by request-map.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.event"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.event">
-        <xs:attribute name="type" type="xs:string" use="required"/>
-        <xs:attribute name="name" type="xs:string"/>
-        <xs:attribute name="path" type="xs:string"/>
-        <xs:attribute name="invoke" type="xs:string"/>
+        <xs:attribute name="type" type="xs:string" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    There are as much as types (of type request) as available defined and accessible event handlers.
+                    Most used are java, service, service-multi, simple and bsf (or groovy).
+                    A most comprehensive list can be found in the common-controller.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="name" type="xs:string">
+            <xs:annotation>
+                <xs:documentation>
+                    Event name, mostly used with special events
+                    (firstvisit,
+                    preprocessor,
+                    postprocessor,
+                    after-login,
+                    before-logout)
+                    where the name allows to differentiate them.
+                    Most of the time reques-maps, which have only 1 event, don't use it.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="path" type="xs:string">
+            <xs:annotation>
+                <xs:documentation>
+                    The path to the class or XML file containing this event.
+                    Leave empty for services, except if you want to run it as a job, then use "async"
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="invoke" type="xs:string">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the method or service to be run.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="global-transaction" default="true">
+            <xs:annotation>
+                <xs:documentation>
+                    For service-multi, defines if the event should be wrapped in a transaction, default to true
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
@@ -231,47 +457,152 @@ under the License.
         </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="response">
+        <xs:annotation>
+            <xs:documentation>
+                You can have one response for each possible return code from the event.
+                An event can return any string, and that string can be used to route to different responses.
+                At least one reponse by request-map.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="redirect-parameter"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="redirect-parameter">
+                    <xs:annotation>
+                        <xs:documentation>
+                            Defines a possible parameter to redirect
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.response"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.response">
-        <xs:attribute name="name" type="xs:string" use="required"/>
+        <xs:attribute name="name" type="xs:string" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the response, wich also matches the string returned by the event
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="type" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    One of the possible types between:
+                    none,
+                    view,
+                    view-last,
+                    view-last-noparam,
+                    view-home,
+                    request,
+                    request-redirect,
+                    request-redirect-noparam,
+                    url,
+                    cross-redirect
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
-                    <xs:enumeration value="none"/>
-                    <xs:enumeration value="view"/>
+                    <xs:enumeration value="none">
+                        <xs:annotation>
+                            <xs:documentation>
+                                This is used in situations where the event will actually
+                                be generating the response. If you have an event that
+                                returns a binary download for example, you would use
+                                a response of type=none, so that the control servlet
+                                doesn't try to render anything and send it down to the
+                                client.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="view">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Send to a view for final rendering
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
                     <xs:enumeration value="view-last">
                         <xs:annotation>
-                            <xs:documentation>Will use the view from the last request unless there
+                            <xs:documentation>
+                                Will use the view from the last request unless there
                                 is a saved from some previous request (using the save-last-view
                                 attribute).  Use the value attribute to specify a default view
-                                in case no previous view can be retrieved.</xs:documentation>
+                                in case no previous view can be retrieved.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="view-last-noparam">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Same than view-last but no parameters are redirect
+                            </xs:documentation>
                         </xs:annotation>
                     </xs:enumeration>
-                    <xs:enumeration value="view-last-noparam"/>                            
                     <xs:enumeration value="view-home">
                         <xs:annotation>
-                            <xs:documentation>Will use the view from the last saved 'home' position
-                                (using the save-home-view attribute).</xs:documentation>
+                            <xs:documentation>
+                                Will use the view from the last saved 'home' position
+                                (using the save-home-view attribute).
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="request">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Internally chains to another request
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="request-redirect">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Send a redirect down to the browser telling it to go to the new request.
+                                Automatically redirect all current request parameters to the new request or only redirected parameters if specified.                                
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="request-redirect-noparam">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Send a redirect down to the browser telling it to go to the new request.
+                                No current request parameters are sent to the new request, nor redirected parameters if specified.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="url">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Any URL, relative or absolute. Redirected parameters are not used, you can put them in the url.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:enumeration>
+                    <xs:enumeration value="cross-redirect">
+                        <xs:annotation>
+                            <xs:documentation>
+                                Works like URL but you can also pass redirected parameters.
+                            </xs:documentation>
                         </xs:annotation>
                     </xs:enumeration>
-                    <xs:enumeration value="request"/>
-                    <xs:enumeration value="request-redirect"/>
-                    <xs:enumeration value="request-redirect-noparam"/>
-                    <xs:enumeration value="url"/>
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
-        <xs:attribute name="value" type="xs:string"/>
+        <xs:attribute name="value" type="xs:string">
+            <xs:annotation>
+                <xs:documentation>
+                    Depending on the type of response, will either
+                    be the view or request name (ie view-map-name or request-map URI).
+
+                    Can be an URL.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="save-last-view" default="false">
             <xs:annotation>
-                <xs:documentation>Saves the last (previous) request's view for future use, generally
-                    with the view-last type of response.</xs:documentation>
+                <xs:documentation>
+                    Saves the last (previous) request's view for future use, generally
+                    with the view-last type of response.
+                </xs:documentation>
             </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
@@ -282,8 +613,10 @@ under the License.
         </xs:attribute>
         <xs:attribute name="save-current-view" default="false">
             <xs:annotation>
-                <xs:documentation>Saves the current request's view for future use, generally with
-                    the view-last type of response.</xs:documentation>
+                <xs:documentation>
+                    Saves the current request's view for future use, generally with
+                    the view-last type of response.
+                </xs:documentation>
             </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
@@ -294,8 +627,10 @@ under the License.
         </xs:attribute>
         <xs:attribute name="save-home-view" default="false">
             <xs:annotation>
-                <xs:documentation>Saves the current request's view for future use, generally with
-                    the view-home type of response.</xs:documentation>
+                <xs:documentation>
+                    Saves the current request's view for future use, generally with
+                    the view-home type of response.
+                </xs:documentation>
             </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
@@ -307,25 +642,46 @@ under the License.
     </xs:attributeGroup>
     <xs:element name="redirect-parameter">
         <xs:annotation>
-            <xs:documentation>Adds a parameter with the given name to the redirect. Finds value in a
-                request attribute if exists, or a request parameter if no attribute is
-                found.</xs:documentation>
+            <xs:documentation>
+                Adds a parameter with the given name to the redirect. Finds value in a
+                request attribute if exists, or a request parameter if no attribute is found.
+            </xs:documentation>
         </xs:annotation>
         <xs:complexType>
             <xs:attributeGroup ref="attlist.redirect-parameter"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.redirect-parameter">
-        <xs:attribute type="xs:string" name="name" use="required"/>
+        <xs:attribute type="xs:string" name="name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    Name of the parameter to redirect
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute type="xs:string" name="from" use="optional">
             <xs:annotation>
-                <xs:documentation>If specified used instead of the value of name for the key to find
-                    a request attribute or parameter.</xs:documentation>
+                <xs:documentation>
+                    If specified used instead of the value of name for the key to find
+                    a request attribute or parameter.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="value" use="optional">
+            <xs:annotation>
+                <xs:documentation>
+                    Set a string value to the parameter.
+                </xs:documentation>
             </xs:annotation>
+            
         </xs:attribute>
-        <xs:attribute type="xs:string" name="value" use="optional"/>
     </xs:attributeGroup>
     <xs:element name="view-map">
+        <xs:annotation>
+            <xs:documentation>
+                Place where are defined the elements of a view.
+            </xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" ref="description"/>
@@ -334,22 +690,62 @@ under the License.
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.view-map">
-        <xs:attribute type="xs:string" name="name" use="required"/>
-        <xs:attribute type="xs:string" name="page"/>
-        <xs:attribute type="xs:string" name="type" default="default"/>
-        <xs:attribute type="xs:string" name="info"/>
-        <xs:attribute type="xs:string" name="content-type"/>
-        <xs:attribute type="xs:string" name="encoding"/>
+        <xs:attribute type="xs:string" name="name" use="required">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of this view. This will be the name used to access the view.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="page">
+            <xs:annotation>
+                <xs:documentation>
+                    The page mapped to this view.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="type" default="default">
+            <xs:annotation>
+                <xs:documentation>
+                    The name of the view handler that will render the output: screen, screenfop, ftl etc...
+                    A most comprehensive list can be found in the common-controller.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="info">
+            <xs:annotation>
+                <xs:documentation>
+                    Extended information passed to the view handler.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="content-type">
+            <xs:annotation>
+                <xs:documentation>
+                    Content-type in the HTML sense
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+        <xs:attribute type="xs:string" name="encoding">
+            <xs:annotation>
+                <xs:documentation>
+                    Charset  in the HTML sense. By default "text/html" is used.
+                    If the encoding is "none" then no charset will be used.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
         <xs:attribute name="no-cache" default="false">
             <xs:annotation>
-                <xs:documentation>Send no-cache headers if set to true.</xs:documentation>
-            </xs:annotation>        
+                <xs:documentation>
+                    Send no-cache headers if set to true.
+                </xs:documentation>
+            </xs:annotation>
             <xs:simpleType>
                 <xs:restriction base="xs:token">
                     <xs:enumeration value="true"/>
                     <xs:enumeration value="false"/>
                 </xs:restriction>
             </xs:simpleType>
-        </xs:attribute>        
+        </xs:attribute>
     </xs:attributeGroup>
 </xs:schema>