You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by er...@apache.org on 2012/11/13 22:47:31 UTC

svn commit: r1408976 [36/44] - in /ofbiz/branches/20120329_portletWidget: ./ applications/accounting/config/ applications/accounting/entitydef/ applications/accounting/src/org/ofbiz/accounting/payment/ applications/accounting/src/org/ofbiz/accounting/t...

Modified: ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-form.xsd
URL: http://svn.apache.org/viewvc/ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-form.xsd?rev=1408976&r1=1408975&r2=1408976&view=diff
==============================================================================
--- ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-form.xsd (original)
+++ ofbiz/branches/20120329_portletWidget/framework/widget/dtd/widget-form.xsd Tue Nov 13 21:47:18 2012
@@ -30,404 +30,431 @@ under the License.
     <xs:element name="form">
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="0" ref="actions"/>
-                <xs:element minOccurs="0" ref="row-actions"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="alt-row-style"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="alt-target"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="auto-fields-service"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="auto-fields-entity"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="on-event-update-area"/>
-                <xs:element minOccurs="0" ref="sort-order"/>
-            </xs:sequence>
-            <xs:attributeGroup ref="attlist.form"/>
-        </xs:complexType>
-    </xs:element>
-    <xs:attributeGroup name="attlist.form">
-        <xs:attribute name="name" type="xs:string" use="required"/>
-        <xs:attribute name="type">
-            <xs:annotation><xs:documentation>The form type is always required unless you are extending another form.</xs:documentation></xs:annotation>
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="single">
-                        <xs:annotation><xs:documentation>a single form is a simple single form with values from a single set of values</xs:documentation></xs:annotation>
-                    </xs:enumeration>
-                    <xs:enumeration value="list">
-                        <xs:annotation><xs:documentation>a list form is a list of individual forms in a table (could be called a tabular form), it has a list of sets of values and creates one form for each list element</xs:documentation></xs:annotation>
-                    </xs:enumeration>
-                    <xs:enumeration value="multi">
-                        <xs:annotation><xs:documentation>a multi form is like a list/tabular form, but it creates a single form to submit all list item forms at once; the field names in the resulting form have an appendage attached to make them unique according to the pattern used for the multi-service event handler that will call one service for each list element</xs:documentation></xs:annotation>
-                    </xs:enumeration>
-                    <xs:enumeration value="upload">
-                    </xs:enumeration>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="target" type="xs:string"/>
-        <xs:attribute name="target-window" type="xs:string"/>
-        <xs:attribute name="target-type" default="intra-app">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="intra-app"/>
-                    <xs:enumeration value="inter-app"/>
-                    <xs:enumeration value="content"/>
-                    <xs:enumeration value="plain"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="id" type="xs:string"/>
-        <xs:attribute name="style" type="xs:string"/>
-        <xs:attribute name="focus-field-name" type="xs:string"/>
-        <xs:attribute name="title" type="xs:string"/>
-        <xs:attribute name="tooltip" type="xs:string"/>
-        <xs:attribute name="list-name" type="xs:string">
-            <xs:annotation><xs:documentation>for list type and other multiple data/form types this is the name of the list in the context to iterate over</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="list-entry-name" type="xs:string">
-            <xs:annotation><xs:documentation>if specified each list entry will be put in the context with this name; otherwise the list entry must be a Map and the entries in the Map will be put into the context by name</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <!-- this is now deprecated, never made sense to separate anyway; use list-name instead <xs:attribute type="xs:string" name="list-iterator-name"/> -->
-        <xs:attribute type="xs:string" name="default-map-name"/>
-        <xs:attribute type="xs:string" name="default-entity-name"/>
-        <xs:attribute type="xs:string" name="default-service-name"/>
-        <xs:attribute type="xs:string" name="form-title-area-style">
-            <xs:annotation><xs:documentation>The form-title-area-style specifies the style to use in the header or title area for the form in a multi-form widget with all form fields rendered in one area.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="form-widget-area-style">
-            <xs:annotation><xs:documentation>The form-widget-area-style specifies the style to use in the main or widget area for the form in a multi-form widget with all form fields rendered in one area.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="default-title-area-style"/>
-        <xs:attribute type="xs:string" name="default-widget-area-style"/>
-        <xs:attribute type="xs:string" name="default-title-style"/>
-        <xs:attribute type="xs:string" name="default-widget-style"/>
-        <xs:attribute type="xs:string" name="default-tooltip-style"/>
-        <xs:attribute type="xs:string" name="default-required-field-style"/>
-        <xs:attribute type="xs:string" name="default-sort-field-style">
-            <xs:annotation><xs:documentation>CSS style to used for form sort fields. Defaults to "sort-order".</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="default-sort-field-asc-style">
-            <xs:annotation><xs:documentation>CSS style to used for form sort fields. Defaults to "sort-order-asc".</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="default-sort-field-desc-style">
-            <xs:annotation><xs:documentation>CSS style to used for form sort fields. Defaults to "sort-order-desc".</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate" default="${paginate}">
-            <xs:annotation><xs:documentation>Indicate if this form is paginated or not, true by default.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-target">
-            <xs:annotation><xs:documentation>Target location for the [Previous] and [Next] buttons in a form with pagination. Accepts ${} notation.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-target-anchor">
-            <xs:annotation><xs:documentation>Target anchor for the [Previous] and [Next] buttons in a form with pagination.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-size-field">
-            <xs:annotation><xs:documentation>The name of the parameter that specifies the number of rows to display for each page in a list form with multiple pages. The default is VIEW_SIZE. Accepts ${} notation.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-index-field">
-            <xs:annotation><xs:documentation>The name of the parameter that specifies what the current page is in a list form with multiple pages. The default is VIEW_INDEX Accepts ${} notation.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="override-list-size">
-            <xs:annotation><xs:documentation>The total number of rows in the original list (used for pagination). If not specified, the size of the list will be used. Accepts ${} notation.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-first-label">
-            <xs:annotation><xs:documentation>Text to display for the [First] button in a form with pagination. Defaults to the CommonFirst label defined in CommonUiLabels.xml. Accepts ${} notation.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-previous-label">
-            <xs:annotation><xs:documentation>Text to display for the [Previous] button in a form with pagination. Defaults to the CommonPrevious label defined in CommonUiLabels.xml. Accepts ${} notation.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-next-label">
-            <xs:annotation><xs:documentation>Text to display for the [Next] button in a form with pagination. Defaults to the CommonNext label defined in CommonUiLabels.xml. Accepts ${} notation.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-last-label">
-            <xs:annotation><xs:documentation>Text to display for the [Last] button in a form with pagination. Defaults to the CommonLast label defined in CommonUiLabels.xml. Accepts ${} notation.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="paginate-style">
-            <xs:annotation><xs:documentation>CSS style to use for the whole pager in a form with pagination. Defaults to "nav-pager".</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="item-index-separator" default="_o_"/>
-        <xs:attribute type="xs:string" name="extends"/>
-        <xs:attribute type="xs:string" name="extends-resource"/>
-        <xs:attribute name="separate-columns" default="false">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="group-columns" default="true">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute type="xs:integer" name="view-size">
-            <xs:annotation><xs:documentation>The number of items to display per page</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="row-count"/>
-        <xs:attribute name="use-row-submit" default="false">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="skip-start" default="false">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="skip-end" default="false">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="hide-header" 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="odd-row-style">
-            <xs:annotation><xs:documentation>The odd-row-style specifies the style to use in the table content odd rows.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="even-row-style">
-            <xs:annotation><xs:documentation>The even-row-style specifies the style to use in the table content even rows.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="header-row-style">
-            <xs:annotation><xs:documentation>The header-row-style specifies the style to use in the header of table.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="default-table-style">
-            <xs:annotation><xs:documentation>The default-table-style specifies the style to use in the table.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="client-autocomplete-fields" default="true">
-            <xs:annotation><xs:documentation>Tells the browser whether or not to try and autocomplete with values previously entered. Default 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>
-        <!-- not sure this is such a good idea
-        <xs:attribute type="xs:string" name="hidden-values-map-name">
-            <xs:annotation>
-                <xs:documentation>A map that contains hidden field name/value pairs.
-                    The reason for this is to eliminate the need to code custom forms so that auxiliary, passthru data can be sent to the server.
-                    By doing it this way, more standard forms can be used.
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-        -->
-        <xs:attribute name="validate-link-on-enter" default="false">
-            <xs:annotation><xs:documentation>in some case, a single form doest not include a submit button, instead it includes an hypperlink. setting this attribute to true wil result in click on the link when enter button is pressed on any form other input</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="validate-link-id" default="submit">
-            <xs:annotation><xs:documentation>in some case, a single form doest not include a submit button, instead it includes an hypperlink. setting this attribute to true wil result in click on the link when enter button is pressed on any form other input</xs:documentation></xs:annotation>
-        </xs:attribute>
-        
-    </xs:attributeGroup>
+                <xs:element minOccurs="0" ref="actions" />
+                <xs:element minOccurs="0" ref="row-actions" />
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="alt-row-style" />
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="alt-target" />
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="auto-fields-service" />
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="auto-fields-entity" />
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="field" />
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="on-event-update-area" />
+                <xs:element minOccurs="0" ref="sort-order" />
+            </xs:sequence>
+            <xs:attribute name="name" type="xs:string" use="required" />
+            <xs:attribute name="type">
+                <xs:annotation>
+                    <xs:documentation>The form type is always required unless you are extending another form.</xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="single">
+                            <xs:annotation>
+                                <xs:documentation>a single form is a simple single form with values from a single set of values</xs:documentation>
+                            </xs:annotation>
+                        </xs:enumeration>
+                        <xs:enumeration value="list">
+                            <xs:annotation>
+                                <xs:documentation>a list form is a list of individual forms in a table (could be called a tabular form), it has a list of sets of values and creates one form for each list element</xs:documentation>
+                            </xs:annotation>
+                        </xs:enumeration>
+                        <xs:enumeration value="multi">
+                            <xs:annotation>
+                                <xs:documentation>a multi form is like a list/tabular form, but it creates a single form to submit all list item forms at once; the field names in the resulting form have an appendage attached to make them unique according to the pattern used for the multi-service
+                                    event handler that will call one service for each list element</xs:documentation>
+                            </xs:annotation>
+                        </xs:enumeration>
+                        <xs:enumeration value="upload">
+                        </xs:enumeration>
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="target" type="xs:string" />
+            <xs:attribute name="target-window" type="xs:string" />
+            <xs:attribute name="target-type" default="intra-app">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="intra-app" />
+                        <xs:enumeration value="inter-app" />
+                        <xs:enumeration value="content" />
+                        <xs:enumeration value="plain" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="id" type="xs:string" />
+            <xs:attribute name="style" type="xs:string" />
+            <xs:attribute name="focus-field-name" type="xs:string" />
+            <xs:attribute name="title" type="xs:string" />
+            <xs:attribute name="tooltip" type="xs:string" />
+            <xs:attribute name="list-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>for list type and other multiple data/form types this is the name of the list in the context to iterate over</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="list-entry-name" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>if specified each list entry will be put in the context with this name; otherwise the list entry must be a Map and the entries in the Map will be put into the context by name</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <!-- this is now deprecated, never made sense to separate anyway; use list-name instead <xs:attribute type="xs:string" name="list-iterator-name"/> -->
+            <xs:attribute type="xs:string" name="default-map-name" />
+            <xs:attribute type="xs:string" name="default-entity-name" />
+            <xs:attribute type="xs:string" name="default-service-name" />
+            <xs:attribute type="xs:string" name="form-title-area-style">
+                <xs:annotation>
+                    <xs:documentation>The form-title-area-style specifies the style to use in the header or title area for the form in a multi-form widget with all form fields rendered in one area.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="form-widget-area-style">
+                <xs:annotation>
+                    <xs:documentation>The form-widget-area-style specifies the style to use in the main or widget area for the form in a multi-form widget with all form fields rendered in one area.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-title-area-style" />
+            <xs:attribute type="xs:string" name="default-widget-area-style" />
+            <xs:attribute type="xs:string" name="default-title-style" />
+            <xs:attribute type="xs:string" name="default-widget-style" />
+            <xs:attribute type="xs:string" name="default-tooltip-style" />
+            <xs:attribute type="xs:string" name="default-required-field-style" />
+            <xs:attribute type="xs:string" name="default-sort-field-style">
+                <xs:annotation>
+                    <xs:documentation>CSS style to used for form sort fields. Defaults to "sort-order".</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-sort-field-asc-style">
+                <xs:annotation>
+                    <xs:documentation>CSS style to used for form sort fields. Defaults to "sort-order-asc".</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-sort-field-desc-style">
+                <xs:annotation>
+                    <xs:documentation>CSS style to used for form sort fields. Defaults to "sort-order-desc".</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate" default="${paginate}">
+                <xs:annotation>
+                    <xs:documentation>Indicate if this form is paginated or not, true by default.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-target">
+                <xs:annotation>
+                    <xs:documentation>Target location for the [Previous] and [Next] buttons in a form with pagination. Accepts ${} notation.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-target-anchor">
+                <xs:annotation>
+                    <xs:documentation>Target anchor for the [Previous] and [Next] buttons in a form with pagination.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-size-field">
+                <xs:annotation>
+                    <xs:documentation>The name of the parameter that specifies the number of rows to display for each page in a list form with multiple pages. The default is VIEW_SIZE. Accepts ${} notation.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-index-field">
+                <xs:annotation>
+                    <xs:documentation>The name of the parameter that specifies what the current page is in a list form with multiple pages. The default is VIEW_INDEX Accepts ${} notation.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="override-list-size">
+                <xs:annotation>
+                    <xs:documentation>The total number of rows in the original list (used for pagination). If not specified, the size of the list will be used. Accepts ${} notation.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-first-label">
+                <xs:annotation>
+                    <xs:documentation>Text to display for the [First] button in a form with pagination. Defaults to the CommonFirst label defined in CommonUiLabels.xml. Accepts ${} notation.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-previous-label">
+                <xs:annotation>
+                    <xs:documentation>Text to display for the [Previous] button in a form with pagination. Defaults to the CommonPrevious label defined in CommonUiLabels.xml. Accepts ${} notation.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-next-label">
+                <xs:annotation>
+                    <xs:documentation>Text to display for the [Next] button in a form with pagination. Defaults to the CommonNext label defined in CommonUiLabels.xml. Accepts ${} notation.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-last-label">
+                <xs:annotation>
+                    <xs:documentation>Text to display for the [Last] button in a form with pagination. Defaults to the CommonLast label defined in CommonUiLabels.xml. Accepts ${} notation.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="paginate-style">
+                <xs:annotation>
+                    <xs:documentation>CSS style to use for the whole pager in a form with pagination. Defaults to "nav-pager".</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="item-index-separator" default="_o_" />
+            <xs:attribute type="xs:string" name="extends" />
+            <xs:attribute type="xs:string" name="extends-resource" />
+            <xs:attribute name="separate-columns" default="false">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="group-columns" default="true">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute type="xs:integer" name="view-size">
+                <xs:annotation>
+                    <xs:documentation>The number of items to display per page</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="row-count" />
+            <xs:attribute name="use-row-submit" default="false">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="skip-start" default="false">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="skip-end" default="false">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="hide-header" 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="odd-row-style">
+                <xs:annotation>
+                    <xs:documentation>The odd-row-style specifies the style to use in the table content odd rows.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="even-row-style">
+                <xs:annotation>
+                    <xs:documentation>The even-row-style specifies the style to use in the table content even rows.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="header-row-style">
+                <xs:annotation>
+                    <xs:documentation>The header-row-style specifies the style to use in the header of table.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-table-style">
+                <xs:annotation>
+                    <xs:documentation>The default-table-style specifies the style to use in the table.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="client-autocomplete-fields" default="true">
+                <xs:annotation>
+                    <xs:documentation>Tells the browser whether or not to try and autocomplete with values previously entered. Default 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>
+            <!--
+                not sure this is such a good idea <xs:attribute type="xs:string" name="hidden-values-map-name"> <xs:annotation> <xs:documentation>A map that contains hidden field name/value pairs. The reason for this is to eliminate the need to code custom forms so that auxiliary, passthru data can
+                be sent to the server. By doing it this way, more standard forms can be used. </xs:documentation> </xs:annotation> </xs:attribute>
+            -->
+            <xs:attribute name="validate-link-on-enter" default="false">
+                <xs:annotation><xs:documentation>in some case, a single form doest not include a submit button, instead it includes an hypperlink. setting this attribute to true wil result in click on the link when enter button is pressed on any form other input</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="validate-link-id" default="submit">
+                <xs:annotation><xs:documentation>in some case, a single form doest not include a submit button, instead it includes an hypperlink. setting this attribute to true wil result in click on the link when enter button is pressed on any form other input</xs:documentation></xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
     <xs:element name="alt-target">
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.alt-target"/>
+            <xs:attribute name="use-when" type="xs:string" use="required" />
+            <xs:attribute name="target" type="xs:string" />
+            <xs:attribute name="target-type" type="xs:string" />
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.alt-target">
-        <xs:attribute name="use-when" type="xs:string" use="required"/>
-        <xs:attribute name="target" type="xs:string"/>
-        <xs:attribute name="target-type" type="xs:string"/>
-    </xs:attributeGroup>
     <xs:element name="alt-row-style">
