blob: 09889ac74a752731574852b75deeb7f731646148 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:include schemaLocation="http://ofbiz.apache.org/dtds/widget-common.xsd" />
<!-- ================== FORMS ==================== -->
<xs:element name="forms">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="form"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<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: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="sort-field-parameter-name">
<xs:annotation>
<xs:documentation>
The name of the request parameter that is used for specifying the sorted column. This is required when you
have more than one list on a screen - each list must use its own sort field parameter. Defaults to "sortField".
</xs:documentation>
</xs:annotation>
</xs:attribute>
<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:complexType>
</xs:element>
<xs:element name="alt-target">
<xs:complexType>
<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: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:complexType>
<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:element name="auto-fields-service">
<xs:complexType>
<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:element name="auto-fields-entity">
<xs:complexType>
<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: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:choice>
<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:element name="field-group">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sort-field" />
</xs:sequence>
<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:element name="banner">
<xs:complexType>
<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:element name="sort-field">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="position" type="xs:positiveInteger" />
</xs:complexType>
</xs:element>
<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:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<!-- ================== Form Events ==================== -->
<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" ref="auto-parameters-service"/>
<xs:element minOccurs="0" ref="auto-parameters-entity"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter" />
</xs:sequence>
<xs:attribute name="event-type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="paginate" />
<xs:enumeration value="sort-column" />
<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:complexType>
</xs:element>
<!-- ================== FIELDS ==================== -->
<xs:element name="AllFields" abstract="true"/>
<xs:element name="field">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="AllFields" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="on-field-event-update-area" />
</xs:sequence>
<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:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="sort-field-help-text">
<xs:annotation>
<xs:documentation>Help text to be displayed when the mouse hovers over the column heading.
</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: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:documentation>
</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:choice>
<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:element name="container" substitutionGroup="AllFields">
<xs:complexType />
</xs:element>
<xs:element name="date-find" substitutionGroup="AllFields">
<xs:complexType>
<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:element name="date-time" substitutionGroup="AllFields">
<xs:annotation>
<xs:documentation>
A special entry for date-time fields; may just have a default size text
entry box and some sort of widget to make date entry/selection easier.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<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:attribute name="placeholder" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies a short hint that describes the expected value of an input field.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="display" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element ref="in-place-editor" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<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: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:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<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" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<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:complexType>
</xs:element>
<xs:element name="drop-down" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element ref="auto-complete" minOccurs="0" maxOccurs="1" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="entity-options" />
<xs:element ref="list-options" />
<xs:element ref="option" />
</xs:choice>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<xs:attribute name="allow-empty" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="allow-multiple" 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="current" default="first-in-list">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="first-in-list" />
<xs:enumeration value="selected" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:string" name="no-current-selected-key">
<xs:annotation>
<xs:documentation>The key to mark as selected when there is no current entry value.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:integer" name="size" default="1" />
<xs:attribute type="xs:string" name="current-description" />
<xs:attribute type="xs:integer" name="other-field-size" default="0">
<xs:annotation>
<xs:documentation>If non-zero, a text field will conditionally show
next to the select control to implement a crude "combo box".
In order for this to work there must be a option in the select as:
&lt;option key=&quot;_OTHER_&quot; description=&quot;Specify other&quot;/&gt;
- with '_OTHER_' being required and any 'description' allowed.
In order to use this feature, the javascript code contained in the file:
images/webapp/images/combobox.js must be included in the page.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:integer" name="text-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:complexType>
</xs:element>
<xs:element name="file" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<xs:attribute type="xs:positiveInteger" name="size" default="25" />
<xs:attribute type="xs:positiveInteger" name="maxlength" />
<xs:attribute type="xs:string" name="default-value" />
<xs:attribute name="client-autocomplete-field" 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>
</xs:complexType>
</xs:element>
<xs:element name="hidden" substitutionGroup="AllFields">
<xs:complexType>
<xs:attribute type="xs:string" name="value" />
</xs:complexType>
</xs:element>
<xs:element name="hyperlink" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="auto-parameters-service"/>
<xs:element minOccurs="0" ref="auto-parameters-entity"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter" />
</xs:sequence>
<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 name="link-type" default="auto">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="auto">
<xs:annotation>
<xs:documentation>If selected the hidden-form type will be used if the url-mode is intra-app and the request specified has an event, otherwise the anchor type will be used.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="anchor" />
<xs:enumeration value="hidden-form" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<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 type="xs:string" name="target" use="required">
<xs:annotation>
<xs:documentation>The target location of the hyperlink; can use the ${} syntax to substitute values from the context.</xs:documentation>
</xs:annotation>
</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:string" name="target-window" />
<xs:attribute type="xs:string" name="alternate">
<xs:annotation>
<xs:documentation>Alternate text if the image is not found at image-location</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="image-title">
<xs:annotation>
<xs:documentation>Use as a title for the HTML img tag</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="image-location" />
<xs:attribute name="request-confirmation" default="false">
<xs:annotation>
<xs:documentation>If true then the user is presented with a dialog box, if confirmation-message is empty, use default</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="confirmation-message" type="xs:string">
<xs:annotation>
<xs:documentation>The message displayed in confirmation box</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="parameters-map" type="xs:string">
<xs:annotation>
<xs:documentation>A Map in the context that will be used as additional name/value pairs.</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:complexType>
</xs:element>
<xs:element name="parameter">
<xs:complexType>
<xs:attribute type="xs:string" name="param-name" use="required" />
<xs:attribute type="xs:string" name="from-field" />
<xs:attribute type="xs:string" name="value" />
</xs:complexType>
</xs:element>
<xs:element name="auto-parameters-service">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="exclude"/>
</xs:sequence>
<xs:attribute name="service-name" type="xs:string">
<xs:annotation>
<xs:documentation>The service name used to resolve parameters. If empty, use form defaultServiceName. Flexible string allowed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="send-if-empty" default="true">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="auto-parameters-entity">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="exclude"/>
</xs:sequence>
<xs:attribute name="entity-name" type="xs:string">
<xs:annotation>
<xs:documentation>The entity name used to resolve parameters. If empty use form defaultEntityName attribute. Flexible string allowed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="include" default="pk">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="pk"/>
<xs:enumeration value="nonpk"/>
<xs:enumeration value="all"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="send-if-empty" default="true">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
<xs:enumeration value="false"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="exclude">
<xs:complexType>
<xs:attribute name="field-name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ignored" substitutionGroup="AllFields">
<xs:complexType/>
</xs:element>
<xs:element name="image" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<xs:attribute type="xs:string" name="style" />
<xs:attribute type="xs:string" name="value" />
<xs:attribute type="xs:string" name="default-value" />
<xs:attribute type="xs:string" name="description" />
<xs:attribute type="xs:string" name="alternate" />
</xs:complexType>
</xs:element>
<xs:element name="lookup" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<xs:attribute type="xs:string" name="target-form-name" use="required" />
<xs:attribute type="xs:nonNegativeInteger" name="size" default="25" />
<xs:attribute type="xs:positiveInteger" name="maxlength" />
<xs:attribute type="xs:string" name="default-value" />
<xs:attribute type="xs:string" name="description-field-name">
<xs:annotation>
<xs:documentation>
The name of a field whose value is also filled when coming back from lookup selection.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="target-parameter">
<xs:annotation>
<xs:documentation>The name of a field whose value is passed in as a parameter to the lookup target form.
Can be a comma separated list. You need to affect it the value using parameters.parmI
(where I is the position number in the list, I must begin at 0) in the related lookup screen.
See LookupPreferredContactMech as example
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="client-autocomplete-field" 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>
<xs:attribute name="read-only" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="presentation" default="layer">
<xs:annotation>
<xs:documentation>
Shows the lookup as moveable and resizable layer or popup window.
Default to layer.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="layer" />
<xs:enumeration value="window" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:string" name="height">
<xs:annotation>
<xs:documentation>Only layer height. I.e. 250px, 12%</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="width">
<xs:annotation>
<xs:documentation>Only layer width. I.e. 250px, 12%</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="position" default="topleft">
<xs:annotation>
<xs:documentation>Only for layer positionining. Default to topleft corner.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="center" />
<xs:enumeration value="left" />
<xs:enumeration value="right" />
<xs:enumeration value="topleft" />
<xs:enumeration value="topright" />
<xs:enumeration value="topcenter" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="fade-background" default="true">
<xs:annotation>
<xs:documentation>If true the window background will be faded, default to true.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="initially-collapsed" default="false">
<xs:annotation>
<xs:documentation>If true the search screenlet is collapsed intially, default to false.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="show-description" type="xs:boolean">
<xs:annotation>
<xs:documentation>If true, a special span with css class "tooltip" will be created at right of the lookup button
and a description will fill in.
If not set then it depends on the "widget.lookup.showDescription" setting.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="password" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<xs:attribute type="xs:positiveInteger" name="size" default="25" />
<xs:attribute type="xs:positiveInteger" name="maxlength" />
<xs:attribute type="xs:string" name="default-value" />
<xs:attribute name="client-autocomplete-field" 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>
</xs:complexType>
</xs:element>
<xs:element name="radio" 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:choice>
<xs:attribute type="xs:string" name="no-current-selected-key" />
</xs:complexType>
</xs:element>
<xs:element name="range-find" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<xs:attribute type="xs:positiveInteger" name="size" default="25" />
<xs:attribute type="xs:positiveInteger" name="maxlength" />
<xs:attribute type="xs:string" name="default-value" />
<xs:attribute name="client-autocomplete-field" 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>
<xs:attribute name="default-option-from" default="greaterThanEqualTo">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="equals" />
<xs:enumeration value="greaterThan" />
<xs:enumeration value="greaterThanEqualTo" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="default-option-thru" default="lessThanEqualTo">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="lessThan" />
<xs:enumeration value="lessThanEqualTo" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="reset" substitutionGroup="AllFields">
<xs:complexType/>
</xs:element>
<xs:element name="submit" substitutionGroup="AllFields">
<xs:complexType>
<xs:attribute name="button-type" default="button">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="button" />
<xs:enumeration value="text-link" />
<xs:enumeration value="image" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:string" name="image-location" />
<xs:attribute type="xs:string" name="background-submit-refresh-target">
<xs:annotation>
<xs:documentation>Deprecated. Use the on-event-update-area element
instead.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="request-confirmation" default="false">
<xs:annotation>
<xs:documentation>If true then the user is presented with a dialog box, if confirmation-message is empty, use default</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="confirmation-message" type="xs:string">
<xs:annotation>
<xs:documentation>The message displayed in confirmation box</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="text" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<xs:attribute type="xs:positiveInteger" name="size" default="25" />
<xs:attribute type="xs:positiveInteger" name="maxlength" />
<xs:attribute type="xs:string" name="default-value" />
<xs:attribute name="disabled" 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="client-autocomplete-field" 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>
<xs:attribute name="mask" type="xs:string">
<xs:annotation>
<xs:documentation>Defines a customized input mask. Use 9 for numeric, a for alpha and * for alphanumeric character.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="textarea" substitutionGroup="AllFields">
<xs:complexType>
<xs:attribute type="xs:positiveInteger" name="cols" default="60" />
<xs:attribute type="xs:positiveInteger" name="rows" default="3" />
<xs:attribute type="xs:string" name="default-value" />
<xs:attribute name="read-only" default="false">
<xs:annotation>
<xs:documentation>Makes this textarea read-only (no edits allowed)</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="visual-editor-enable" default="false">
<xs:annotation>
<xs:documentation>This will enable the html editor on this text area from www.unverse.net (more info there), only one textarea can be used on one page</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="visual-editor-buttons">
<xs:annotation>
<xs:documentation>In here you can specify which buttons you want to see and in which order separated by blanks. Available buttons are:formatblock fontname fontsize newline bold italic underline left center right number bullet indent outdent undo redo color hilite rule link image
table clean html spellcheck |(separator) Default is that all buttons are shown</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="text-find" substitutionGroup="AllFields">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="sub-hyperlink" />
</xs:sequence>
<xs:attribute type="xs:positiveInteger" name="size" default="25" />
<xs:attribute type="xs:positiveInteger" name="maxlength" />
<xs:attribute type="xs:string" name="default-value" />
<xs:attribute name="ignore-case" default="true">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="default-option" default="contains">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="equals" />
<xs:enumeration value="like" /><!-- this is actually "begins with" -->
<xs:enumeration value="contains" />
<xs:enumeration value="empty" />
<xs:enumeration value="notEqual" />
<xs:enumeration value="lessThan" />
<xs:enumeration value="lessThanEqualTo" />
<xs:enumeration value="greaterThan" />
<xs:enumeration value="greaterThanEqualTo" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="client-autocomplete-field" 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>
<xs:attribute name="hide-options" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
<xs:enumeration value="ignore-case" />
<xs:enumeration value="options" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<!-- ================== Field Events ==================== -->
<xs:element name="on-field-event-update-area">
<xs:annotation>
<xs:documentation>Area to be updated when a field event occurs.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="event-type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="change" />
<xs:enumeration value="click" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:string" name="area-id" use="required" />
<xs:attribute type="xs:string" name="area-target" use="required" />
</xs:complexType>
</xs:element>
<!-- ================== FIELD SUB-ELEMENTS ==================== -->
<xs:element name="auto-complete">
<xs:complexType>
<xs:attribute name="auto-select" 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="frequency" type="xs:double" default="0.4" />
<xs:attribute name="min-chars" type="xs:positiveInteger" default="1" />
<xs:attribute name="choices" type="xs:positiveInteger" default="10" />
<xs:attribute name="partial-search" default="true">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="partial-chars" type="xs:positiveInteger" default="1" />
<xs:attribute name="ignore-case" default="true">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="full-search" default="true">
<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:element name="entity-constraint">
<xs:complexType>
<xs:attribute type="xs:string" name="name" use="required" />
<xs:attribute name="operator" default="equals">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="less" />
<xs:enumeration value="greater" />
<xs:enumeration value="less-equals" />
<xs:enumeration value="greater-equals" />
<xs:enumeration value="equals" />
<xs:enumeration value="not-equals" />
<xs:enumeration value="in" />
<xs:enumeration value="not-in" />
<xs:enumeration value="between" />
<xs:enumeration value="like" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:string" name="env-name" />
<xs:attribute type="xs:string" name="value" />
<xs:attribute name="ignore-if-null" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ignore-if-empty" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="entity-options">
<xs:annotation>
<xs:documentation>entity-options will look up options for the field in the given entity</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="entity-constraint" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="entity-order-by" />
</xs:sequence>
<xs:attribute type="xs:string" name="entity-name" use="required" />
<xs:attribute type="xs:string" name="key-field-name">
<xs:annotation>
<xs:documentation>The name of the field in the looked up entity that will be used for the key value; if empty defaults to the entry-name of the field this is in.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="description" use="required">
<xs:annotation>
<xs:documentation>Will be presented to the user with field values substituted using the ${} syntax.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="cache" default="true">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="filter-by-date" default="by-name">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
<xs:enumeration value="by-name" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="entity-order-by">
<xs:complexType>
<xs:attribute type="xs:string" name="field-name" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="in-place-editor">
<xs:annotation>
<xs:documentation>Enables in place editon for the display field.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element ref="simple-editor" />
</xs:choice>
<xs:element ref="field-map" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="url" type="xs:string" use="required" />
<xs:attribute name="cancel-control">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="link" />
<xs:enumeration value="button" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="cancel-text" type="xs:string" />
<xs:attribute name="click-to-edit-text" type="xs:string" />
<xs:attribute name="field-post-creation">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="activate" />
<xs:enumeration value="focus" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="form-class-name" type="xs:string" />
<xs:attribute name="form-id" type="xs:string" />
<xs:attribute name="highlight-color" type="xs:string" />
<xs:attribute name="highlight-end-color" type="xs:string" />
<xs:attribute name="hover-class-name" type="xs:string" />
<xs:attribute name="html-response" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="false" />
<xs:enumeration value="true" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="loading-class-name" type="xs:string" />
<xs:attribute name="loading-text" type="xs:string" />
<xs:attribute name="ok-control">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="link" />
<xs:enumeration value="button" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ok-text" type="xs:string" />
<xs:attribute name="param-name" type="xs:string" />
<xs:attribute name="saving-class-name" type="xs:string" />
<xs:attribute name="saving-text" type="xs:string" />
<xs:attribute name="submit-on-blur">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="false" />
<xs:enumeration value="true" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="text-after-controls" type="xs:string" />
<xs:attribute name="text-before-controls" type="xs:string" />
<xs:attribute name="text-between-controls" type="xs:string" />
<xs:attribute name="update-after-request-call" default="true">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="false" />
<xs:enumeration value="true" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="list-options">
<xs:annotation>
<xs:documentation>list-options will create options based on data in a list</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute type="xs:string" name="list-name" use="required">
<xs:annotation>
<xs:documentation>The name of the list to iterate through to get values.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="list-entry-name">
<xs:annotation>
<xs:documentation>
If specified the list entry will be placed in the local
context, otherwise each list entry must be a Map that will be expanded
into the local context.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="key-name" use="required">
<xs:annotation>
<xs:documentation>
The value of the key-name will be the value passed
to the server; this should be the full name of the location of the
key value in the context, given the list-entry-name or expanded
list-entry Map as the options you would most likely use.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute type="xs:string" name="description">
<xs:annotation>
<xs:documentation>Will be presented to the user with field values substituted using the ${} syntax.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="option">
<xs:complexType>
<xs:attribute type="xs:string" name="key" use="required" />
<xs:attribute type="xs:string" name="description">
<xs:annotation>
<xs:documentation>What the user will see in the widget; defaults to the value of the key attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="simple-editor">
<xs:complexType>
<xs:attribute name="rows" type="xs:positiveInteger" default="1" />
<xs:attribute name="cols" type="xs:positiveInteger" default="40" />
</xs:complexType>
</xs:element>
<xs:element name="sub-hyperlink">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="auto-parameters-service"/>
<xs:element minOccurs="0" ref="auto-parameters-entity"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="parameter" />
</xs:sequence>
<xs:attribute type="xs:string" name="use-when" />
<xs:attribute type="xs:string" name="link-style" />
<xs:attribute name="link-type" default="auto">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="auto">
<xs:annotation>
<xs:documentation>If selected the hidden-form type will be used if the url-mode is intra-app and the request specified has an event, otherwise the anchor type will be used.</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="anchor" />
<xs:enumeration value="hidden-form" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<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 type="xs:string" name="target" use="required" />
<xs:attribute type="xs:string" name="description" />
<xs:attribute type="xs:string" name="target-window" />
</xs:complexType>
</xs:element>
<!-- ================== ACTIONS ==================== -->
<xs:element name="actions">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="AllActions"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="row-actions">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="AllActions"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="service" substitutionGroup="AllActions">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="field-map" />
</xs:sequence>
<xs:attribute type="xs:string" name="service-name" use="required" />
<xs:attribute type="xs:string" name="result-map" />
<xs:attribute type="xs:string" name="auto-field-map" default="true">
<xs:annotation>
<xs:documentation>This can be "true", "false" or the name of a Map in the context to use as the source Map for the service context.</xs:documentation>
</xs:annotation>
</xs:attribute>
<!-- this is deprecated and should not be used; use result-map-list-name instead: <xs:attribute type="xs:string" name="result-map-list-iterator-name"/> -->
<xs:attribute type="xs:string" name="result-map-list" />
<xs:attribute name="ignore-error" default="false">
<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:element name="call-parent-actions" substitutionGroup="AllActions" />
<xs:element name="entity-and" substitutionGroup="AllActions">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="field-map" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" />
<xs:choice minOccurs="0">
<xs:element ref="limit-range" />
<xs:element ref="limit-view" />
<xs:element ref="use-iterator" />
</xs:choice>
</xs:sequence>
<xs:attribute type="xs:string" name="entity-name" use="required" />
<xs:attribute name="use-cache" 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="filter-by-date" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
<xs:enumeration value="by-name" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:string" name="list" />
<xs:attribute name="result-set-type" default="scroll">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="forward" />
<xs:enumeration value="scroll" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="entity-condition" substitutionGroup="AllActions">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0">
<xs:element ref="condition-expr" />
<xs:element ref="condition-list" />
<xs:element ref="condition-object" />
</xs:choice>
<xs:element minOccurs="0" ref="having-condition-list" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="select-field" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="order-by" />
<xs:choice minOccurs="0">
<xs:element ref="limit-range" />
<xs:element ref="limit-view" />
<xs:element ref="use-iterator" />
</xs:choice>
</xs:sequence>
<xs:attribute type="xs:string" name="entity-name" use="required" />
<xs:attribute name="use-cache" 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="filter-by-date" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
<xs:enumeration value="by-name" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="distinct" default="false">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute type="xs:string" name="delegator-name" />
<xs:attribute type="xs:string" name="list" />
<xs:attribute name="result-set-type" default="scroll">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="forward" />
<xs:enumeration value="scroll" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>