| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360 |
- <?xml version="1.0" encoding="UTF-8"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- targetNamespace="ui-layout-basic-controls"
- xmlns:tns="ui-layout-basic-controls"
- elementFormDefault="qualified"
- version="1.3">
- <!-- ENHANCEMENT: Control Instance Base Type with accessibility and data binding -->
- <xs:complexType name="BasicControlInstanceType" mixed="true">
- <xs:group ref="tns:BasicControlContentGroup" minOccurs="0" maxOccurs="unbounded"/>
- <!-- ENHANCEMENT: Data binding attributes -->
- <xs:attribute name="data-context" type="xs:string"/>
- <xs:attribute name="binding-path" type="xs:string"/>
- <xs:attribute name="command-binding" type="xs:string"/>
- <xs:attribute name="validation-rule" type="xs:string"/>
- <xs:attribute name="converter" type="xs:string"/>
- <xs:attribute name="binding-mode" type="tns:BindingModeEnum" default="TwoWay"/>
- <!-- ENHANCEMENT: Accessibility attributes -->
- <xs:attribute name="aria-label" type="xs:string"/>
- <xs:attribute name="aria-description" type="xs:string"/>
- <xs:attribute name="aria-role" type="xs:string"/>
- <xs:attribute name="aria-live" type="tns:AriaLiveEnum" default="off"/>
- <xs:attribute name="tab-index" type="xs:int" default="0"/>
- <xs:attribute name="access-key" type="xs:string"/>
- <xs:attribute name="high-contrast-support" type="xs:boolean" default="true"/>
- <xs:attribute name="screen-reader-text" type="xs:string"/>
- <!-- ENHANCEMENT: Version tracking -->
- <xs:attribute name="schema-version" type="xs:string" default="1.3"/>
- <xs:attribute name="platform-hint" type="tns:PlatformHintEnum" default="basic"/>
- <xs:anyAttribute processContents="lax"/>
- </xs:complexType>
- <!-- ENHANCEMENT: Binding Mode Enumeration -->
- <xs:simpleType name="BindingModeEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="OneWay"/>
- <xs:enumeration value="TwoWay"/>
- <xs:enumeration value="OneTime"/>
- <xs:enumeration value="OneWayToSource"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: ARIA Live Region Enumeration -->
- <xs:simpleType name="AriaLiveEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="off"/>
- <xs:enumeration value="polite"/>
- <xs:enumeration value="assertive"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Platform Hint Enumeration -->
- <xs:simpleType name="PlatformHintEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="basic"/>
- <xs:enumeration value="winforms"/>
- <xs:enumeration value="avalonia"/>
- <xs:enumeration value="kde"/>
- <xs:enumeration value="web"/>
- <xs:enumeration value="mobile"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- Basic Control Content Group -->
- <xs:group name="BasicControlContentGroup">
- <xs:choice>
- <!-- Core Basic Controls -->
- <xs:element name="Label" type="tns:BasicControlInstanceType"/>
- <xs:element name="TextBox" type="tns:BasicControlInstanceType"/>
- <xs:element name="ComboBox" type="tns:BasicControlInstanceType"/>
- <xs:element name="Button" type="tns:BasicControlInstanceType"/>
- <xs:element name="Panel" type="tns:BasicControlInstanceType"/>
- <xs:element name="PopupPanel" type="tns:BasicControlInstanceType"/>
- <xs:element name="Menu" type="tns:BasicControlInstanceType"/>
- <xs:element name="ListView" type="tns:BasicControlInstanceType"/>
- <xs:element name="TreeView" type="tns:BasicControlInstanceType"/>
- <xs:element name="TabControl" type="tns:BasicControlInstanceType"/>
- <xs:element name="ButtonBar" type="tns:BasicControlInstanceType"/>
- <xs:element name="ListBox" type="tns:BasicControlInstanceType"/>
- <xs:element name="CheckBox" type="tns:BasicControlInstanceType"/>
- <xs:element name="RadioButton" type="tns:BasicControlInstanceType"/>
- <xs:element name="Image" type="tns:BasicControlInstanceType"/>
- <xs:element name="StatusBar" type="tns:BasicControlInstanceType"/>
- <xs:element name="ToolBar" type="tns:BasicControlInstanceType"/>
- <xs:element name="SplitPanel" type="tns:BasicControlInstanceType"/>
- <xs:element name="Separator" type="tns:BasicControlInstanceType"/>
- <!-- ENHANCEMENT: Additional controls -->
- <xs:element name="ProgressBar" type="tns:BasicControlInstanceType"/>
- <xs:element name="DatePicker" type="tns:BasicControlInstanceType"/>
- <xs:element name="NumericUpDown" type="tns:BasicControlInstanceType"/>
- <xs:element name="Slider" type="tns:BasicControlInstanceType"/>
-
- <!-- Structure Elements -->
- <xs:element name="FormField" type="tns:BasicControlInstanceType"/>
- <xs:element name="slot" type="tns:SlotType"/>
-
- <!-- Supporting Elements -->
- <xs:element name="menu-items" type="tns:MenuItemsType"/>
- <xs:element name="columns" type="tns:ColumnsType"/>
- <xs:element name="items" type="tns:ItemsType"/>
- <!-- ENHANCEMENT: Data binding and accessibility elements -->
- <xs:element name="data-binding" type="tns:DataBindingDetailsType"/>
- <xs:element name="accessibility" type="tns:AccessibilityDetailsType"/>
-
- <!-- ENHANCEMENT: Conditional visibility elements -->
- <xs:element name="conditional-visibility" type="tns:ConditionalVisibilityType"/>
- </xs:choice>
- </xs:group>
- <!-- ENHANCEMENT: Enhanced Slot Definition with v1.3 features -->
- <xs:complexType name="SlotType">
- <xs:complexContent>
- <xs:extension base="tns:BasicControlInstanceType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="allowed-controls" type="xs:string"/>
- <xs:attribute name="required" type="xs:boolean" default="false"/>
- <xs:attribute name="default" type="xs:boolean" default="false"/>
- <!-- ENHANCEMENT: Accessibility and validation -->
- <xs:attribute name="accessibility-landmark" type="xs:string"/>
- <xs:attribute name="data-validation" type="xs:string"/>
- <!-- ENHANCEMENT: v1.3 conditional visibility -->
- <xs:attribute name="visibility-binding" type="xs:string"/>
- <xs:attribute name="visibility-value" type="xs:string"/>
- <xs:attribute name="visibility-converter" type="xs:string"/>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <!-- ENHANCEMENT: Conditional Visibility Type -->
- <xs:complexType name="ConditionalVisibilityType">
- <xs:sequence>
- <xs:element name="condition" type="tns:VisibilityConditionType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="VisibilityConditionType">
- <xs:attribute name="property" type="xs:string" use="required"/>
- <xs:attribute name="operator" type="tns:ComparisonOperatorEnum" use="required"/>
- <xs:attribute name="value" type="xs:string" use="required"/>
- <xs:attribute name="logic" type="tns:LogicOperatorEnum" default="AND"/>
- </xs:complexType>
- <xs:simpleType name="ComparisonOperatorEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="Equals"/>
- <xs:enumeration value="NotEquals"/>
- <xs:enumeration value="GreaterThan"/>
- <xs:enumeration value="LessThan"/>
- <xs:enumeration value="GreaterThanOrEqual"/>
- <xs:enumeration value="LessThanOrEqual"/>
- <xs:enumeration value="Contains"/>
- <xs:enumeration value="StartsWith"/>
- <xs:enumeration value="EndsWith"/>
- <xs:enumeration value="IsNull"/>
- <xs:enumeration value="IsNotNull"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="LogicOperatorEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="AND"/>
- <xs:enumeration value="OR"/>
- <xs:enumeration value="NOT"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Data Binding Details -->
- <xs:complexType name="DataBindingDetailsType">
- <xs:sequence>
- <xs:element name="binding" type="tns:BindingDetailType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="BindingDetailType">
- <xs:attribute name="property" type="xs:string" use="required"/>
- <xs:attribute name="source-path" type="xs:string" use="required"/>
- <xs:attribute name="mode" type="tns:BindingModeEnum" default="TwoWay"/>
- <xs:attribute name="converter" type="xs:string"/>
- <xs:attribute name="validation-rule" type="xs:string"/>
- <xs:attribute name="update-trigger" type="tns:UpdateTriggerEnum" default="PropertyChanged"/>
- <xs:attribute name="fallback-value" type="xs:string"/>
- <xs:attribute name="target-null-value" type="xs:string"/>
- </xs:complexType>
- <xs:simpleType name="UpdateTriggerEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="PropertyChanged"/>
- <xs:enumeration value="LostFocus"/>
- <xs:enumeration value="Explicit"/>
- <xs:enumeration value="SourceUpdated"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Accessibility Details -->
- <xs:complexType name="AccessibilityDetailsType">
- <xs:sequence>
- <xs:element name="screen-reader" type="tns:ScreenReaderDetailsType" minOccurs="0"/>
- <xs:element name="keyboard-support" type="tns:KeyboardSupportType" minOccurs="0"/>
- <xs:element name="visual-support" type="tns:VisualSupportType" minOccurs="0"/>
- <xs:element name="interaction-support" type="tns:InteractionSupportType" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="ScreenReaderDetailsType">
- <xs:attribute name="label" type="xs:string"/>
- <xs:attribute name="description" type="xs:string"/>
- <xs:attribute name="role" type="xs:string"/>
- <xs:attribute name="live-region" type="tns:AriaLiveEnum" default="off"/>
- <xs:attribute name="owns" type="xs:string"/>
- <xs:attribute name="controls" type="xs:string"/>
- <xs:attribute name="described-by" type="xs:string"/>
- <xs:attribute name="labelled-by" type="xs:string"/>
- </xs:complexType>
- <xs:complexType name="KeyboardSupportType">
- <xs:attribute name="tab-stop" type="xs:boolean" default="true"/>
- <xs:attribute name="tab-index" type="xs:int" default="0"/>
- <xs:attribute name="access-key" type="xs:string"/>
- <xs:attribute name="shortcut-key" type="xs:string"/>
- <xs:attribute name="focus-on-click" type="xs:boolean" default="true"/>
- <xs:attribute name="escape-key-handler" type="xs:string"/>
- <xs:attribute name="enter-key-handler" type="xs:string"/>
- </xs:complexType>
- <xs:complexType name="VisualSupportType">
- <xs:attribute name="high-contrast" type="xs:boolean" default="true"/>
- <xs:attribute name="font-size-scale" type="xs:boolean" default="true"/>
- <xs:attribute name="color-blind-safe" type="xs:boolean" default="true"/>
- <xs:attribute name="animation-reduce" type="xs:boolean" default="false"/>
- <xs:attribute name="transparency-support" type="xs:boolean" default="true"/>
- </xs:complexType>
- <!-- ENHANCEMENT: New Interaction Support Type -->
- <xs:complexType name="InteractionSupportType">
- <xs:attribute name="touch-support" type="xs:boolean" default="false"/>
- <xs:attribute name="gesture-support" type="xs:boolean" default="false"/>
- <xs:attribute name="voice-control" type="xs:boolean" default="false"/>
- <xs:attribute name="eye-tracking" type="xs:boolean" default="false"/>
- <xs:attribute name="minimum-target-size" type="xs:int" default="44"/>
- </xs:complexType>
- <!-- ENHANCEMENT: Enhanced Supporting Types -->
- <xs:complexType name="MenuItemsType">
- <xs:sequence>
- <xs:element name="menu-item" maxOccurs="unbounded">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="menu-items" type="tns:MenuItemsType" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="text" type="xs:string" use="required"/>
- <xs:attribute name="action" type="xs:string"/>
- <xs:attribute name="separator" type="xs:boolean" default="false"/>
- <!-- ENHANCEMENT: Command binding and accessibility -->
- <xs:attribute name="shortcut-key" type="xs:string"/>
- <xs:attribute name="command-binding" type="xs:string"/>
- <xs:attribute name="command-parameter" type="xs:string"/>
- <xs:attribute name="aria-label" type="xs:string"/>
- <xs:attribute name="icon" type="xs:string"/>
- <xs:attribute name="enabled" type="xs:boolean" default="true"/>
- <xs:attribute name="visible" type="xs:boolean" default="true"/>
- <!-- ENHANCEMENT: v1.3 conditional visibility -->
- <xs:attribute name="visibility-binding" type="xs:string"/>
- <xs:attribute name="enabled-binding" type="xs:string"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="orientation" type="tns:OrientationEnum" default="vertical"/>
- </xs:complexType>
- <xs:simpleType name="OrientationEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="horizontal"/>
- <xs:enumeration value="vertical"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:complexType name="ColumnsType">
- <xs:sequence>
- <xs:element name="column" maxOccurs="unbounded">
- <xs:complexType>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="text" type="xs:string" use="required"/>
- <xs:attribute name="width" type="xs:string"/>
- <xs:attribute name="sortable" type="xs:boolean" default="true"/>
- <!-- ENHANCEMENT: Data binding and accessibility -->
- <xs:attribute name="data-type" type="tns:DataTypeEnum" default="string"/>
- <xs:attribute name="binding-path" type="xs:string"/>
- <xs:attribute name="converter" type="xs:string"/>
- <xs:attribute name="sort-member-path" type="xs:string"/>
- <xs:attribute name="aria-label" type="xs:string"/>
- <xs:attribute name="format-string" type="xs:string"/>
- <xs:attribute name="alignment" type="tns:AlignmentEnum" default="left"/>
- <xs:attribute name="visible" type="xs:boolean" default="true"/>
- <xs:attribute name="resizable" type="xs:boolean" default="true"/>
- <xs:attribute name="frozen" type="xs:boolean" default="false"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- <xs:simpleType name="DataTypeEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="string"/>
- <xs:enumeration value="int"/>
- <xs:enumeration value="decimal"/>
- <xs:enumeration value="double"/>
- <xs:enumeration value="float"/>
- <xs:enumeration value="boolean"/>
- <xs:enumeration value="date"/>
- <xs:enumeration value="datetime"/>
- <xs:enumeration value="timespan"/>
- <xs:enumeration value="currency"/>
- <xs:enumeration value="percentage"/>
- <xs:enumeration value="image"/>
- <xs:enumeration value="hyperlink"/>
- <xs:enumeration value="custom"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="AlignmentEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="left"/>
- <xs:enumeration value="center"/>
- <xs:enumeration value="right"/>
- <xs:enumeration value="justify"/>
- <xs:enumeration value="stretch"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:complexType name="ItemsType">
- <xs:sequence>
- <xs:element name="item" maxOccurs="unbounded">
- <xs:complexType>
- <xs:attribute name="value" type="xs:string"/>
- <xs:attribute name="text" type="xs:string"/>
- <!-- ENHANCEMENT: Data binding and accessibility -->
- <xs:attribute name="data-context" type="xs:string"/>
- <xs:attribute name="command-parameter" type="xs:string"/>
- <xs:attribute name="aria-label" type="xs:string"/>
- <xs:attribute name="icon" type="xs:string"/>
- <xs:attribute name="tooltip" type="xs:string"/>
- <xs:attribute name="enabled" type="xs:boolean" default="true"/>
- <xs:attribute name="visible" type="xs:boolean" default="true"/>
- <xs:attribute name="selected" type="xs:boolean" default="false"/>
- <xs:attribute name="group" type="xs:string"/>
- <xs:attribute name="sort-order" type="xs:int" default="0"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <!-- ENHANCEMENT: Collection-level data binding -->
- <xs:attribute name="items-source" type="xs:string"/>
- <xs:attribute name="display-member-path" type="xs:string"/>
- <xs:attribute name="value-member-path" type="xs:string"/>
- <xs:attribute name="selected-value-path" type="xs:string"/>
- <xs:attribute name="group-member-path" type="xs:string"/>
- <xs:attribute name="sort-member-path" type="xs:string"/>
- <xs:attribute name="filter-expression" type="xs:string"/>
- </xs:complexType>
- </xs:schema>
|