-        <xs:annotation><xs:documentation>Active a style on a line if the use-when condition is validate</xs:documentation></xs:annotation>
+        <xs:annotation>
+            <xs:documentation>Active a style on a line if the use-when condition is validate</xs:documentation>
+        </xs:annotation>
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.alt-row-style"/>
+            <xs:attribute name="use-when" type="xs:string" use="required">
+                <xs:annotation>
+                    <xs:documentation>Boolean expression tested for active the style on a line.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="style" type="xs:string" use="required">
+                <xs:annotation>
+                    <xs:documentation>If use-when return true, concat this style to existing style of the line.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.alt-row-style">
-        <xs:attribute name="use-when" type="xs:string" use="required">
-            <xs:annotation><xs:documentation>Boolean expression tested for active the style on a line.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="style" type="xs:string" use="required">
-            <xs:annotation><xs:documentation>If use-when return true, concat this style to existing style of the line.</xs:documentation></xs:annotation>
-        </xs:attribute>
-    </xs:attributeGroup>
     <xs:element name="auto-fields-service">
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.auto-fields-service"/>
+            <xs:attribute name="service-name" type="xs:string" use="required" />
+            <xs:attribute name="map-name" type="xs:string" />
+            <xs:attribute name="default-field-type" default="edit">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="edit" />
+                        <xs:enumeration value="find" />
+                        <xs:enumeration value="display" />
+                        <xs:enumeration value="hidden" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="default-position" type="xs:positiveInteger" default="1" />
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.auto-fields-service">
-        <xs:attribute name="service-name" type="xs:string" use="required"/>
-        <xs:attribute name="map-name" type="xs:string"/>
-        <xs:attribute name="default-field-type" default="edit">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="edit"/>
-                    <xs:enumeration value="find"/>
-                    <xs:enumeration value="display"/>
-                    <xs:enumeration value="hidden"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="default-position" type="xs:positiveInteger" default="1"/>
-    </xs:attributeGroup>
     <xs:element name="auto-fields-entity">
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.auto-fields-entity"/>
+            <xs:attribute name="entity-name" type="xs:string" use="required" />
+            <xs:attribute name="map-name" type="xs:string" />
+            <xs:attribute name="default-field-type" default="edit">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="edit" />
+                        <xs:enumeration value="find" />
+                        <xs:enumeration value="display" />
+                        <xs:enumeration value="hidden" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute type="xs:positiveInteger" name="default-position" default="1" />
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.auto-fields-entity">
-        <xs:attribute name="entity-name" type="xs:string" use="required"/>
-        <xs:attribute name="map-name" type="xs:string"/>
-        <xs:attribute name="default-field-type" default="edit">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="edit"/>
-                    <xs:enumeration value="find"/>
-                    <xs:enumeration value="display"/>
-                    <xs:enumeration value="hidden"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute type="xs:positiveInteger" name="default-position" default="1"/>
-    </xs:attributeGroup>
     <xs:element name="sort-order">
         <xs:complexType>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
