Files
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

127 lines
4.4 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:element name="DATASETS" type="DATASETSType"/>
<xs:complexType name="DATASETSType">
<xs:sequence>
<xs:element type="DATASETType" name="DATASET" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="FieldDataType">
<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="DATE"/>
</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="AlignmentType">
<xs:restriction base="xs:string">
<xs:enumeration value="left"/>
<xs:enumeration value="center"/>
<xs:enumeration value="right"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="SQLType">
<xs:all>
<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:all>
</xs:complexType>
<!-- <xs:complexType name="SQLType">-->
<!-- <xs:sequence>-->
<!-- <xs:element type="xs:string" name="SELECT"/>-->
<!-- <xs:element type="xs:string" name="FROM"/>-->
<!-- <xs:element type="xs:string" name="WHERE"/>-->
<!-- <xs:element type="xs:string" name="GROUP"/>-->
<!-- <xs:element type="xs:string" name="ORDER"/>-->
<!-- </xs:sequence>-->
<!-- </xs:complexType>-->
<xs:complexType name="SUBDATASETType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="NAME"/>
<xs:attribute type="xs:string" name="DATASET-ID"/>
<xs:attribute type="xs:string" name="MASTER-FIELDS"/>
<xs:attribute type="xs:string" name="DETAIL-FIELDS"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="FIELD-GROUPType">
<xs:sequence>
<xs:element type="FIELDType" name="FIELD" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SUBDATASETSType">
<xs:sequence>
<xs:element type="SUBDATASETType" name="SUBDATASET" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="FIELDType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="NAME" use="optional"/>
<xs:attribute type="xs:string" name="LABEL" use="optional"/>
<xs:attribute type="xs:string" name="CAPTION" use="optional"/>
<xs:attribute type="FieldDataType" name="TYPE" use="optional"/>
<xs:attribute type="xs:string" name="SORT" use="optional"/>
<xs:attribute type="FieldKind" name="KIND" use="optional"/>
<xs:attribute type="YesNo" name="WARP" use="optional"/>
<xs:attribute type="xs:string" name="WIDTH" use="optional"/>
<xs:attribute type="AlignmentType" name="ALIGN" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="FIELDSType">
<xs:sequence>
<xs:element type="FIELDType" name="FIELD" maxOccurs="unbounded" minOccurs="0"/>
<xs:element type="FIELD-GROUPType" name="DATA-FIELDS" minOccurs="0" maxOccurs="1"/>
<xs:element type="FIELD-GROUPType" name="VIEW-FIELDS" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DATASETType">
<xs:sequence>
<xs:element type="xs:string" name="SCHEMA"/>
<xs:element type="xs:string" name="TABLEDESC" minOccurs="0"/>
<xs:element type="xs:integer" name="MAXROWS" minOccurs="0"/>
<xs:element type="SQLType" name="SQL"/>
<xs:element type="FIELDSType" name="FIELDS" minOccurs="0"/>
<xs:element type="SUBDATASETSType" name="SUBDATASETS" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="ID" use="required"/>
</xs:complexType>
</xs:schema>