<?xml version="1.0" encoding="utf-8"?>
<!--
  IcyUI markup - skeleton schema (Phase 9, M0).

  This file fixes the namespace layout and the `x:` directive vocabulary only. It deliberately does
  NOT enumerate controls or their properties: the element vocabulary is whatever types are registered
  with the property registry at runtime, so a schema that actually validates content must be
  GENERATED by reflecting over the registered types. That generator is M6 work.

  Until then this exists so editors resolve the namespaces and offer the directives, and so the
  namespace URIs are pinned before any markup files are written against them.
-->
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:x="https://icyui.dev/markup/x"
    targetNamespace="https://icyui.dev/markup"
    xmlns="https://icyui.dev/markup"
    elementFormDefault="qualified">

  <xs:import namespace="https://icyui.dev/markup/x" schemaLocation="icyui-markup-x.xsd"/>

  <!--
    Any element, any attribute. Replaced per-control by the generated schema.
    `processContents="lax"` lets editors validate what they can resolve and stay quiet otherwise.
  -->
  <xs:complexType name="MarkupElement" mixed="true">
    <xs:sequence>
      <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
    </xs:sequence>
    <xs:anyAttribute namespace="##any" processContents="lax"/>
  </xs:complexType>

  <xs:element name="markup" type="MarkupElement"/>

</xs:schema>
