| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- <?xml version="1.0" encoding="UTF-8"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://quadarax.com/ui-layout-validation"
- xmlns:tns="http://quadarax.com/ui-layout-validation"
- elementFormDefault="qualified"
- version="1.6">
- <!-- Root element for validation rule include files -->
- <xs:element name="validation-rules" type="tns:ValidationRulesIncludeFileType"/>
- <!-- Validation rules include file structure -->
- <xs:complexType name="ValidationRulesIncludeFileType">
- <xs:sequence>
- <xs:element name="rule" type="tns:ValidationRuleType" minOccurs="0" maxOccurs="unbounded"/>
- <!-- ENHANCEMENT: v1.3 new validation features -->
- <xs:element name="rule-group" type="tns:ValidationRuleGroupType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="custom-validator" type="tns:CustomValidatorType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="validation-profile" type="tns:ValidationProfileType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <!-- ENHANCEMENT: Version tracking for validation files -->
- <xs:attribute name="schema-version" type="xs:string" default="1.6"/>
- <xs:attribute name="target-platform" type="tns:PlatformEnum" default="basic"/>
- <xs:attribute name="validation-level" type="tns:ValidationLevelEnum" default="standard"/>
- </xs:complexType>
- <!-- ENHANCEMENT: Platform Enumeration -->
- <xs:simpleType name="PlatformEnum">
- <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:enumeration value="mixed"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Validation Level Enumeration -->
- <xs:simpleType name="ValidationLevelEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="minimal"/>
- <xs:enumeration value="standard"/>
- <xs:enumeration value="strict"/>
- <xs:enumeration value="comprehensive"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- Validation Rule Type -->
- <xs:complexType name="ValidationRuleType">
- <xs:sequence>
- <xs:element name="description" type="xs:string"/>
- <xs:element name="constraint" type="xs:string" maxOccurs="unbounded"/>
- <!-- ENHANCEMENT: v1.3 additional rule features -->
- <xs:element name="condition" type="tns:ValidationConditionType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="exception" type="tns:ValidationExceptionType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="remediation" type="tns:RemediationType" minOccurs="0"/>
- <xs:element name="test-case" type="tns:ValidationTestCaseType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <!-- ENHANCEMENT: v1.3 rule attributes -->
- <xs:attribute name="category" type="tns:ValidationCategoryEnum" default="structural"/>
- <xs:attribute name="severity" type="tns:SeverityEnum" default="error"/>
- <xs:attribute name="priority" type="tns:PriorityEnum" default="medium"/>
- <xs:attribute name="platform" type="tns:PlatformEnum" default="basic"/>
- <xs:attribute name="enabled" type="xs:boolean" default="true"/>
- <xs:attribute name="version" type="xs:string" default="1.0"/>
- <xs:attribute name="deprecated" type="xs:boolean" default="false"/>
- <xs:attribute name="replaced-by" type="xs:string"/>
- </xs:complexType>
- <!-- ENHANCEMENT: Validation Category Enumeration -->
- <xs:simpleType name="ValidationCategoryEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="structural"/>
- <xs:enumeration value="semantic"/>
- <xs:enumeration value="accessibility"/>
- <xs:enumeration value="performance"/>
- <xs:enumeration value="security"/>
- <xs:enumeration value="usability"/>
- <xs:enumeration value="maintainability"/>
- <xs:enumeration value="compatibility"/>
- <xs:enumeration value="localization"/>
- <xs:enumeration value="business-rules"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Severity Enumeration -->
- <xs:simpleType name="SeverityEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="info"/>
- <xs:enumeration value="warning"/>
- <xs:enumeration value="error"/>
- <xs:enumeration value="critical"/>
- <xs:enumeration value="blocker"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Priority Enumeration -->
- <xs:simpleType name="PriorityEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="low"/>
- <xs:enumeration value="medium"/>
- <xs:enumeration value="high"/>
- <xs:enumeration value="critical"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Validation Condition Type -->
- <xs:complexType name="ValidationConditionType">
- <xs:attribute name="when" type="xs:string" use="required"/>
- <xs:attribute name="platform" type="tns:PlatformEnum"/>
- <xs:attribute name="version" type="xs:string"/>
- <xs:attribute name="context" type="xs:string"/>
- </xs:complexType>
- <!-- ENHANCEMENT: Validation Exception Type -->
- <xs:complexType name="ValidationExceptionType">
- <xs:attribute name="pattern" type="xs:string" use="required"/>
- <xs:attribute name="reason" type="xs:string" use="required"/>
- <xs:attribute name="approved-by" type="xs:string"/>
- <xs:attribute name="expires" type="xs:date"/>
- </xs:complexType>
- <!-- ENHANCEMENT: Remediation Type -->
- <xs:complexType name="RemediationType">
- <xs:sequence>
- <xs:element name="suggestion" type="xs:string" maxOccurs="unbounded"/>
- <xs:element name="auto-fix" type="tns:AutoFixType" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="difficulty" type="tns:DifficultyEnum" default="medium"/>
- <xs:attribute name="estimated-time" type="xs:string"/>
- </xs:complexType>
- <xs:complexType name="AutoFixType">
- <xs:attribute name="available" type="xs:boolean" use="required"/>
- <xs:attribute name="confidence" type="tns:ConfidenceEnum" default="medium"/>
- <xs:attribute name="description" type="xs:string"/>
- <xs:attribute name="side-effects" type="xs:string"/>
- </xs:complexType>
- <xs:simpleType name="DifficultyEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="trivial"/>
- <xs:enumeration value="easy"/>
- <xs:enumeration value="medium"/>
- <xs:enumeration value="hard"/>
- <xs:enumeration value="expert"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="ConfidenceEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="low"/>
- <xs:enumeration value="medium"/>
- <xs:enumeration value="high"/>
- <xs:enumeration value="certain"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Validation Test Case Type -->
- <xs:complexType name="ValidationTestCaseType">
- <xs:sequence>
- <xs:element name="input" type="xs:string"/>
- <xs:element name="expected-result" type="tns:ValidationResultEnum"/>
- <xs:element name="expected-message" type="xs:string" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="description" type="xs:string"/>
- </xs:complexType>
- <xs:simpleType name="ValidationResultEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="pass"/>
- <xs:enumeration value="fail"/>
- <xs:enumeration value="warning"/>
- <xs:enumeration value="skip"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Validation Rule Group Type -->
- <xs:complexType name="ValidationRuleGroupType">
- <xs:sequence>
- <xs:element name="description" type="xs:string"/>
- <xs:element name="rule-ref" type="tns:ValidationRuleRefType" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="category" type="tns:ValidationCategoryEnum" use="required"/>
- <xs:attribute name="enabled" type="xs:boolean" default="true"/>
- <xs:attribute name="execution-order" type="tns:ExecutionOrderEnum" default="parallel"/>
- </xs:complexType>
- <xs:complexType name="ValidationRuleRefType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="enabled" type="xs:boolean" default="true"/>
- <xs:attribute name="override-severity" type="tns:SeverityEnum"/>
- <xs:attribute name="configuration" type="xs:string"/>
- </xs:complexType>
- <xs:simpleType name="ExecutionOrderEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="parallel"/>
- <xs:enumeration value="sequential"/>
- <xs:enumeration value="dependency-ordered"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Custom Validator Type -->
- <xs:complexType name="CustomValidatorType">
- <xs:sequence>
- <xs:element name="description" type="xs:string"/>
- <xs:element name="implementation" type="tns:ValidatorImplementationType"/>
- <xs:element name="parameter" type="tns:ValidatorParameterType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="test-case" type="tns:ValidationTestCaseType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="version" type="xs:string" default="1.0"/>
- <xs:attribute name="author" type="xs:string"/>
- <xs:attribute name="category" type="tns:ValidationCategoryEnum" use="required"/>
- </xs:complexType>
- <xs:complexType name="ValidatorImplementationType">
- <xs:choice>
- <xs:element name="script" type="tns:ScriptImplementationType"/>
- <xs:element name="assembly" type="tns:AssemblyImplementationType"/>
- <xs:element name="rule-expression" type="tns:RuleExpressionType"/>
- </xs:choice>
- </xs:complexType>
- <xs:complexType name="ScriptImplementationType">
- <xs:attribute name="language" type="tns:ScriptLanguageEnum" use="required"/>
- <xs:attribute name="source" type="xs:string"/>
- <xs:attribute name="inline" type="xs:string"/>
- </xs:complexType>
- <xs:complexType name="AssemblyImplementationType">
- <xs:attribute name="assembly" type="xs:string" use="required"/>
- <xs:attribute name="type" type="xs:string" use="required"/>
- <xs:attribute name="method" type="xs:string" use="required"/>
- </xs:complexType>
- <xs:complexType name="RuleExpressionType">
- <xs:attribute name="expression" type="xs:string" use="required"/>
- <xs:attribute name="language" type="tns:ExpressionLanguageEnum" default="xpath"/>
- </xs:complexType>
- <xs:simpleType name="ScriptLanguageEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="javascript"/>
- <xs:enumeration value="csharp"/>
- <xs:enumeration value="vbnet"/>
- <xs:enumeration value="python"/>
- <xs:enumeration value="powershell"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="ExpressionLanguageEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="xpath"/>
- <xs:enumeration value="jsonpath"/>
- <xs:enumeration value="regex"/>
- <xs:enumeration value="linq"/>
- <xs:enumeration value="sql"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:complexType name="ValidatorParameterType">
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="type" type="tns:ParameterTypeEnum" use="required"/>
- <xs:attribute name="default-value" type="xs:string"/>
- <xs:attribute name="required" type="xs:boolean" default="false"/>
- <xs:attribute name="description" type="xs:string"/>
- </xs:complexType>
- <xs:simpleType name="ParameterTypeEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="string"/>
- <xs:enumeration value="int"/>
- <xs:enumeration value="bool"/>
- <xs:enumeration value="decimal"/>
- <xs:enumeration value="regex"/>
- <xs:enumeration value="xpath"/>
- <xs:enumeration value="enum"/>
- <xs:enumeration value="array"/>
- <xs:enumeration value="object"/>
- </xs:restriction>
- </xs:simpleType>
- <!-- ENHANCEMENT: Validation Profile Type -->
- <xs:complexType name="ValidationProfileType">
- <xs:sequence>
- <xs:element name="description" type="xs:string"/>
- <xs:element name="profile-rule" type="tns:ProfileRuleType" maxOccurs="unbounded"/>
- <xs:element name="profile-group" type="tns:ProfileGroupType" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="configuration" type="tns:ProfileConfigurationType" minOccurs="0"/>
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="version" type="xs:string" default="1.0"/>
- <xs:attribute name="target-platform" type="tns:PlatformEnum" default="basic"/>
- <xs:attribute name="inherits" type="xs:string"/>
- <xs:attribute name="enabled" type="xs:boolean" default="true"/>
- </xs:complexType>
- <xs:complexType name="ProfileRuleType">
- <xs:attribute name="rule-name" type="xs:string" use="required"/>
- <xs:attribute name="enabled" type="xs:boolean" default="true"/>
- <xs:attribute name="severity" type="tns:SeverityEnum"/>
- <xs:attribute name="configuration" type="xs:string"/>
- <xs:attribute name="tags" type="xs:string"/>
- </xs:complexType>
- <xs:complexType name="ProfileGroupType">
- <xs:attribute name="group-name" type="xs:string" use="required"/>
- <xs:attribute name="enabled" type="xs:boolean" default="true"/>
- <xs:attribute name="override-severity" type="tns:SeverityEnum"/>
- <xs:attribute name="configuration" type="xs:string"/>
- </xs:complexType>
- <xs:complexType name="ProfileConfigurationType">
- <xs:sequence>
- <xs:element name="setting" type="tns:ProfileSettingType" maxOccurs="unbounded"/>
- <xs:element name="exclusion" type="tns:ProfileExclusionType" minOccurs="0" maxOccurs="unbounded"/>
- </xs:sequence>
- <xs:attribute name="stop-on-first-error" type="xs:boolean" default="false"/>
- <xs:attribute name="max-errors" type="xs:int" default="100"/>
- <xs:attribute name="parallel-execution" type="xs:boolean" default="true"/>
- <xs:attribute name="cache-results" type="xs:boolean" default="true"/>
- </xs:complexType>
- <xs:complexType name="ProfileSettingType">
- <xs:attribute name="key" type="xs:string" use="required"/>
- <xs:attribute name="value" type="xs:string" use="required"/>
- <xs:attribute name="scope" type="tns:SettingScopeEnum" default="profile"/>
- </xs:complexType>
- <xs:complexType name="ProfileExclusionType">
- <xs:attribute name="pattern" type="xs:string" use="required"/>
- <xs:attribute name="type" type="tns:ExclusionTypeEnum" use="required"/>
- <xs:attribute name="reason" type="xs:string"/>
- <xs:attribute name="expires" type="xs:date"/>
- </xs:complexType>
- <xs:simpleType name="SettingScopeEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="global"/>
- <xs:enumeration value="profile"/>
- <xs:enumeration value="group"/>
- <xs:enumeration value="rule"/>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="ExclusionTypeEnum">
- <xs:restriction base="xs:string">
- <xs:enumeration value="file"/>
- <xs:enumeration value="element"/>
- <xs:enumeration value="attribute"/>
- <xs:enumeration value="xpath"/>
- <xs:enumeration value="rule"/>
- <xs:enumeration value="category"/>
- </xs:restriction>
- </xs:simpleType>
- </xs:schema>
|