Files
Dynamic-Form-Tools/DevResources/xsd/dynf-form-def.xsd
skidus 660c7a058c feat: implement project-level XSD registration and refactor base package
- Schema Validation (XSD):
  - Added new configuration UI for DynamicForm Tools to manage XSD schemas.
  - Implemented DynFormXsdScanner to automatically map local .xsd files to the ExternalResourceManager using a custom URI prefix.
  - Ensured XSD registration is properly scoped at the Project-level (rather than Application-level) using write-actions to comply with IDE threading policies.

- Architecture & Refactoring:
  - Renamed base package from com.sdk.dynformTools to com.sdk.dynform across the entire project for structural consistency.
  - Converted Application-level settings/configurables to Project-level services.
  - Extracted and restored complex I18n folding and inlay hint logic that was previously overwritten, adapting it to use the new Project-level settings.

- UI & Metadata:
  - Bumped plugin version to 3.2.0.
  - Rebranded settings page to "DynamicForm Tools".
  - Organized settings into logical "Internationalization" and "Schema Validation" groups.
2026-04-10 22:51:47 +07:00

1349 lines
63 KiB
XML
Executable File

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="DataFieldType">
<xs:restriction base="xs:string">
<xs:enumeration value="AUTO"/>
<xs:enumeration value="NUMBER"/>
<xs:enumeration value="NUMERIC"/>
<xs:enumeration value="VARCHAR"/>
<xs:enumeration value="VARCHAR2"/>
<xs:enumeration value="TEXT"/>
<xs:enumeration value="CLOB"/>
<xs:enumeration value="DATE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FormFieldType">
<xs:restriction base="xs:string">
<xs:enumeration value="DATE"/>
<xs:enumeration value="DATE-TIME"/>
<xs:enumeration value="DATE-RANGE"/>
<xs:enumeration value="TIME-RANGE"/>
<xs:enumeration value="NUMBER"/>
<xs:enumeration value="TEXT"/>
<xs:enumeration value="NUMTEXT"/>
<xs:enumeration value="TIME"/>
<xs:enumeration value="PERIOD"/>
<xs:enumeration value="EMAIL"/>
<xs:enumeration value="HTML"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FieldKind">
<xs:restriction base="xs:string">
<xs:enumeration value="VIEW"/>
<xs:enumeration value="DATA"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="YesNo">
<xs:restriction base="xs:string">
<xs:enumeration value="Y"/>
<xs:enumeration value="N"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="SelectorType">
<xs:restriction base="xs:string">
<xs:enumeration value="hidden"/>
<xs:enumeration value="none"/>
<xs:enumeration value="checkbox"/>
<xs:enumeration value="radio"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ButtonType">
<xs:restriction base="xs:string">
<xs:enumeration value="BUTTON"/>
<xs:enumeration value="CHECKBOX"/>
<xs:enumeration value="RADIO"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="AlignmentType">
<xs:restriction base="xs:string">
<xs:enumeration value="left"/>
<xs:enumeration value="center"/>
<xs:enumeration value="right"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FormLayoutClassType">
<xs:restriction base="xs:string">
<xs:enumeration value="block-layout-form"/>
<xs:enumeration value="linear-layout-form"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="BrowseFieldKind">
<xs:restriction base="xs:string">
<xs:enumeration value="DATA"/>
<xs:enumeration value="ITEM"/>
<xs:enumeration value="HTML"/>
<xs:enumeration value="LINK"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CharCaseType">
<xs:restriction base="xs:string">
<xs:enumeration value="Upper"/>
<xs:enumeration value="Lower"/>
<xs:enumeration value="Normal"/>
<xs:enumeration value="UPPER"/>
<xs:enumeration value="LOWER"/>
<xs:enumeration value="NORMAL"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="InputType">
<xs:restriction base="xs:string">
<xs:enumeration value="AUTOCOMPLETE"/>
<xs:enumeration value="BUTTON"/>
<xs:enumeration value="CALCULATOR"/>
<xs:enumeration value="CHECKBOX"/>
<xs:enumeration value="CHECKBOXGROUP"/>
<xs:enumeration value="COMBO"/>
<xs:enumeration value="COMBOBOX"/>
<xs:enumeration value="DATA-GRID"/>
<xs:enumeration value="DATE-RANGE"/>
<xs:enumeration value="TIME-RANGE"/>
<xs:enumeration value="DISPLAY"/>
<xs:enumeration value="FILE"/>
<xs:enumeration value="HIDDEN"/>
<xs:enumeration value="HTML"/>
<xs:enumeration value="HTML-BOX"/>
<xs:enumeration value="HTML-FIELD"/>
<xs:enumeration value="IDBOX13"/>
<xs:enumeration value="MAP-EDITOR"/>
<xs:enumeration value="MULTIBOX"/>
<xs:enumeration value="PASSWORD"/>
<xs:enumeration value="PERIOD"/>
<xs:enumeration value="PHOTO-BOX"/>
<xs:enumeration value="FILE-BOX"/>
<xs:enumeration value="FILE-LIST-BOX"/>
<xs:enumeration value="OTP-BOX"/>
<xs:enumeration value="RADIO"/>
<xs:enumeration value="RADIOGROUP"/>
<xs:enumeration value="SWITCH"/>
<xs:enumeration value="TEXT"/>
<xs:enumeration value="TEXTAREA"/>
<xs:enumeration value="WAYPOINT-EDITOR"/>
<xs:enumeration value="MULTI-FIELD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="DateDisableType">
<xs:restriction base="xs:string">
<xs:enumeration value="BEFORE"/>
<xs:enumeration value="AFTER"/>
<xs:enumeration value="BEFORE_DATE"/>
<xs:enumeration value="AFTER_DATE"/>
<xs:enumeration value="NOT_BETWEEN"/>
<xs:enumeration value="BETWEEN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="LAYOUT-SectionType">
<xs:restriction base="xs:string">
<xs:enumeration value="DATA-SECTION"/>
<xs:enumeration value="NORMAL-SECTION"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="RowType">
<xs:restriction base="xs:string">
<xs:enumeration value="TITLE"/>
<xs:enumeration value="CONTENT"/>
<xs:enumeration value="CONTAINER"/>
<xs:enumeration value="BOX"/>
<xs:enumeration value="INCLUDE"/>
<xs:enumeration value="CUSTOMIZE"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ActionType">
<xs:restriction base="xs:string">
<xs:enumeration value="VIEW"/>
<xs:enumeration value="EXEC"/>
<xs:enumeration value="POST-EXEC"/>
<xs:enumeration value="POPUP-EXEC"/>
<xs:enumeration value="CUSTOM"/>
<xs:enumeration value="DOWNLOAD"/>
<xs:enumeration value="UPLOAD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FileType">
<xs:restriction base="xs:string">
<xs:enumeration value="jsp-include"/>
<xs:enumeration value="java-script"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="FooterPosition">
<xs:restriction base="xs:string">
<xs:enumeration value="BEFORE-BUTTON"/>
<xs:enumeration value="AFTER-BUTTON"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ROW-Position-Type">
<xs:restriction base="xs:string">
<xs:enumeration value="BEFORE-BUTTON"/>
<xs:enumeration value="AFTER-BUTTON"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ButtonPosition">
<xs:restriction base="xs:string">
<xs:enumeration value="BEFORE-ADD"/>
<xs:enumeration value="AFTER-ADD"/>
<xs:enumeration value="AFTER-EDIT"/>
<xs:enumeration value="AFTER-DELETE"/>
<xs:enumeration value="BEFORE-SAVE"/>
<xs:enumeration value="AFTER-SAVE"/>
<xs:enumeration value="AFTER-RESET"/>
<xs:enumeration value="AFTER-RETURN"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Section-type">
<xs:restriction base="xs:string">
<xs:enumeration value="LEFT"/>
<xs:enumeration value="CENTER"/>
<xs:enumeration value="RIGHT"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="DATASET-SUBDATASET-Type">
<xs:sequence>
<xs:element type="xs:string" name="FILTER" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="xs:string" name="DATASET-ID" use="required"/>
<xs:attribute type="xs:string" name="MASTER-FIELDS"/>
<xs:attribute type="xs:string" name="DETAIL-FIELDS"/>
<xs:attribute type="xs:string" name="LINK-FIELDS"/>
</xs:complexType>
<xs:complexType name="DATASET-SUBDATASETS-Type">
<xs:sequence>
<xs:element type="DATASET-SUBDATASET-Type" name="SUBDATASET" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FOREIGN-TABLE-Type">
<xs:attribute type="xs:string" name="TABLE-NAME" use="required"/>
<xs:attribute type="xs:string" name="MASTER-FIELDS" use="required"/>
<xs:attribute type="xs:string" name="DETAIL-FIELDS" use="required"/>
<xs:attribute type="YesNo" name="DELETE-WITH-MASTER" use="required"/>
</xs:complexType>
<xs:complexType name="DATASET-FOREIGN-TABLE-Type">
<xs:sequence>
<xs:element type="FOREIGN-TABLE-Type" name="TABLE" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DATASET-FIELDType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="xs:string" name="FORM-NAME"/>
<xs:attribute type="xs:string" name="LABEL" use="required"/>
<xs:attribute type="xs:string" name="CAPTION"/>
<xs:attribute type="xs:string" name="ORIGIN"/>
<xs:attribute type="DataFieldType" name="TYPE" use="required"/>
<xs:attribute type="FieldKind" name="KIND"/>
<xs:attribute type="YesNo" name="WARP"/>
<xs:attribute type="xs:integer" name="WIDTH" default="0"/>
<xs:attribute type="AlignmentType" name="ALIGN"/>
<xs:attribute type="xs:string" name="DEFAULT"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="DATASET-MASTER-DATA-Type">
<xs:sequence>
<xs:element type="xs:string" name="FILTER" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="DATASET-ID" use="required"/>
<xs:attribute type="xs:string" name="MASTER-FIELDS"/>
<xs:attribute type="xs:string" name="DETAIL-FIELDS"/>
</xs:complexType>
<xs:complexType name="DATASET-Type">
<xs:sequence>
<xs:element type="xs:string" name="SCHEMA"/>
<xs:element type="xs:string" name="TABLENAME"/>
<xs:element type="xs:string" name="TABLE-ALIAS" minOccurs="0"/>
<xs:element type="xs:string" name="TABLEDESC" minOccurs="0"/>
<xs:element type="xs:string" name="KEYFIELDS" minOccurs="0"/>
<xs:element type="DATASET-MASTER-DATA-Type" name="MASTER-DATA" minOccurs="0"/>
<xs:element name="SQL">
<xs:complexType>
<xs:sequence xml:space="default">
<xs:element type="xs:string" name="SELECT"/>
<xs:element type="xs:string" name="FROM"/>
<xs:element type="xs:string" name="WHERE" minOccurs="0"/>
<xs:element type="xs:string" name="FILTER" minOccurs="0"/>
<xs:element type="xs:string" name="GROUP" minOccurs="0"/>
<xs:element type="xs:string" name="HAVING" minOccurs="0"/>
<xs:element type="xs:string" name="ORDER" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="FIELDS" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="FIELD" type="DATASET-FIELDType" maxOccurs="unbounded"/>
<xs:element name="DATA-FIELDS" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="FIELD" type="DATASET-FIELDType" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute type="xs:string" name="MAPPING"/>
</xs:complexType>
</xs:element>
<xs:element name="VIEW-FIELDS" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="FIELD" type="DATASET-FIELDType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SAVE-FILTER" type="SAVE-FILTER-Type" minOccurs="0"/>
<xs:element name="SUBDATASETS" type="DATASET-SUBDATASETS-Type" minOccurs="0"/>
<xs:element name="FOREIGN-TABLES" type="DATASET-FOREIGN-TABLE-Type" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="ID" use="required"/>
<xs:attribute type="xs:string" name="CLASS"/>
<xs:attribute type="xs:string" name="ONERECORD"/>
</xs:complexType>
<xs:complexType name="HEADER-BUTTONS-FILTER-Type">
<xs:sequence>
<xs:element name="ADD" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="EDIT" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="DELETE" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="VIEW" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FORM-BROWSE-HEADER-Type" mixed="true">
<xs:attribute type="YesNo" name="NAVI"/>
<xs:attribute type="YesNo" name="ADD" use="required" default="Y"/>
<xs:attribute type="YesNo" name="EDIT" use="required" default="Y"/>
<xs:attribute type="YesNo" name="DELETE" use="required" default="Y"/>
<xs:attribute type="YesNo" name="VIEW"/>
<xs:attribute type="SelectorType" name="SELECTOR"/>
<xs:attribute type="xs:string" name="ADD_CAPT"/>
<xs:attribute type="xs:string" name="EDIT_CAPT"/>
<xs:attribute type="xs:string" name="DELETE_CAPT"/>
<xs:attribute type="xs:string" name="VIEW_CAPT"/>
<xs:attribute type="YesNo" name="SHOW-BUTTON"/>
</xs:complexType>
<xs:complexType name="BROWSE-FIELD-Type" >
<xs:sequence>
<!-- <xs:element type="xs:simpleType" minOccurs="0" maxOccurs="1" name="HEADER-FORMATTER">-->
<!-- <xs:annotation>-->
<!-- <xs:documentation>exam : (row,value,index)=>{ }</xs:documentation>-->
<!-- </xs:annotation>-->
<!-- </xs:element>-->
<xs:element type="xs:simpleType" minOccurs="0" maxOccurs="1" name="DATA-FORMATTER">
<xs:annotation>
<xs:documentation>javascript function exam : (value,row,index)=>{ }</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" minOccurs="0" maxOccurs="1" name="FOOTER-FORMATTER">
<xs:annotation>
<xs:documentation>javascript function exam : (data,value)=>{ }</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="xs:string" name="LABEL"/>
<xs:attribute type="xs:string" name="WIDTH"/>
<xs:attribute type="BrowseFieldKind" name="KIND"/>
<xs:attribute type="AlignmentType" name="ALIGN"/>
<xs:attribute type="xs:string" name="SORT"/>
<xs:attribute type="xs:string" name="SEARCH-ORIGIN"/>
<xs:attribute type="YesNo" name="WARP"/>
<xs:attribute type="YesNo" name="SHOW"/>
</xs:complexType>
<xs:complexType name="OPTION-FORMATTER-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="NAME" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="GRID-BUTTONS-Type">
<xs:sequence>
<xs:element name="BUTTONS-FILTER" type="HEADER-BUTTONS-FILTER-Type" minOccurs="0" maxOccurs="1"/>
<xs:element name="BUTTON" type="GRID-LAYOUT-BUTTON-Type" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="YesNo" name="NEWLINE" use="optional"/>
<xs:attribute type="xs:string" name="CLASS" use="optional"/>
</xs:complexType>
<xs:complexType name="FORM-BROWSE-TITLES-Type">
<xs:sequence maxOccurs="unbounded">
<xs:element name="ROW" type="FORM-BROWSE-TITLES-ROW-Type"/>
</xs:sequence>
<xs:attribute type="xs:string" name="CLASS" use="optional"/>
</xs:complexType>
<xs:complexType name="FORM-BROWSE-TITLES-ROW-Type" mixed="true">
<xs:sequence>
<xs:element name="FIELD" type="FORM-BROWSE-TITLES-FIELD-Type" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FORM-BROWSE-TITLES-FIELD-Type" >
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="xs:string" name="LABEL"/>
<xs:attribute type="xs:string" name="WIDTH"/>
<xs:attribute type="AlignmentType" name="ALIGN"/>
<xs:attribute type="YesNo" name="WARP"/>
<xs:attribute type="xs:int" name="ROWS-SPAN"/>
<xs:attribute type="xs:int" name="COLS-SPAN"/>
</xs:complexType>
<xs:complexType name="FORM-BROWSE-GROUPBY-Type">
<xs:sequence>
<xs:element name="FORMATTER" type="xs:string" maxOccurs="1">
<xs:annotation>
<xs:documentation>javascript (value,index,data )=>{ return value;} </xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="FIELDS" use="required"/>
</xs:complexType>
<xs:complexType name="FORM-BROWSE-FIELDS-Type">
<xs:sequence maxOccurs="unbounded">
<xs:element name="FIELD" type="BROWSE-FIELD-Type"/>
<xs:element name="COMMAND-BUTTONS" minOccurs="0" type="GRID-BUTTONS-Type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FIELD-LIST_OPTION-Type">
<xs:sequence>
<xs:element type="OPTION-FORMATTER-Type" name="FORMATTER" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="SOURCE"/>
<xs:attribute type="xs:string" name="TABLE"/>
<xs:attribute type="xs:string" name="FIRSTLIST"/>
<xs:attribute type="xs:string" name="TEXT"/>
<xs:attribute type="xs:string" name="VALUE"/>
<xs:attribute type="xs:string" name="FILTER"/>
<xs:attribute type="xs:string" name="ORDER"/>
<xs:attribute type="xs:string" name="COLUMN"/>
<xs:attribute type="xs:string" name="DATAFIELDS"/>
</xs:complexType>
<xs:simpleType name="PHOTO-BOX-IMAGE-TYPE-Type">
<xs:restriction base="xs:string">
<xs:enumeration value="avatar"/>
<xs:enumeration value="photo"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="FIELD-PHOTO-BOX-Type">
<xs:attribute type="PHOTO-BOX-IMAGE-TYPE-Type" name="IMAGE-TYPE" use="required"/>
<xs:attribute type="xs:string" name="IMAGE-URL" use="required"/>
<xs:attribute type="xs:string" name="DEFAULT-NAME"/>
<xs:attribute type="xs:string" name="UPLOAD-URL"/>
<xs:attribute type="xs:string" name="IMAGE-WIDTH"/>
<xs:attribute type="xs:string" name="IMAGE-HEIGHT"/>
</xs:complexType>
<xs:complexType name="FIELD-FILE-BOX-Type">
<xs:attribute type="xs:string" name="FILE-TYPE" use="required"/>
<xs:attribute type="xs:string" name="UPLOAD-URL" use="required"/>
<xs:attribute type="xs:string" name="FILE-URL" use="required" />
<xs:attribute type="xs:string" name="DEFAULT-NAME"/>
<xs:attribute type="xs:string" name="FILE-ACCEPTS" use="required"/>
<xs:attribute type="YesNo" name="SELF-UPLOAD" default="N"/>
</xs:complexType>
<xs:complexType name="FIELD-FILE-LIST-BOX-Type">
<xs:attribute type="xs:string" name="DATASET" use="required"/>
<xs:attribute type="xs:string" name="FILE-TYPE" use="required"/>
<xs:attribute type="xs:string" name="FILE-PATH" use="required"/>
<xs:attribute type="xs:string" name="FILE-DESC" use="required"/>
</xs:complexType>
<xs:complexType name="UPDATE-FIELDType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="SRC"/>
<xs:attribute type="xs:string" name="TARGET"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="UPDATE-FIELDSType">
<xs:sequence>
<xs:element type="UPDATE-FIELDType" name="FIELD" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="ROOT"/>
<xs:attribute type="xs:string" name="STATUS"/>
</xs:complexType>
<xs:simpleType name="AJAX_OPTION-ON-EMPTY-Type">
<xs:restriction base="xs:string">
<xs:enumeration value="CLEAR-ALL"/>
<xs:enumeration value="LOAD-ALL"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="FIELD-AJAX_OPTION-Type">
<xs:sequence>
<xs:element type="UPDATE-FIELDSType" name="UPDATE-FIELDS" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="URL"/>
<xs:attribute type="xs:string" name="MODULE"/>
<xs:attribute type="xs:string" name="DATASET"/>
<xs:attribute type="xs:string" name="PARAMETERS"/>
<xs:attribute type="xs:string" name="TEXT-FIELD"/>
<xs:attribute type="xs:string" name="VALUE-FIELD"/>
<xs:attribute type="xs:string" name="FIRST-LIST"/>
<xs:attribute type="xs:string" name="CHILD-FIELD"/>
<xs:attribute type="AJAX_OPTION-ON-EMPTY-Type" name="ON-EMPTY"/>
</xs:complexType>
<xs:complexType name="FIELD-GRID_OPTIONS-Type">
<xs:sequence>
<xs:element name="MASTER-DATA" type="GRID-EDITOR-MASTER-DATA-Type" minOccurs="0" maxOccurs="1"/>
<xs:element name="UNIQ-CHECK" type="GRID-EDITOR-UNIQ-CHECK-Type" minOccurs="0" maxOccurs="1"/>
<xs:element name="GRID-LIST" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="BUTTONS-FILTER" type="HEADER-BUTTONS-FILTER-Type" minOccurs="0"/>
<xs:element name="KEYFIELDS" type="xs:string" minOccurs="0"/>
<xs:element name="TITLES" type="FORM-BROWSE-TITLES-Type" minOccurs="0"/>
<xs:element name="FIELDS" type="FORM-BROWSE-FIELDS-Type" minOccurs="0"/>
<xs:element name="SCRIPT" type="GRID-LIST-SCRIPT-Type" minOccurs="0"/>
<xs:element name="FOOTER" type="FOOTER-Type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>javascript function
exam : (data)=>{ }</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="DATAID"/>
<xs:attribute type="YesNo" name="ADD" use="required" default="Y"/>
<xs:attribute type="YesNo" name="EDIT" use="required" default="Y"/>
<xs:attribute type="YesNo" name="DELETE" use="required" default="Y"/>
<xs:attribute type="xs:string" name="ADD_CAPT"/>
<xs:attribute type="xs:string" name="CLASS"/>
</xs:complexType>
</xs:element>
<xs:element name="GRID-EDITOR" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="MASTER-DATA" type="GRID-EDITOR-MASTER-DATA-Type"/>
<xs:element name="FIELDS" type="EDITOR-FIELDS-Type"/>
<xs:element name="LAYOUT" type="EDITOR-LAYOUT-Type"/>
<xs:element name="BUTTONS" type="EDITOR-BUTTONS-Type"/>
<xs:element name="SCRIPT" type="GRID-EDITOR-SCRIPT-Type"/>
</xs:sequence>
<xs:attribute type="xs:string" name="DATAID"/>
<xs:attribute type="xs:string" name="WIDTH"/>
<xs:attribute type="YesNo" name="SAVE"/>
<xs:attribute type="YesNo" name="RETURN"/>
<xs:attribute type="YesNo" name="RESET"/>
<xs:attribute type="xs:string" name="SAVE_CAPT"/>
<xs:attribute type="xs:string" name="RETURN_CAPT"/>
<xs:attribute type="xs:string" name="RESET_CAPT"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="ID"/>
</xs:complexType>
<xs:complexType name="FIELD-DATE_OPTION-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="MIN-DATE"/>
<xs:attribute type="xs:string" name="MAX-DATE"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="FIELD-BUTTON-TEXT_OPTION-Type">
<xs:sequence>
<xs:element name="FILTER" minOccurs="0" maxOccurs="1"/>
<xs:element name="EVENT" type="EVENT-SCRIPT-Type" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="ButtonType" name="TYPE"/>
<xs:attribute type="xs:string" name="CLASS"/>
<xs:attribute type="xs:string" name="ICON-CLASS"/>
<xs:attribute type="xs:string" name="CAPTION"/>
<xs:attribute type="xs:string" name="VALUE"/>
<xs:attribute type="YesNo" name="CHECKED"/>
</xs:complexType>
<xs:complexType name="FIELD-LOV-Type">
<xs:sequence>
<xs:element name="ON-SELECTED" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="ID" use="required"/>
<xs:attribute type="xs:string" name="RETURN"/>
<xs:attribute type="xs:string" name="FILTER"/>
</xs:complexType>
<xs:complexType name="FIELD-DATA_SOURCE-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="DATAID" use="required"/>
<xs:attribute type="xs:string" name="DATAFIELD" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="FIELD-AJAX-LISTENER-Type" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="BEFORE-CALL" minOccurs="0"/>
<xs:element type="xs:string" name="BEFORE-FILL" minOccurs="0"/>
<xs:element type="xs:string" name="AFTER-FILL" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="MomentType">
<xs:restriction base="xs:string">
<xs:enumeration value="FORWARD"/>
<xs:enumeration value="BACKWARD"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="RangeType">
<xs:restriction base="xs:string">
<xs:enumeration value="DATE"/>
<xs:enumeration value="MONTH"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="FIELD-DATE-RANGE-Type" mixed="true">
<xs:sequence>
<xs:element name="INIT" type="DATE-RANGE-Type" minOccurs="0"/>
<xs:element name="RANGE" type="DATE-RANGE-Type" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="RANGE-START"/>
<xs:attribute type="xs:string" name="RANGE-END"/>
</xs:complexType>
<xs:complexType name="FIELD-TIME-RANGE-Type" mixed="true">
<xs:attribute type="xs:string" name="RANGE-START"/>
<xs:attribute type="xs:string" name="RANGE-END"/>
</xs:complexType>
<xs:complexType name="DATE-RANGE-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="CAPTION" use="required"/>
<xs:attribute type="RangeType" name="TYPE" use="required"/>
<xs:attribute type="MomentType" name="MOMENT" use="required"/>
<xs:attribute type="xs:string" name="START" use="required"/>
<xs:attribute type="xs:string" name="END" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="CalculateType">
<xs:restriction base="xs:string">
<xs:enumeration value="DATE-DIFF"/>
<xs:enumeration value="NUM-DIFF"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CALCULATE-OPTIONType">
<xs:attribute type="xs:string" name="FIELD-1"/>
<xs:attribute type="xs:string" name="FIELD-2"/>
<xs:attribute type="xs:string" name="FORMAT"/>
<xs:attribute type="CalculateType" name="CAL-TYPE"/>
</xs:complexType>
<xs:simpleType name="LocationField-Type">
<xs:restriction base="xs:string">
<xs:enumeration value="TITLE"/>
<xs:enumeration value="ADDRESS"/>
<xs:enumeration value="DISTRICT"/>
<xs:enumeration value="FULL-FIELD"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="MAP_OPTION-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="LOCATION-FIELD"/>
<xs:attribute type="LocationField-Type" name="LOCATION-FIELD-TYPE"/>
<xs:attribute type="xs:string" name="MAP-DISPLAY"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="WAYPOINT_OPTION-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="ADD-CAPTION"/>
<xs:attribute type="xs:string" name="SORT-CAPTION"/>
<xs:attribute type="xs:string" name="START-POINT-FIELD"/>
<xs:attribute type="xs:string" name="END-POINT-FIELD"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="FORM-FIELD-Type">
<xs:sequence>
<xs:element name="HTML-BODY" minOccurs="0"/>
<xs:element name="PHOTO-BOX" minOccurs="0" type="FIELD-PHOTO-BOX-Type"/>
<xs:element name="FILE-BOX" minOccurs="0" type="FIELD-FILE-BOX-Type"/>
<xs:element name="FILE-LIST-BOX" minOccurs="0" type="FIELD-FILE-LIST-BOX-Type"/>
<xs:element name="INPUT-ATTR" minOccurs="0"/>
<xs:element name="LIST-OPTION" minOccurs="0" type="FIELD-LIST_OPTION-Type"/>
<xs:element name="AJAX-OPTION" minOccurs="0" type="FIELD-AJAX_OPTION-Type"/>
<xs:element name="AJAX-LISTENER" minOccurs="0" type="FIELD-AJAX-LISTENER-Type"/>
<xs:element name="DATE-RANGE" type="FIELD-DATE-RANGE-Type" minOccurs="0"/>
<xs:element name="TIME-RANGE" type="FIELD-DATE-RANGE-Type" minOccurs="0"/>
<xs:element name="GRID-OPTIONS" type="FIELD-GRID_OPTIONS-Type" minOccurs="0"/>
<xs:element name="DATE-OPTION" minOccurs="0" type="FIELD-DATE_OPTION-Type"/>
<xs:element name="LOV" minOccurs="0" type="FIELD-LOV-Type"/>
<xs:element name="DATA_SOURCE" minOccurs="0" type="FIELD-DATA_SOURCE-Type"/>
<xs:element name="BUTTON" minOccurs="0" type="FIELD-BUTTON-TEXT_OPTION-Type"/>
<xs:element name="FIELD-REMARK" minOccurs="0"/>
<xs:element name="CAL-OPTION" type="CALCULATE-OPTIONType" minOccurs="0"/>
<xs:element name="MAP-OPTION" type="MAP_OPTION-Type" minOccurs="0"/>
<xs:element name="WAYPOINT-OPTION" type="WAYPOINT_OPTION-Type" minOccurs="0"/>
<xs:element name="EVENT" type="EVENT-SCRIPT-Type" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="SEARCH-ORIGIN" minOccurs="0"/>
<xs:element name="FIELD-LIST" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="FIELD" type="MULTI-FIELD-ITEM-Type" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="YesNo" name="AJAX-LISTENER"/>
<xs:attribute type="xs:string" name="AJAX-DATASET"/>
<xs:attribute type="xs:string" name="CAPTION"/>
<xs:attribute type="xs:string" name="LABEL"/>
<xs:attribute type="xs:string" name="CLASS-NAME"/>
<xs:attribute type="xs:string" name="ATTRIBUTE"/>
<xs:attribute type="FormFieldType" name="DATATYPE"/>
<xs:attribute type="InputType" name="INPUTTYPE"/>
<xs:attribute type="CharCaseType" name="CHARCASE"/>
<xs:attribute type="AlignmentType" name="ALIGN"/>
<xs:attribute type="xs:string" name="SEARCH-ORIGIN"/>
<xs:attribute type="xs:string" name="GRID-ID"/>
<xs:attribute type="YesNo" name="REQUIRE"/>
<xs:attribute type="YesNo" name="ENABLED"/>
<xs:attribute type="YesNo" name="READONLY"/>
<xs:attribute type="YesNo" name="SHOWCAPT"/>
<xs:attribute type="xs:byte" name="MAX-LENGTH"/>
<xs:attribute type="xs:byte" name="SIZE"/>
<xs:attribute type="xs:byte" name="DECIMAL"/>
<xs:attribute type="xs:byte" name="ROWS"/>
<xs:attribute type="xs:string" name="VALIDATOR"/>
<xs:attribute type="xs:string" name="EVENT"/>
<xs:attribute type="xs:string" name="SUFFIX"/>
<xs:attribute type="xs:string" name="VALUE"/>
<xs:attribute type="xs:string" name="RADIO_NAME"/>
<xs:attribute type="xs:string" name="UNCHECK_VALUE"/>
<xs:attribute type="xs:string" name="MIN-VALUE"/>
<xs:attribute type="xs:string" name="MAX-VALUE"/>
<xs:attribute type="xs:string" name="EDIT-READONLY"/>
<xs:attribute type="xs:string" name="ADD-READONLY"/>
<xs:attribute type="xs:string" name="FILTER-FIELD"/>
<xs:attribute type="xs:string" name="BTN-CLASS"/>
<xs:attribute type="xs:string" name="ICON-CLASS"/>
<xs:attribute type="xs:string" name="MAPPING-FIELDS"/>
<xs:attribute type="xs:string" name="ZERO-DISPLAY"/>
<xs:attribute type="xs:string" name="VALUE-SEPARATOR"/>
<xs:attribute type="xs:string" name="FIELD-SEPARATOR"/>
</xs:complexType>
<xs:complexType name="MULTI-FIELD-ITEM-Type">
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="xs:string" name="CLASS-NAME"/>
<xs:attribute type="FormFieldType" name="DATATYPE"/>
<xs:attribute type="InputType" name="INPUTTYPE"/>
<xs:attribute type="AlignmentType" name="ALIGN"/>
<xs:attribute type="YesNo" name="REQUIRE"/>
<xs:attribute type="YesNo" name="READONLY"/>
<xs:attribute type="xs:byte" name="MAX-LENGTH"/>
<xs:attribute type="xs:byte" name="SIZE"/>
<xs:attribute type="xs:byte" name="DECIMAL"/>
<xs:attribute type="xs:string" name="EVENT"/>
<xs:attribute type="xs:string" name="VALUE"/>
<xs:attribute type="xs:string" name="MIN-VALUE"/>
<xs:attribute type="xs:string" name="MAX-VALUE"/>
</xs:complexType>
<!--***************************************************************************************-->
<xs:complexType name="LAYOUT-STYLE-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="CAPT_TEXT"/>
<xs:attribute type="xs:string" name="VAL_TEXT"/>
<xs:attribute type="xs:string" name="CAPTION"/>
<xs:attribute type="xs:string" name="VALUE"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="LAYOUT-FIELD-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="xs:string" name="CAPT_WIDTH"/>
<xs:attribute type="xs:string" name="SUFFIX_WIDTH"/>
<xs:attribute type="xs:string" name="VAL_WIDTH"/>
<xs:attribute type="xs:string" name="LAYOUT_WIDTH"/>
<xs:attribute type="xs:string" name="OFFSET"/>
<xs:attribute type="YesNo" name="SHOW"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="LAYOUT-ROW-Type" mixed="true">
<xs:sequence>
<xs:element name="FIELD" type="LAYOUT-FIELD-Type" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="YesNo" name="ADD"/>
<xs:attribute type="YesNo" name="EDIT"/>
<xs:attribute type="YesNo" name="SHOW"/>
<xs:attribute type="YesNo" name="READONLY"/>
<xs:attribute type="RowType" name="TYPE"/>
<xs:attribute type="xs:string" name="CLASS"/>
<xs:attribute type="xs:string" name="ATTRIBUTE"/>
<xs:attribute type="xs:string" name="ID"/>
<xs:attribute type="xs:string" name="FILE"/>
<xs:attribute type="xs:string" name="AFTER_INCLUDE"/>
<xs:attribute type="ROW-Position-Type" name="POSITION"/>
</xs:complexType>
<xs:complexType name="SECTION-EVENT-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="NAME" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="SECTION-HEADER-Type" mixed="true">
<xs:attribute type="xs:string" name="CLASS"/>
<xs:attribute type="xs:string" name="ATTRIBUTE"/>
</xs:complexType>
<xs:complexType name="LAYOUT-SECTION-Type">
<xs:sequence>
<xs:element name="HEADER" type="SECTION-HEADER-Type" minOccurs="0"/>
<xs:element name="EXECUTOR" type="EDITOR-EXECUTOR-Type" minOccurs="0"/>
<xs:element name="AFTER-LOAD-DATA" type="SECTION-EVENT-Type" minOccurs="0">
<xs:annotation>
<xs:documentation>javascript function exam : ({$ctx,data})=>{ } </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ROW" maxOccurs="unbounded" type="LAYOUT-ROW-Type" minOccurs="0"/>
<xs:element name="FOOTER" type="SECTION-HEADER-Type" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="ID" type="xs:NCName" use="optional"/>
<xs:attribute name="DATASET" type="xs:NCName"/>
<xs:attribute name="TYPE" type="LAYOUT-SectionType"/>
<xs:attribute name="AUTO-INSERT" type="YesNo"/>
<xs:attribute name="READONLY" type="YesNo"/>
<xs:attribute name="SHOW" type="YesNo"/>
<xs:attribute name="CLASS" type="xs:string"/>
<xs:attribute name="POSITION" type="ROW-Position-Type"/>
</xs:complexType>
<xs:complexType name="EVENT-SCRIPT-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="ON" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="LAYOUT-BUTTON-Type">
<xs:sequence>
<xs:element name="FILTER" minOccurs="0" maxOccurs="1"/>
<xs:element name="EVENT" type="EVENT-SCRIPT-Type" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute type="xs:string" name="NAME"/>
<xs:attribute type="xs:string" name="CAPTION"/>
<xs:attribute type="xs:string" name="CLASS"/>
<xs:attribute type="xs:string" name="ICON-CLASS"/>
<xs:attribute type="xs:string" name="ACTION"/>
<xs:attribute type="ActionType" name="ACTION-TYPE"/>
<xs:attribute type="xs:string" name="CLICK"/>
<xs:attribute type="xs:byte" name="ITEM-REQUIRE"/>
<xs:attribute type="ButtonPosition" name="POSITION"/>
<xs:attribute type="Section-type" name="SECTION"/>
</xs:complexType>
<xs:complexType name="GRID-LAYOUT-BUTTON-Type">
<xs:sequence>
<xs:element name="FILTER" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="EVENT" type="EVENT-SCRIPT-Type" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>javascript function exam : ({ev, row})=>{ }</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="NAME"/>
<xs:attribute type="xs:string" name="CAPTION"/>
<xs:attribute type="xs:string" name="CLASS"/>
<xs:attribute type="xs:string" name="ICON-CLASS"/>
<xs:attribute type="xs:string" name="ON-CLICK"/>
</xs:complexType>
<xs:complexType name="EDITOR-DETAIL-DATA-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="xs:string" name="DATASET-ID" use="required"/>
<xs:attribute type="xs:string" name="MASTER-FIELDS" use="required"/>
<xs:attribute type="xs:string" name="DETAIL-FIELDS" use="required"/>
<xs:attribute type="xs:string" name="LINK-FIELDS"/>
<xs:attribute type="YesNo" name="EDIT" default="Y"/>
<xs:attribute type="YesNo" name="DELETE" default="Y"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="EDITOR-DETAIL-DATAS-Type">
<xs:sequence>
<xs:element type="EDITOR-DETAIL-DATA-Type" name="DETAIL-DATA"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GRID-EDITOR-UNIQ-CHECK-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="CHECK-FIELDS" use="required"/>
<xs:attribute type="xs:string" name="MESSAGE" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="FILTER-ACTION-Type">
<xs:restriction base="xs:string">
<xs:enumeration value="EXCLUDE"/>
<xs:enumeration value="SAVE"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SAVE-FILTER-FIELD-Type" >
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="xs:string" name="VALUE"/>
<xs:attribute type="FILTER-ACTION-Type" name="ACTION"/>
</xs:complexType>
<xs:complexType name="SAVE-FILTER-Type">
<xs:sequence>
<xs:element name="FIELD" type="SAVE-FILTER-FIELD-Type" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GRID-EDITOR-MASTER-DATA-Type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="DATASET-ID"/>
<xs:attribute type="xs:string" name="MASTER-FIELDS" use="required"/>
<xs:attribute type="xs:string" name="DETAIL-FIELDS"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="EDITOR-INCLUDE-Type">
<xs:sequence>
<xs:element name="FILE" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="NAME" use="required"/>
<xs:attribute type="FileType" name="TYPE" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EDITOR-AUTOUPDATE-Type">
<xs:sequence>
<xs:element type="xs:string" name="CALLURL"/>
<xs:element type="xs:string" name="CALLPARAM"/>
<xs:element type="xs:string" name="RETURN"/>
</xs:sequence>
<xs:attribute type="xs:string" name="ID"/>
<xs:attribute type="xs:string" name="FIELD"/>
<xs:attribute type="YesNo" name="SHOWERROR"/>
<xs:attribute type="YesNo" name="ONNEWRECORD"/>
<xs:attribute type="YesNo" name="ONEDITRECORD"/>
<xs:attribute type="YesNo" name="ON-NEWRECORD"/>
<xs:attribute type="YesNo" name="ON-EDITRECORD"/>
</xs:complexType>
<xs:complexType name="EDITOR-FIELDS-Type">
<xs:sequence>
<xs:element name="FIELD" type="FORM-FIELD-Type" maxOccurs="unbounded" minOccurs="0"/>
<xs:element name="SECTION" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="FIELD" type="FORM-FIELD-Type" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute type="xs:string" name="ID"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EDITOR-LAYOUT-Type">
<xs:sequence>
<xs:element name="STYLE" type="LAYOUT-STYLE-Type" minOccurs="0"/>
<xs:element name="ROW" type="LAYOUT-ROW-Type" maxOccurs="unbounded" minOccurs="0"/>
<xs:element name="SECTION" type="LAYOUT-SECTION-Type" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="CLASS" type="FormLayoutClassType"/>
</xs:complexType>
<xs:complexType name="EDITOR-EXECUTOR-Type">
<xs:attribute name="NAME" type="xs:string"/>
<xs:attribute name="ADD-ACTION" type="xs:string"/>
<xs:attribute name="UPDATE-ACTION" type="xs:string"/>
<xs:attribute name="DELETE-ACTION" type="xs:string"/>
</xs:complexType>
<xs:complexType name="EDITOR-ACTION-FILTER-Type">
<xs:attribute name="ADD" type="xs:string"/>
<xs:attribute name="EDIT" type="xs:string"/>
<xs:attribute name="VIEW" type="xs:string"/>
</xs:complexType>
<xs:complexType name="EDITOR-BUTTONS-Type">
<xs:sequence>
<xs:element name="BUTTON" type="LAYOUT-BUTTON-Type" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EDITOR-AUTOUPDATES-Type">
<xs:sequence>
<xs:element name="AUTOUPDATE" type="EDITOR-AUTOUPDATE-Type" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="BROWSER-SCRIPT-EVENTS-Type" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="AFTER-LOAD" minOccurs="0">
<xs:annotation>
<xs:documentation>javascript function exam : ($ctx,data)=>{ }</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EDITOR-SCRIPT-EVENTS-Type" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="BEFORE-SAVE" minOccurs="0"/>
<xs:element type="xs:string" name="AFTER-SAVE" minOccurs="0"/>
<xs:element type="xs:string" name="AFTER-LOAD" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EDITOR-SCRIPT-ELEMENTType" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="ON-ADD-DATA" minOccurs="0"/>
<xs:element type="xs:string" name="ON-EDIT-DATA" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="BROWSE-SCRIPT-Type" mixed="true">
<xs:sequence>
<xs:element type="EDITOR-SCRIPT-ELEMENTType" name="DECLARATION" minOccurs="0"/>
<xs:element type="EDITOR-SCRIPT-ELEMENTType" name="INITIALIZE" minOccurs="0"/>
<xs:element type="BROWSER-SCRIPT-EVENTS-Type" name="EVENTS" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EDITOR-SCRIPT-Type" mixed="true">
<xs:sequence>
<xs:element type="EDITOR-SCRIPT-ELEMENTType" name="DECLARATION" minOccurs="0"/>
<xs:element type="EDITOR-SCRIPT-ELEMENTType" name="DECLARE" minOccurs="0"/>
<xs:element type="EDITOR-SCRIPT-ELEMENTType" name="INITIALIZE" minOccurs="0"/>
<xs:element type="EDITOR-SCRIPT-EVENTS-Type" name="EVENTS" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GRID-EDITOR-EVENTS-Type" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="AFTER-LOAD" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>javascript function exam : ($ctx,data)=>{}</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="BEFORE-SAVE" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>javascript function exam : ($ctx,data)=>{}</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="AFTER-SAVE" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>javascript function exam : ($ctx,data)=>{}</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="ON-DELETE" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>javascript function exam : ($ctx,data)=>{}</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="GRID-EDITOR-SCRIPT-Type" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="DECLARATION" minOccurs="0"/>
<xs:element type="xs:string" name="INITIALIZE" minOccurs="0"/>
<xs:element type="GRID-EDITOR-EVENTS-Type" name="EVENTS" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="CONTEXT"/>
</xs:complexType>
<xs:complexType name="GRID-LIST-SCRIPT-Type" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="DECLARATION" minOccurs="0"/>
<xs:element type="xs:string" name="INITIALIZE" minOccurs="0"/>
<xs:element type="xs:string" name="ON-CHANGE" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--***************************************************************************************-->
<xs:complexType name="FILTERS-FIELD-Type">
<xs:sequence>
<xs:element name="INPUT_ATTR" minOccurs="0"/>
<xs:element name="LIST-OPTION" minOccurs="0" type="FIELD-LIST_OPTION-Type"/>
<xs:element name="AJAX-OPTION" minOccurs="0" type="FIELD-AJAX_OPTION-Type"/>
<xs:element name="AJAX-LISTENER" minOccurs="0" type="FIELD-AJAX-LISTENER-Type"/>
<xs:element name="DATE-RANGE" type="FIELD-DATE-RANGE-Type" minOccurs="0"/>
<xs:element name="DATE-OPTION" minOccurs="0" type="FIELD-DATE_OPTION-Type"/>
<xs:element name="DATA-SOURCE" minOccurs="0" type="FIELD-DATA_SOURCE-Type"/>
<xs:element name="BUTTON" minOccurs="0" type="FIELD-BUTTON-TEXT_OPTION-Type"/>
<xs:element name="SEARCH-ORIGIN" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="NAME"/>
<xs:attribute type="YesNo" name="AJAX-LISTENER"/>
<xs:attribute type="xs:string" name="AJAX-DATASET"/>
<xs:attribute type="xs:string" name="CAPTION"/>
<xs:attribute type="xs:string" name="LABEL"/>
<xs:attribute type="xs:string" name="CLASS-NAME"/>
<xs:attribute type="FormFieldType" name="DATATYPE"/>
<xs:attribute type="InputType" name="INPUTTYPE"/>
<xs:attribute type="CharCaseType" name="CHARCASE"/>
<xs:attribute type="AlignmentType" name="ALIGN"/>
<xs:attribute type="xs:string" name="SEARCH-ORIGIN"/>
<xs:attribute type="YesNo" name="SHOWCAPT"/>
<xs:attribute type="xs:byte" name="DECIMAL"/>
<xs:attribute type="xs:string" name="SUFFIX"/>
<xs:attribute type="xs:string" name="VALUE"/>
<xs:attribute type="xs:string" name="RADIO_NAME"/>
<xs:attribute type="xs:string" name="UNCHECK_VALUE"/>
<xs:attribute type="xs:string" name="MIN-VALUE"/>
<xs:attribute type="xs:string" name="MAX-VALUE"/>
<xs:attribute type="xs:string" name="FILTER-FIELD"/>
<xs:attribute type="xs:string" name="READONLY"/>
</xs:complexType>
<xs:complexType name="FILTERS-FIELDS-Type">
<xs:sequence>
<xs:element name="FIELD" type="FILTERS-FIELD-Type" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DATA-GRIDS-Type">
<xs:sequence>
<xs:element name="GRID-OPTIONS" type="FIELD-GRID_OPTIONS-Type" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="ID"/>
</xs:complexType>
<!--***************************************************************************************-->
<xs:complexType name="FORMS-INCLUDE-Type">
<xs:sequence>
<xs:element name="INCLUDE" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="FILE" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FILTER-SCRIPT-EVENTS-Type" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="ON-CHANGE" minOccurs="0">
<xs:annotation>
<xs:documentation>javascript function exam : (filter)=>{}</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FOOTER-Type" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="FOOTER-STYLE" minOccurs="0">
<xs:annotation>
<xs:documentation>javascript function exam : (column)=>{ }</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="SHOW"/>
</xs:complexType>
<xs:element name="FORMS">
<xs:complexType>
<xs:sequence>
<xs:element name="INCLUDES" type="FORMS-INCLUDE-Type" minOccurs="0"/>
<xs:element name="DATASETS" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="DATASET" maxOccurs="unbounded" type="DATASET-Type"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DATASET" maxOccurs="1" type="DATASET-Type" minOccurs="0"/>
<xs:element name="FORM">
<xs:complexType>
<xs:sequence>
<xs:element name="EXECUTOR" type="EDITOR-EXECUTOR-Type" minOccurs="0"/>
<xs:element name="FORM_BROWSE" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="HEADER" type="FORM-BROWSE-HEADER-Type"/>
<xs:element type="xs:string" name="PAGESIZE" minOccurs="0"/>
<xs:element type="xs:string" name="KEYFIELDS" minOccurs="0"/>
<xs:element name="TITLES" type="FORM-BROWSE-TITLES-Type" minOccurs="0"/>
<xs:element name="GROUP-BY" type="FORM-BROWSE-GROUPBY-Type" minOccurs="0"/>
<xs:element name="FIELDS" type="FORM-BROWSE-FIELDS-Type" minOccurs="0"/>
<xs:element name="FILTERS" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="FIELDS" type="FILTERS-FIELDS-Type"/>
<xs:element name="LAYOUT" type="EDITOR-LAYOUT-Type"/>
<xs:element name="BUTTONS" type="EDITOR-BUTTONS-Type" minOccurs="0"/>
<xs:element name="SCRIPT" type="FILTER-SCRIPT-EVENTS-Type" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="YesNo" name="ALLOW-NO-FILTER"/>
<xs:attribute type="YesNo" name="AUTO-APPLY"/>
</xs:complexType>
</xs:element>
<xs:element name="POSTFIELDS" type="EDITOR-FIELDS-Type" minOccurs="0"/>
<xs:element name="BUTTONS" type="EDITOR-BUTTONS-Type" minOccurs="0"/>
<xs:element name="REPORT-SUMMARY" type="xs:string" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>javascript function
exam : (data)=>{ }</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="FOOTER" type="FOOTER-Type" minOccurs="0" maxOccurs="1">
<xs:annotation>
<xs:documentation>javascript function
exam : (data)=>{ }</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="SCRIPT" type="BROWSE-SCRIPT-Type" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="DATAID"/>
<xs:attribute type="xs:integer" name="HEIGHT"/>
<xs:attribute type="xs:string" name="HEADER"/>
<xs:attribute type="xs:string" name="FOOTER"/>
<xs:attribute type="YesNo" name="REPORT"/>
<xs:attribute type="YesNo" name="EXPORT"/>
<xs:attribute type="FooterPosition" name="FOOTER-POSITION"/>
</xs:complexType>
</xs:element>
<xs:element name="FORM_ENTRY" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ACTION-FILTER" type="EDITOR-ACTION-FILTER-Type" minOccurs="0"/>
<xs:element name="DETAIL-DATA" type="EDITOR-DETAIL-DATA-Type" maxOccurs="unbounded" minOccurs="0"/>
<xs:element name="DETAILS" type="EDITOR-DETAIL-DATAS-Type" maxOccurs="unbounded" minOccurs="0"/>
<xs:element name="INCLUDE" type="EDITOR-INCLUDE-Type" minOccurs="0"/>
<xs:element name="FIELDS" type="EDITOR-FIELDS-Type"/>
<xs:element name="LAYOUT" type="EDITOR-LAYOUT-Type"/>
<xs:element name="BUTTONS" type="EDITOR-BUTTONS-Type" minOccurs="0"/>
<xs:element name="AUTOUPDATES" type="EDITOR-AUTOUPDATES-Type" minOccurs="0"/>
<xs:element name="SCRIPT" type="EDITOR-SCRIPT-Type" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="DATAID"/>
<xs:attribute type="YesNo" name="AJAX-FORM"/>
<xs:attribute type="YesNo" name="AUTOINSERT"/>
<xs:attribute type="YesNo" name="RETURN-TO-EDITOR"/>
<xs:attribute type="YesNo" name="SAVE"/>
<xs:attribute type="YesNo" name="MANUAL-SAVE"/>
<xs:attribute type="YesNo" name="RETURN"/>
<xs:attribute type="YesNo" name="RESET"/>
<xs:attribute type="YesNo" name="PARAMFORM"/>
<xs:attribute type="xs:string" name="SAVE_CAPT"/>
<xs:attribute type="xs:string" name="RETURN_CAPT"/>
<xs:attribute type="xs:string" name="RESET_CAPT"/>
<xs:attribute type="xs:string" name="HEADER"/>
<xs:attribute type="xs:string" name="FOOTER"/>
<xs:attribute type="FooterPosition" name="FOOTER-POSITION"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="ID"/>
<xs:attribute type="xs:string" name="TITLE"/>
<xs:attribute type="xs:string" name="SUBTITLE"/>
</xs:complexType>
</xs:element>
<xs:element name="DATA-GRIDS" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="DATA-GRID" maxOccurs="unbounded" type="FIELD-GRID_OPTIONS-Type"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>