-                <xs:element ref="sort-field"/>
-                <xs:element ref="last-field"/>
-                <xs:element ref="field-group"/>
-                <xs:element ref="banner"/>
+                <xs:element ref="sort-field" />
+                <xs:element ref="last-field" />
+                <xs:element ref="field-group" />
+                <xs:element ref="banner" />
             </xs:choice>
-            <xs:attributeGroup ref="attlist.sort-order"/>
+            <xs:attribute name="type" default="explicit">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="explicit" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.sort-order">
-        <xs:attribute name="type" default="explicit">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="explicit"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-    </xs:attributeGroup>
     <xs:element name="field-group">
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="sort-field"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="sort-field" />
             </xs:sequence>
-            <xs:attributeGroup ref="attlist.field-group"/>
+            <xs:attribute type="xs:string" name="title">
+                <xs:annotation>
+                    <xs:documentation>A unique name for this fields group.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="collapsible">
+                <xs:annotation>
+                    <xs:documentation>Indicate in this fields group is collapsible or not, false by default.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="initially-collapsed">
+                <xs:annotation>
+                    <xs:documentation>Indicate in this fields group is initially collapsed or not, false by default. If set to true implies collapsible even if not set</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="id">
+                <xs:annotation>
+                    <xs:documentation>Set an unique CSS identifier to this fields group.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="style">
+                <xs:annotation>
+                    <xs:documentation>Set a CSS style to this fields group.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.field-group">
-        <xs:attribute type="xs:string" name="title">
-            <xs:annotation><xs:documentation>A unique name for this fields group.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="collapsible">
-            <xs:annotation><xs:documentation>Indicate in this fields group is collapsible or not, false by default.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="initially-collapsed">
-            <xs:annotation><xs:documentation>Indicate in this fields group is initially collapsed or not, false by default. If set to true implies collapsible even if not set</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="id">
-            <xs:annotation><xs:documentation>Set an unique CSS identifier to this fields group.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="style">
-            <xs:annotation><xs:documentation>Set a CSS style to this fields group.</xs:documentation></xs:annotation>
-        </xs:attribute>
-    </xs:attributeGroup>
     <xs:element name="banner">
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.banner"/>
+            <xs:attribute type="xs:string" name="style" />
+            <xs:attribute type="xs:string" name="text" />
+            <xs:attribute type="xs:string" name="text-style" />
+            <xs:attribute type="xs:string" name="left-text" />
+            <xs:attribute type="xs:string" name="left-text-style" />
+            <xs:attribute type="xs:string" name="right-text" />
+            <xs:attribute type="xs:string" name="right-text-style" />
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.banner">
-        <xs:attribute type="xs:string" name="style"/>
-        <xs:attribute type="xs:string" name="text"/>
-        <xs:attribute type="xs:string" name="text-style"/>
-        <xs:attribute type="xs:string" name="left-text"/>
-        <xs:attribute type="xs:string" name="left-text-style"/>
-        <xs:attribute type="xs:string" name="right-text"/>
-        <xs:attribute type="xs:string" name="right-text-style"/>
-    </xs:attributeGroup>
     <xs:element name="sort-field">
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.sort-field"/>
-            <xs:attribute name="position" type="xs:positiveInteger"/>
+            <xs:attribute name="name" type="xs:string" use="required" />
+            <xs:attribute name="position" type="xs:positiveInteger" />
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.sort-field">
-        <xs:attribute name="name" type="xs:string" use="required"/>
-    </xs:attributeGroup>
     <xs:element name="last-field">
         <xs:annotation>
             <xs:documentation>last-field reorder the given field at the end form. This element is propagated to the inherited form</xs:documentation>
         </xs:annotation>
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.sort-field"/>
+            <xs:attribute name="name" type="xs:string" use="required" />
         </xs:complexType>
     </xs:element>
     <!-- ================== Form Events ==================== -->
