Especificações XSD dos formulários Vitruvio
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

402 lines
15 KiB

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- Parametros comuns nos Campos -->
<xs:include schemaLocation="vitruvio-form-common-attrs.xsd" />
<!-- Componentes padrao -->
<xs:include schemaLocation="vitruvio-form-basic-components.xsd" />
<!-- Componentes para uso com bancos de dados -->
<xs:include schemaLocation="vitruvio-form-db-components.xsd" />
<!-- Componentes especificos ao contexto da aplicacao -->
<xs:include schemaLocation="vitruvio-form-specific-components.xsd" />
<!-- Form containers -->
<xs:include schemaLocation="vitruvio-form-containers.xsd" />
<!-- Scripting defs -->
<xs:include schemaLocation="vitruvio-form-scripting.xsd" />
<!-- Suporte a Widgets -->
<xs:include schemaLocation="vitruvio-form-widgets.xsd" />
<!-- Suporte a Widgets -->
<xs:include schemaLocation="vitruvio-mobile-widgets.xsd" />
<!-- Base Form para implementacoes especificas -->
<xs:complexType name="vitruvio-mobile-basic-form-structure">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:sequence>
<xs:attribute name="formKey" type="xs:string" use="required" />
</xs:complexType>
<!-- Images para biblioteca de recursos -->
<xs:complexType name="images-library">
<xs:sequence>
<xs:element name="library" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="file-id" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="static" minOccurs="0" maxOccurs="unbounded">
<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:element name="by-field-value" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="ref" use="required" />
<xs:attribute type="xs:string" name="searchExtensions" use="required" />
<xs:attribute name="searchPattern" use="optional" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="FILE_NAME_STARTS_WITH" />
<xs:enumeration value="FILE_NAME_EXACT_MATCH" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="key" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="vitruvio-mobile-base-form">
<xs:complexContent>
<xs:extension base="vitruvio-mobile-basic-form-structure">
<xs:sequence>
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="discoveryScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
<xs:element name="ServerValidator" type="server-side-validation" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="images" minOccurs="0" maxOccurs="1" type="images-library"/>
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="Panel" type="SubFormPanel" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ServerSide" type="MobileServerSide" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="server-side-validation">
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="ref" type="xs:string" use="required" />
<xs:attribute name="execution">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SAVE" />
<xs:enumeration value="COMPLETE" />
<xs:enumeration value="BOTH" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<!-- Subformularios que podem ser anexados dentro de Forms RAIZ (ROOT) -->
<xs:complexType name="vitruvio-subform">
<xs:complexContent>
<xs:extension base="vitruvio-mobile-basic-form-structure">
<xs:sequence>
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
<xs:element name="ServerValidator" type="server-side-validation" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ItemList">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="property">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:string" />
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="expand-ratio" type="xs:float" />
<xs:attribute name="useCaptionValue" type="xs:boolean" />
<xs:attribute name="format" type="xs:string" />
<xs:attribute name="decimalSeparator" type="xs:string" />
<xs:attribute name="groupingSeparator" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="caption" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attribute name="addItemButtonCaption" type="xs:string" />
<xs:attribute name="removeItemConfirmationMessage" type="xs:string" />
<xs:attribute name="rows" type="xs:positiveInteger" />
<xs:attribute name="minItens" type="xs:positiveInteger" />
<xs:attribute name="maxItens" type="xs:positiveInteger" />
</xs:complexType>
</xs:element>
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="VerticalLayout" />
<xs:element name="HorizontalLayout" type="HorizontalLayout" />
<xs:element name="Panel" type="Panel" />
<xs:element name="TabLayout" type="TabLayout" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="images" minOccurs="0" maxOccurs="1" type="images-library"/>
<xs:element name="events" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="crud">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="script" type="script" maxOccurs="1" minOccurs="1" />
</xs:sequence>
<xs:attribute name="allowedEvents" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Extensao dos containers de layout padrao para inclusao de subforms especiais -->
<!-- Grupo de layouts -->
<xs:group name="FormLayoutGroup">
<xs:choice>
<!-- Elementos visuais e containers -->
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="Panel" type="SubFormPanel" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
</xs:group>
<!-- Definicao de elementos possiveis por padrao num container de componentes -->
<xs:group name="FormComponentContainer">
<xs:choice>
<!-- Layouts -->
<xs:group ref="FormLayoutGroup" />
<!-- Subforms -->
<xs:element name="SubForm" type="vitruvio-subform" minOccurs="0" maxOccurs="unbounded" />
<!-- Componentes reutilizaveis da biblioteca -->
<xs:element name="ComplexComponent" type="LibraryComplexComponent" />
<xs:element name="FieldComponent" type="LibraryFieldComponent" />
<!-- Suporte a definicao de widgets -->
<xs:group ref="CoreWidgets" />
<xs:element name="GridEditorWidget" type="GridEditorWidget" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ProgressBarLinear" type="ProgressBarLinear" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="CustomWidget" type="CustomWidget" />
<!-- Campos -->
<xs:group ref="fieldGroup" />
</xs:choice>
</xs:group>
<xs:complexType name="SubFormVerticalLayout">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="layoutMandatoryAttr"/>
<xs:attributeGroup ref="orderedLayoutAttr"/>
</xs:complexType>
<xs:complexType name="SubFormHorizontalLayout">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="layoutMandatoryAttr"/>
<xs:attributeGroup ref="orderedLayoutAttr"/>
</xs:complexType>
<!-- Tabs -->
<xs:complexType name="SubFormTabComponent">
<xs:sequence>
<xs:group ref="FormComponentContainer" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="caption" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="SubFormTabLayout">
<xs:sequence>
<xs:element name="Tab" type="SubFormTabComponent" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="framed" type="xs:boolean" />
<xs:attribute name="compact" type="xs:boolean" />
<xs:attribute name="centerTabs" type="xs:boolean" />
<xs:attribute name="width" type="xs:string" />
<xs:attribute name="height" type="xs:string" />
<xs:attributeGroup ref="layoutMandatoryAttr"/>
</xs:complexType>
<xs:complexType name="SubFormPanel">
<xs:complexContent>
<xs:extension base="BasePanel">
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Componente de Form ROOT -->
<xs:complexType name="vitruvio-subform-enabled-form">
<xs:complexContent>
<xs:extension base="vitruvio-mobile-basic-form-structure">
<xs:sequence>
<xs:element name="initScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="discoveryScript" type="script" minOccurs="0" maxOccurs="1" />
<xs:element name="validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice>
<xs:element name="ScriptValidator" type="form-validation-script" />
<xs:element name="ServerValidator" type="server-side-validation" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="attachments" type="FormAttachments" minOccurs="0" maxOccurs="1" />
<xs:element name="components" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="VerticalLayout" type="SubFormVerticalLayout" />
<xs:element name="HorizontalLayout" type="SubFormHorizontalLayout" />
<xs:element name="Panel" type="SubFormPanel" />
<xs:element name="TabLayout" type="SubFormTabLayout" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:attributeGroup name="mobileDataSourceAttrs">
<xs:attribute name="connection-key" type="xs:string" />
<xs:attribute name="autoSyncOnInit" type="xs:boolean" />
<xs:attribute name="autoSyncOnDiscovery" type="xs:boolean" />
<xs:attribute name="refreshInSeconds" type="xs:int" />
<xs:attribute name="validForSeconds" type="xs:int" />
<xs:attribute name="workOnline" type="xs:boolean" />
<xs:attribute name="scope">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="DEFAULT"/>
<xs:enumeration value="PROCESS_DEFINITION"/>
<xs:enumeration value="PROCESS_INSTANCE"/>
<xs:enumeration value="TASK_INSTANCE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:complexType name="mobile-script-data-source">
<xs:complexContent>
<xs:extension base="script-id-required">
<xs:attributeGroup ref="mobileDataSourceAttrs" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="mobile-free-query-datasource">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="description" type="xs:string" />
<xs:attributeGroup ref="mobileDataSourceAttrs" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Datasource para uso de Querys mapeadas pre cadastradas no Vitruvio -->
<xs:complexType name="mobie-query-datasource">
<xs:attribute name="key" type="xs:string" use="required" />
<xs:attributeGroup ref="mobileDataSourceAttrs" />
</xs:complexType>
<xs:complexType name="MobileServerSide">
<xs:sequence>
<xs:element name="Validators" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Validator" type="script-id-required" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DataSources" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element name="ScriptDataSource" type="mobile-script-data-source" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="SQLBuilderScriptDataSource" type="mobile-script-data-source" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="FreeQueryDataSource" type="mobile-free-query-datasource" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="QueryDataSource" type="mobie-query-datasource" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Bridges" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Bridge" type="script-id-required" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>