| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- <?xml version="1.0" encoding="UTF-8"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://quadarax.com/ui-layout-webawesome-controls"
- xmlns:tns="http://quadarax.com/ui-layout-webawesome-controls"
- elementFormDefault="qualified"
- version="1.5">
- <!--
- Web Awesome Controls XSD Schema Extension
- This schema extends the base ui-layout-patterns.xsd for Web Awesome controls
- It should be used in conjunction with ui-layout-patterns.xsd
- -->
- <!-- Root element matching the XML file -->
- <xs:element name="patterns" type="tns:WebAwesomePatternsType"/>
- <!-- Main patterns container type -->
- <xs:complexType name="WebAwesomePatternsType">
- <xs:sequence>
- <xs:element name="control" type="tns:ControlType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="structure" type="tns:StructureType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="wireframe" type="tns:WireframeType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="schema-version" type="xs:string" default="1.5"/>
- <xs:attribute name="target-platform" type="xs:string" default="web"/>
- </xs:complexType>
- <!-- Control Type Definition -->
- <xs:complexType name="ControlType">
- <xs:sequence>
- <xs:element name="description" type="xs:string" minOccurs="0"/>
- <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
- <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
- <xs:element name="behavior" type="tns:BehaviorType" minOccurs="0"/>
- <xs:element name="accessibility" type="tns:AccessibilityType" minOccurs="0"/>
- <xs:element name="validation" type="tns:ValidationRulesType" minOccurs="0"/>
- <xs:element name="template" type="tns:TemplateType" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="category" type="xs:string" use="required"/>
- <xs:attribute name="inherits" type="xs:string"/>
- <xs:attribute name="platform" type="xs:string" default="web"/>
- <xs:attribute name="schema-version" type="xs:string" default="1.5"/>
- </xs:complexType>
- <!-- Constraints Type -->
- <xs:complexType name="ConstraintsType">
- <xs:sequence>
- <xs:element name="allowed-parents" type="xs:string" minOccurs="0"/>
- <xs:element name="allowed-children" type="xs:string" minOccurs="0"/>
- <xs:element name="container" type="xs:boolean" minOccurs="0"/>
- <xs:element name="required-slots" type="xs:string" minOccurs="0"/>
- <xs:element name="platform-constraints" type="tns:PlatformConstraintsType" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Platform Constraints Type -->
- <xs:complexType name="PlatformConstraintsType">
- <xs:sequence>
- <xs:element name="platform-constraint" type="tns:PlatformConstraintType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="PlatformConstraintType">
- <xs:attribute name="platform" type="xs:string" use="required"/>
- <xs:attribute name="min-version" type="xs:string"/>
- <xs:attribute name="max-version" type="xs:string"/>
- <xs:attribute name="feature-required" type="xs:string"/>
- </xs:complexType>
- <!-- Attributes Container Type -->
- <xs:complexType name="AttributesType">
- <xs:sequence>
- <xs:element name="attribute" type="tns:AttributeType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Attribute Type -->
- <xs:complexType name="AttributeType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="tns:AttributeTypeEnum" use="required"/>
- <xs:attribute name="default" type="xs:string"/>
- <xs:attribute name="required" type="xs:boolean" default="false"/>
- <xs:attribute name="category" type="xs:string"/>
- <xs:attribute name="values" type="xs:string"/>
- <xs:attribute name="min" type="xs:string"/>
- <xs:attribute name="max" type="xs:string"/>
- </xs:complexType>
- <!-- Attribute Type Enumeration -->
- <xs:simpleType name="AttributeTypeEnum">
- <xs:restriction base="xs:string">
- <!-- Basic types -->
- <xs:enumeration value="string"/>
- <xs:enumeration value="bool"/> <!-- Support for existing XML format -->
- <xs:enumeration value="boolean"/> <!-- Standard XSD boolean type -->
- <xs:enumeration value="int"/>
- <xs:enumeration value="integer"/>
- <xs:enumeration value="decimal"/>
- <xs:enumeration value="double"/>
- <xs:enumeration value="float"/>
-
- <!-- Web-specific types -->
- <xs:enumeration value="enum"/>
- <xs:enumeration value="color"/>
- <xs:enumeration value="url"/>
- <xs:enumeration value="date"/>
- <xs:enumeration value="time"/>
- <xs:enumeration value="datetime"/>
-
- <!-- Custom types -->
- <xs:enumeration value="percentage"/>
- <xs:enumeration value="pixels"/>
- <xs:enumeration value="dimension"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- Behavior Type -->
- <xs:complexType name="BehaviorType">
- <xs:sequence>
- <xs:element name="event" type="tns:EventType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="command" type="tns:CommandType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="method" type="tns:MethodType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Event Type -->
- <xs:complexType name="EventType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="description" type="xs:string"/>
- <xs:attribute name="cancelable" type="xs:boolean" default="false"/>
- <xs:attribute name="bubbles" type="xs:boolean" default="true"/>
- </xs:complexType>
- <!-- Command Type -->
- <xs:complexType name="CommandType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="description" type="xs:string"/>
- <xs:attribute name="async" type="xs:boolean" default="false"/>
- </xs:complexType>
- <!-- Method Type -->
- <xs:complexType name="MethodType">
- <xs:sequence>
- <xs:element name="parameter" type="tns:ParameterType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="description" type="xs:string"/>
- <xs:attribute name="returns" type="xs:string"/>
- <xs:attribute name="async" type="xs:boolean" default="false"/>
- </xs:complexType>
- <!-- Parameter Type -->
- <xs:complexType name="ParameterType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="required" type="xs:boolean" default="true"/>
- <xs:attribute name="default" type="xs:string"/>
- </xs:complexType>
- <!-- Accessibility Type -->
- <xs:complexType name="AccessibilityType">
- <xs:sequence>
- <xs:element name="requirement" type="tns:AccessibilityRequirementType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="aria-attribute" type="tns:AriaAttributeType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Accessibility Requirement Type -->
- <xs:complexType name="AccessibilityRequirementType">
- <xs:attribute name="standard" type="xs:string" use="required"/>
- <xs:attribute name="level" type="xs:string" use="required"/>
- <xs:attribute name="description" type="xs:string"/>
- <xs:attribute name="required" type="xs:boolean" default="true"/>
- </xs:complexType>
- <!-- ARIA Attribute Type -->
- <xs:complexType name="AriaAttributeType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="value" type="xs:string"/>
- <xs:attribute name="required" type="xs:boolean" default="false"/>
- </xs:complexType>
- <!-- Validation Rules Type -->
- <xs:complexType name="ValidationRulesType">
- <xs:sequence>
- <xs:element name="rule" type="tns:ValidationRuleType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Validation Rule Type -->
- <xs:complexType name="ValidationRuleType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="value" type="xs:string"/>
- <xs:attribute name="pattern" type="xs:string"/>
- <xs:attribute name="message" type="xs:string"/>
- <xs:attribute name="severity" type="xs:string" default="error"/>
- </xs:complexType>
- <!-- Template Type -->
- <xs:complexType name="TemplateType" mixed="true">
- <xs:sequence>
- <xs:element name="slot" type="tns:SlotType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Slot Type -->
- <xs:complexType name="SlotType" mixed="true">
- <xs:sequence>
- <xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <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="multiple" type="xs:boolean" default="false"/>
- <xs:attribute name="default" type="xs:boolean" default="false"/>
- <xs:attribute name="dock" type="xs:string"/>
- </xs:complexType>
- <!-- Structure Type -->
- <xs:complexType name="StructureType">
- <xs:sequence>
- <xs:element name="description" type="xs:string" minOccurs="0"/>
- <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
- <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
- <xs:element name="template" type="tns:TemplateType"/>
- <xs:element name="composition" type="tns:CompositionType" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="category" type="xs:string" use="required"/>
- <xs:attribute name="inherits" type="xs:string"/>
- <xs:attribute name="platform" type="xs:string" default="web"/>
- <xs:attribute name="schema-version" type="xs:string" default="1.5"/>
- </xs:complexType>
- <!-- Composition Type -->
- <xs:complexType name="CompositionType">
- <xs:sequence>
- <xs:element name="component" type="tns:ComponentType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Component Type -->
- <xs:complexType name="ComponentType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="required" type="xs:boolean" default="false"/>
- <xs:attribute name="multiple" type="xs:boolean" default="false"/>
- </xs:complexType>
- <!-- Wireframe Type -->
- <xs:complexType name="WireframeType">
- <xs:sequence>
- <xs:element name="description" type="xs:string" minOccurs="0"/>
- <xs:element name="template" type="tns:TemplateType"/>
- <xs:element name="responsive" type="tns:ResponsiveType" minOccurs="0"/>
- <xs:element name="theme-support" type="tns:ThemeSupportType" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="platform" type="xs:string" default="web"/>
- <xs:attribute name="schema-version" type="xs:string" default="1.5"/>
- </xs:complexType>
- <!-- Responsive Type -->
- <xs:complexType name="ResponsiveType">
- <xs:sequence>
- <xs:element name="breakpoint" type="tns:BreakpointType" maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <!-- Breakpoint Type -->
- <xs:complexType name="BreakpointType">
- <xs:sequence>
- <xs:element name="layout-changes" type="xs:string" minOccurs="0"/>
- <xs:element name="visibility-rules" type="xs:string" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="min-width" type="xs:int"/>
- <xs:attribute name="max-width" type="xs:int"/>
- </xs:complexType>
- <!-- Theme Support Type -->
- <xs:complexType name="ThemeSupportType">
- <xs:sequence>
- <xs:element name="theme-variable" type="tns:ThemeVariableType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="dark-mode" type="xs:boolean" default="true"/>
- <xs:attribute name="custom-properties" type="xs:boolean" default="true"/>
- </xs:complexType>
- <!-- Theme Variable Type -->
- <xs:complexType name="ThemeVariableType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="default" type="xs:string"/>
- <xs:attribute name="description" type="xs:string"/>
- </xs:complexType>
- </xs:schema>
|