-    <xs:attributeGroup name="attlist.on-form-event-update-area">
-        <xs:attribute name="event-type" use="required">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="paginate"/>
-                    <xs:enumeration value="submit"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="area-id" type="xs:string" use="required"/>
-        <xs:attribute name="area-target" type="xs:string" use="required"/>
-        <!--
-        <xs:attribute name="use-when" type="xs:string">
-            <xs:annotation><xs:documentation>
-                Used to specify a condition that must be true to use this field; the condition should be written using the 
-                Java syntax and can operate on values in the form context; conditional fields are evaluated in reverse 
-                order so the last field defined that evaluates to true is the one that is rendered.
-            </xs:documentation></xs:annotation>
-        </xs:attribute>
-        -->
-        <xs:attribute name="redirect-all-parameter" default="false">
-            <xs:annotation><xs:documentation>Usable only for type="submit", use all parameters returned by the submit as parameter for area-target.</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:attributeGroup>
     <xs:element name="on-event-update-area">
         <xs:annotation>
             <xs:documentation>Area to be updated when a form event occurs.</xs:documentation>
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter" />
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="redirect-parameter">
                   <xs:annotation><xs:documentation>
                       Usable only for type="submit", give parameter name returned by the submit to put as parameter for area-target.</xs:documentation></xs:annotation>
                 </xs:element>
             </xs:sequence>
-            <xs:attributeGroup ref="attlist.on-form-event-update-area"/>
+            <xs:attribute name="event-type" use="required">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="paginate" />
+                        <xs:enumeration value="submit" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="area-id" type="xs:string" use="required" />
+            <xs:attribute name="area-target" type="xs:string" use="required" />
+            <!--
+            <xs:attribute name="use-when" type="xs:string">
+                <xs:annotation><xs:documentation>
+                    Used to specify a condition that must be true to use this field; the condition should be written using the 
+                    Java syntax and can operate on values in the form context; conditional fields are evaluated in reverse 
+                    order so the last field defined that evaluates to true is the one that is rendered.
+                </xs:documentation></xs:annotation>
+            </xs:attribute>
+            -->
         </xs:complexType>
     </xs:element>
 
@@ -436,225 +463,262 @@ under the License.
     <xs:element name="field">
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="0" ref="AllFields"/>
+                <xs:element minOccurs="0" ref="AllFields" />
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="show-portlet">
                   <xs:annotation><xs:documentation>it's possible to generate multiple show-portlet with one click.</xs:documentation></xs:annotation>
                 </xs:element>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="on-field-event-update-area"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="on-field-event-update-area" />
             </xs:sequence>
-            <xs:attributeGroup ref="attlist.field"/>
-        </xs:complexType>
-    </xs:element>
-    <xs:attributeGroup name="attlist.field">
-        <xs:attribute type="xs:string" name="name" use="required">
-            <xs:annotation><xs:documentation>A unique name for this field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="map-name">
-            <xs:annotation><xs:documentation>The name (or location) of the map that contains the data for this field in the form context.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="entity-name">
-            <xs:annotation><xs:documentation>Used along with the field-name to look up the entity field definition for any information that might be helpful when rendering the form field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="field-name">
-            <xs:annotation><xs:documentation>See the description of entity-name.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="service-name">
-            <xs:annotation><xs:documentation>Used along with the attribute-name to look up the service attribute definition for any information that might be helpful when rendering the form field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="attribute-name">
-            <xs:annotation><xs:documentation>See the description of service-name.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="entry-name">
-            <xs:annotation><xs:documentation>Defaults to the value of the name attribute; is used to specify the name of the entry in the map that contains the value to populate.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="parameter-name">
-            <xs:annotation><xs:documentation>Defaults to the value of the name attribute; is the name of the parameter to use for this field (the request parameter in a web application).</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="title">
-            <xs:annotation><xs:documentation>The name of this field that will be shown to the user; can use the ${} and foo.bar (dot) syntax to insert values from the context for parameterization or internationalization.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="header-link">
-            <xs:annotation><xs:documentation>A link for this field in the header of a list form.  Useful for sorting a list form by different columns.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="header-link-style">
-            <xs:annotation><xs:documentation>The CSS style for a header-link.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="tooltip">
-            <xs:annotation><xs:documentation>The text to show on mouse over or help for more information; can use the ${} and foo.bar (dot) syntax to insert values from the context for parameterization or internationalization.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="title-area-style">
-            <xs:annotation><xs:documentation>The name of a style (like a CSS class) to apply to the area around the title of this field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="widget-area-style">
-            <xs:annotation><xs:documentation>The name of a style (like a CSS class) to apply to the area around the widget that the user will interact with for this field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="title-style">
-            <xs:annotation><xs:documentation>The name of a style (like a CSS class) to apply to the title of this field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="widget-style">
-            <xs:annotation><xs:documentation>The name of a style (like a CSS class) to apply to the widget that the user will interact with for this field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="tooltip-style">
-            <xs:annotation><xs:documentation>The name of a style (like a CSS class) to apply to the tooltip of this field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:positiveInteger" name="position" default="1">
-            <xs:annotation><xs:documentation>For row oriented forms (single type) can specify that the field should be put a column other than the first; for column oriented forms (list type) specifies the row the field should be put in.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="red-when" default="by-name">
-            <xs:annotation><xs:documentation>The widget/interaction part will be red if the date value is before-now (for thruDate), after-now (for fromDate), or by-name (if the field's name or entry-name or fromDate or thruDate the corresponding action will be done); only applicable when the field is a timestamp.</xs:documentation></xs:annotation>
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="never"/>
-                    <xs:enumeration value="before-now"/>
-                    <xs:enumeration value="after-now"/>
-                    <xs:enumeration value="by-name"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="use-when" type="xs:string">
-            <xs:annotation><xs:documentation>
-                Used to specify a condition that must be true to use this field; the condition should be written using the 
-                Java syntax and can operate on values in the form context; conditional fields are evaluated in reverse 
-                order so the last field defined that evaluates to true is the one that is rendered.
-            </xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="encode-output" default="true">
-            <xs:annotation><xs:documentation>
-                This is for textual output only. If true data shown in fields will be encoded so that it does not interfere with markup of the target output.
-                For example, if output is HTML then data presented will be HTML encoded so that all HTML-specific characters are escaped.
-            </xs:documentation></xs:annotation>
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="event">
-            <xs:annotation><xs:documentation>Used to specify a javascript event that may be attached to field.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="action">
-            <xs:annotation><xs:documentation>Used to specify a javascript action that should be run based on an existing specified event.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="id-name"/>
-        <xs:attribute name="separate-column" default="false">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="required-field">
-            <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="required-field-style">
-            <xs:annotation>
-                <xs:documentation>The name of a style (like a CSS class) to apply to the title of this field if required.
-                    Will default to form's default-required-field-style.
-                    If field is required, but required-field-style is empty, an '*' will be placed to the right of text,
-                    textarea and password fields.
+            <xs:attribute type="xs:string" name="name" use="required">
+                <xs:annotation>
+                    <xs:documentation>A unique name for this field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="map-name">
+                <xs:annotation>
+                    <xs:documentation>The name (or location) of the map that contains the data for this field in the form context.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="entity-name">
+                <xs:annotation>
+                    <xs:documentation>Used along with the field-name to look up the entity field definition for any information that might be helpful when rendering the form field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="field-name">
+                <xs:annotation>
+                    <xs:documentation>See the description of entity-name.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="service-name">
+                <xs:annotation>
+                    <xs:documentation>Used along with the attribute-name to look up the service attribute definition for any information that might be helpful when rendering the form field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="attribute-name">
+                <xs:annotation>
+                    <xs:documentation>See the description of service-name.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="entry-name">
+                <xs:annotation>
+                    <xs:documentation>Defaults to the value of the name attribute; is used to specify the name of the entry in the map that contains the value to populate.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="parameter-name">
+                <xs:annotation>
+                    <xs:documentation>Defaults to the value of the name attribute; is the name of the parameter to use for this field (the request parameter in a web application).</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="title">
+                <xs:annotation>
+                    <xs:documentation>The name of this field that will be shown to the user; can use the ${} and foo.bar (dot) syntax to insert values from the context for parameterization or internationalization.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="header-link">
+                <xs:annotation>
+                    <xs:documentation>A link for this field in the header of a list form. Useful for sorting a list form by different columns.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="header-link-style">
+                <xs:annotation>
+                    <xs:documentation>The CSS style for a header-link.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="tooltip">
+                <xs:annotation>
+                    <xs:documentation>The text to show on mouse over or help for more information; can use the ${} and foo.bar (dot) syntax to insert values from the context for parameterization or internationalization.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="title-area-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the area around the title of this field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="widget-area-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the area around the widget that the user will interact with for this field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="title-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the title of this field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="widget-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the widget that the user will interact with for this field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="tooltip-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the tooltip of this field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:positiveInteger" name="position" default="1">
+                <xs:annotation>
+                    <xs:documentation>For row oriented forms (single type) can specify that the field should be put a column other than the first; for column oriented forms (list type) specifies the row the field should be put in.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="red-when" default="by-name">
+                <xs:annotation>
+                    <xs:documentation>The widget/interaction part will be red if the date value is before-now (for thruDate), after-now (for fromDate), or by-name (if the field's name or entry-name or fromDate or thruDate the corresponding action will be done); only applicable when the field is a
+                        timestamp.</xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="never" />
+                        <xs:enumeration value="before-now" />
+                        <xs:enumeration value="after-now" />
+                        <xs:enumeration value="by-name" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="use-when" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>
+                        Used to specify a condition that must be true to use this field; the condition should be written using the
+                        Java syntax and can operate on values in the form context; conditional fields are evaluated in reverse
+                        order so the last field defined that evaluates to true is the one that is rendered.
+            </xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="encode-output" default="true">
+                <xs:annotation>
+                    <xs:documentation>
+                        This is for textual output only. If true data shown in fields will be encoded so that it does not interfere with markup of the target output.
+                        For example, if output is HTML then data presented will be HTML encoded so that all HTML-specific characters are escaped.
+            </xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="event">
+                <xs:annotation>
+                    <xs:documentation>Used to specify a javascript event that may be attached to field.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="action">
+                <xs:annotation>
+                    <xs:documentation>Used to specify a javascript action that should be run based on an existing specified event.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="id-name" />
+            <xs:attribute name="separate-column" default="false">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="required-field">
+                <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="required-field-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the title of this field if required.
+                        Will default to form's default-required-field-style.
+                        If field is required, but required-field-style is empty, an '*' will be placed to the right of text,
+                        textarea and password fields.
                 </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="sort-field" 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="sort-field-style">
-            <xs:annotation>
-                <xs:documentation>The name of a style (like a CSS class) to apply to the sort field link.
-                    Will default to form's default-sort-field-style.
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="sort-field" 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="sort-field-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the sort field link.
+                        Will default to form's default-sort-field-style.
                 </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="sort-field-asc-style">
-            <xs:annotation>
-                <xs:documentation>The name of a style (like a CSS class) to apply to the sort field link ordered ascending.
-                    Will default to form's default-sort-field-asc-style.
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="sort-field-asc-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the sort field link ordered ascending.
+                        Will default to form's default-sort-field-asc-style.
                 </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="sort-field-desc-style">
-            <xs:annotation>
-                <xs:documentation>The name of a style (like a CSS class) to apply to the sort field link ordered descending.
-                    Will default to form's default-sort-field-desc-style.
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="sort-field-desc-style">
+                <xs:annotation>
+                    <xs:documentation>The name of a style (like a CSS class) to apply to the sort field link ordered descending.
+                        Will default to form's default-sort-field-desc-style.
                 </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:attributeGroup>
+                </xs:annotation>
+            </xs:attribute>
+        </xs:complexType>
+    </xs:element>
 
   <!-- ================== FIELD TYPES ==================== -->
     <xs:element name="check" substitutionGroup="AllFields">
         <xs:complexType>
             <xs:choice minOccurs="0" maxOccurs="unbounded">
-                <xs:element ref="entity-options"/>
-                <xs:element ref="list-options"/>
-                <xs:element ref="option"/>
+                <xs:element ref="entity-options" />
+                <xs:element ref="list-options" />
+                <xs:element ref="option" />
             </xs:choice>
-            <xs:attributeGroup ref="attlist.check"/>
+            <xs:attribute name="all-checked">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.check">
-        <xs:attribute name="all-checked">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-    </xs:attributeGroup>
     <xs:element name="container" substitutionGroup="AllFields">
-        <xs:complexType>
-        </xs:complexType>
+        <xs:complexType />
     </xs:element>
     <xs:element name="date-find" substitutionGroup="AllFields">
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.date-find"/>
+            <xs:attribute name="type" default="timestamp">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="timestamp" />
+                        <xs:enumeration value="date" />
+                        <xs:enumeration value="time" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-value" />
+            <xs:attribute name="default-option-from" default="equals">
+                <xs:simpleType>
+                    <xs:restriction base="xs:string">
+                        <xs:enumeration value="equals" />
+                        <xs:enumeration value="sameDay" />
+                        <xs:enumeration value="greaterThanFromDayStart" />
+                        <xs:enumeration value="greaterThan" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="default-option-thru" default="lessThan">
+                <xs:simpleType>
+                    <xs:restriction base="xs:string">
+                        <xs:enumeration value="lessThan" />
+                        <xs:enumeration value="upToDay" />
+                        <xs:enumeration value="upThruDay" />
+                        <xs:enumeration value="empty" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.date-find">
-        <xs:attribute name="type" default="timestamp">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="timestamp"/>
-                    <xs:enumeration value="date"/>
-                    <xs:enumeration value="time"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="default-value"/>
-        <xs:attribute name="default-option-from" default="equals">
-            <xs:simpleType>
-                <xs:restriction base="xs:string">
-                    <xs:enumeration value="equals"/>
-                    <xs:enumeration value="sameDay"/>
-                    <xs:enumeration value="greaterThanFromDayStart"/>
-                    <xs:enumeration value="greaterThan"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="default-option-thru" default="lessThan">
-            <xs:simpleType>
-                <xs:restriction base="xs:string">
-                    <xs:enumeration value="lessThan"/>
-                    <xs:enumeration value="upToDay"/>
-                    <xs:enumeration value="upThruDay"/>
-                    <xs:enumeration value="empty"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-    </xs:attributeGroup>
     <xs:element name="date-time" substitutionGroup="AllFields">
         <xs:annotation>
             <xs:documentation>
@@ -663,320 +727,356 @@ under the License.
             </xs:documentation>
         </xs:annotation>
         <xs:complexType>
-            <xs:attributeGroup ref="attlist.date-time"/>
+            <xs:attribute name="type" default="timestamp">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="timestamp" />
+                        <xs:enumeration value="date" />
+                        <xs:enumeration value="time" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-value" />
+            <xs:attribute name="input-method" default="text">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="text" />
+                        <xs:enumeration value="time-dropdown" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="clock" default="24">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="12" />
+                        <xs:enumeration value="24" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="step" default="1">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="1" />
+                        <xs:enumeration value="5" />
+                        <xs:enumeration value="10" />
+                        <xs:enumeration value="15" />
+                        <xs:enumeration value="30" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute name="mask" default="N">
+                <xs:annotation>
+                    <xs:documentation>Will use the type value if set to yes, add a masked input</xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="Y" />
+                        <xs:enumeration value="N" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.date-time">
-        <xs:attribute name="type" default="timestamp">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="timestamp"/>
-                    <xs:enumeration value="date"/>
-                    <xs:enumeration value="time"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="default-value"/>
-        <xs:attribute name="input-method" default="text">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="text"/>
-                    <xs:enumeration value="time-dropdown"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="clock" default="24">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="12"/>
-                    <xs:enumeration value="24"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="step" default="1">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="1"/>
-                    <xs:enumeration value="5"/>
-                    <xs:enumeration value="10"/>
-                    <xs:enumeration value="15"/>
-                    <xs:enumeration value="30"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute name="mask" default="N">
-            <xs:annotation><xs:documentation>Will use the type value if set to yes, add a masked input</xs:documentation></xs:annotation>
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="Y"/>
-                    <xs:enumeration value="N"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-    </xs:attributeGroup>
     <xs:element name="display" substitutionGroup="AllFields">
         <xs:complexType>
             <xs:sequence>
-                <xs:element ref="in-place-editor" minOccurs="0" maxOccurs="1"/>
+                <xs:element ref="in-place-editor" minOccurs="0" maxOccurs="1" />
             </xs:sequence>
-            <xs:attributeGroup ref="attlist.display"/>
+            <xs:attribute name="also-hidden" default="true">
+                <xs:annotation>
+                    <xs:documentation>If set to true, an hidden form field is also rendered, with the name of the field and its content.</xs:documentation>
+                </xs:annotation>
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />
+                        <xs:enumeration value="false" />
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="description">
+                <xs:annotation>
+                    <xs:documentation>Specifies the string to display, can use the ${} syntax to insert context values; if empty the value of the field will be printed for a default.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:integer" name="size">
+                <xs:annotation>
+                    <xs:documentation>Specifies the size of the field (as a number of characters), when the text to display exceed the given size it is truncated and add the complete text as a hint</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="type" default="text">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="text" />
+                        <xs:enumeration value="currency" />
+                        <xs:enumeration value="date">
+                            <xs:annotation>
+                                <xs:documentation>Display only the date part of a timestamp field</xs:documentation>
+                            </xs:annotation>
+                        </xs:enumeration>
+                        <xs:enumeration value="date-time">
+                            <xs:annotation>
+                                <xs:documentation>Display only the date and hours:minutes part of a timestamp field</xs:documentation>
+                            </xs:annotation>
+                        </xs:enumeration>
+                        <xs:enumeration value="image">
+                            <xs:annotation>
+                                <xs:documentation>Display the image specified in image-location</xs:documentation>
+                            </xs:annotation>
+                        </xs:enumeration>
+                        <xs:enumeration value="accounting-number">
+                            <xs:annotation>
+                                <xs:documentation>Display negatives in parentheses (configurable, see arithmetic.properties)</xs:documentation>
+                            </xs:annotation>
+                        </xs:enumeration>
+                    </xs:restriction>
+                </xs:simpleType>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="currency">
+                <xs:annotation>
+                    <xs:documentation>Specifies the currency uom ID used to format context value, should generally use the ${} syntax to retrieve value.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="image-location">
+                <xs:annotation>
+                    <xs:documentation>Specifies the image to display.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute type="xs:string" name="default-value">
+                <xs:annotation>
+                    <xs:documentation>Specifies a string to be displayed if the field is empty.</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
         </xs:complexType>
     </xs:element>
-    <xs:attributeGroup name="attlist.display">
-        <xs:attribute name="also-hidden" default="true">
-            <xs:annotation><xs:documentation>If set to true, an hidden form field is also rendered, with the name of the field and its content.</xs:documentation></xs:annotation>
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="true"/>
-                    <xs:enumeration value="false"/>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="description">
-            <xs:annotation><xs:documentation>Specifies the string to display, can use the ${} syntax to insert context values; if empty the value of the field will be printed for a default.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:integer" name="size">
-            <xs:annotation><xs:documentation>Specifies the size of the field (as a number of characters), when the text to display exceed the given size it is truncated and add the complete text as a hint</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute name="type" default="text">
-            <xs:simpleType>
-                <xs:restriction base="xs:token">
-                    <xs:enumeration value="text"/>
-                    <xs:enumeration value="currency"/>
-                    <xs:enumeration value="date">
-                        <xs:annotation><xs:documentation>Display only the date part of a timestamp field</xs:documentation></xs:annotation>
-                    </xs:enumeration>
-                    <xs:enumeration value="date-time">
-                        <xs:annotation><xs:documentation>Display only the date and hours:minutes part of a timestamp field</xs:documentation></xs:annotation>
-                    </xs:enumeration>
-                    <xs:enumeration value="image">
-                        <xs:annotation><xs:documentation>Display the image specified in image-location</xs:documentation></xs:annotation>
-                    </xs:enumeration>
-                    <xs:enumeration value="accounting-number">
-                        <xs:annotation><xs:documentation>Display negatives in parentheses (configurable, see arithmetic.properties)</xs:documentation></xs:annotation>
-                    </xs:enumeration>
-                </xs:restriction>
-            </xs:simpleType>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="currency">
-            <xs:annotation><xs:documentation>Specifies the currency uom ID used to format context value, should generally use the ${} syntax to retrieve value.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="image-location">
-            <xs:annotation><xs:documentation>Specifies the image to display.</xs:documentation></xs:annotation>
-        </xs:attribute>
-        <xs:attribute type="xs:string" name="default-value">
-            <xs:annotation><xs:documentation>Specifies a string to be displayed if the field is empty.</xs:documentation></xs:annotation>
-        </xs:attribute>
-    </xs:attributeGroup>
     <xs:element name="display-entity" substitutionGroup="AllFields">
-        <xs:annotation><xs:documentation>This is just like display but looks up a description using the Entity Engine; note that if also-hidden is true then it uses the key as the value, not the shown description.</xs:documentation></xs:annotation>
+        <xs:annotation>
+            <xs:documentation>This is just like display but looks up a description using the Entity Engine; note that if also-hidden is true then it uses the key as the value, not the shown description.</xs:documentation>
+        </xs:annotation>
         <xs:complexType>
             <xs:sequence>
-                <xs:element minOccurs="0" ref="sub-hyperlink"/>
+                <xs:element minOccurs="0" ref="sub-hyperlink" />
             </xs:sequence>
-            <xs:attributeGroup ref="attlist.display-entity"/>
+            <xs:attribute type="xs:string" name="entity-name" use="required" />
+            <xs:attribute type="xs:string" name="key-field-name" />
+            <xs:attribute type="xs:string" name="description" default="${description}" />
+            <xs:attribute type="xs:integer" name="size">
+                <xs:annotation>
+                    <xs:documentation>Specifies the size of the field (as a number of characters), when the text to display exceed the given size it is truncated and add the complete text as a hint</xs:documentation>
+                </xs:annotation>
+            </xs:attribute>
+            <xs:attribute name="cache" default="true">
+                <xs:simpleType>
+                    <xs:restriction base="xs:token">
+                        <xs:enumeration value="true" />

[... 2397 lines stripped ...]