ui-layout-patterns.xsd 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  3. targetNamespace="ui-layout-patterns"
  4. xmlns:tns="ui-layout-patterns"
  5. elementFormDefault="qualified"
  6. version="1.2">
  7. <!-- Root element for pattern include files -->
  8. <xs:element name="patterns" type="tns:PatternsIncludeFileType"/>
  9. <!-- Pattern include file structure -->
  10. <xs:complexType name="PatternsIncludeFileType">
  11. <xs:choice minOccurs="0" maxOccurs="unbounded">
  12. <xs:element name="control" type="tns:ControlType"/>
  13. <xs:element name="structure" type="tns:StructureType"/>
  14. <xs:element name="wireframe" type="tns:WireframeType"/>
  15. </xs:choice>
  16. </xs:complexType>
  17. <!-- Control Definition -->
  18. <xs:complexType name="ControlType">
  19. <xs:sequence>
  20. <xs:element name="description" type="xs:string" minOccurs="0"/>
  21. <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
  22. <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
  23. <xs:element name="behavior" type="tns:BehaviorType" minOccurs="0"/>
  24. <xs:element name="structure" type="tns:ControlStructureType" minOccurs="0"/>
  25. </xs:sequence>
  26. <xs:attribute name="name" type="xs:string" use="required"/>
  27. <xs:attribute name="type" type="tns:ControlTypeEnum" use="required"/>
  28. <xs:attribute name="category" type="tns:ControlCategoryEnum" use="required"/>
  29. <xs:attribute name="inherits" type="xs:string"/>
  30. </xs:complexType>
  31. <!-- Control Type Enumeration -->
  32. <xs:simpleType name="ControlTypeEnum">
  33. <xs:restriction base="xs:string">
  34. <xs:enumeration value="base"/>
  35. <xs:enumeration value="action"/>
  36. <xs:enumeration value="input"/>
  37. <xs:enumeration value="display"/>
  38. <xs:enumeration value="container"/>
  39. <xs:enumeration value="data"/>
  40. <xs:enumeration value="navigation"/>
  41. <xs:enumeration value="system"/>
  42. <xs:enumeration value="dialog"/>
  43. <xs:enumeration value="layout"/>
  44. <xs:enumeration value="media"/>
  45. <xs:enumeration value="decoration"/>
  46. </xs:restriction>
  47. </xs:simpleType>
  48. <!-- Control Category Enumeration -->
  49. <xs:simpleType name="ControlCategoryEnum">
  50. <xs:restriction base="xs:string">
  51. <xs:enumeration value="abstract"/>
  52. <xs:enumeration value="basic"/>
  53. <xs:enumeration value="input"/>
  54. <xs:enumeration value="action"/>
  55. <xs:enumeration value="layout"/>
  56. <xs:enumeration value="data"/>
  57. <xs:enumeration value="navigation"/>
  58. <xs:enumeration value="composite"/>
  59. <xs:enumeration value="windows-specific"/>
  60. <xs:enumeration value="winforms-basic"/>
  61. <xs:enumeration value="winforms-input"/>
  62. <xs:enumeration value="winforms-action"/>
  63. <xs:enumeration value="winforms-container"/>
  64. <xs:enumeration value="winforms-data"/>
  65. <xs:enumeration value="winforms-status"/>
  66. <xs:enumeration value="winforms-menu"/>
  67. <xs:enumeration value="winforms-toolbar"/>
  68. <xs:enumeration value="winforms-scroll"/>
  69. <xs:enumeration value="winforms-display"/>
  70. <xs:enumeration value="winforms-system"/>
  71. <xs:enumeration value="winforms-validation"/>
  72. <xs:enumeration value="winforms-dialog"/>
  73. <xs:enumeration value="winforms-web"/>
  74. <xs:enumeration value="avalonia-specific"/>
  75. <xs:enumeration value="avalonia-layout"/>
  76. <xs:enumeration value="avalonia-input"/>
  77. <xs:enumeration value="avalonia-display"/>
  78. <xs:enumeration value="avalonia-data"/>
  79. <xs:enumeration value="avalonia-container"/>
  80. <xs:enumeration value="avalonia-decoration"/>
  81. <xs:enumeration value="avalonia-navigation"/>
  82. <xs:enumeration value="avalonia-popup"/>
  83. <xs:enumeration value="avalonia-window"/>
  84. <xs:enumeration value="avalonia-media"/>
  85. <xs:enumeration value="avalonia-notification"/>
  86. <xs:enumeration value="avalonia-composite"/>
  87. <xs:enumeration value="avalonia-graphics"/>
  88. <xs:enumeration value="kde-specific"/>
  89. <xs:enumeration value="web-specific"/>
  90. </xs:restriction>
  91. </xs:simpleType>
  92. <!-- Constraints -->
  93. <xs:complexType name="ConstraintsType">
  94. <xs:sequence>
  95. <xs:element name="allowed-parents" type="xs:string" minOccurs="0"/>
  96. <xs:element name="allowed-children" type="xs:string" minOccurs="0"/>
  97. <xs:element name="container" type="xs:boolean" minOccurs="0"/>
  98. <xs:element name="max-children" type="xs:string" minOccurs="0"/>
  99. <xs:element name="requires-structure" type="xs:string" minOccurs="0"/>
  100. <xs:element name="required-slots" type="xs:string" minOccurs="0"/>
  101. </xs:sequence>
  102. </xs:complexType>
  103. <!-- Attributes -->
  104. <xs:complexType name="AttributesType">
  105. <xs:sequence>
  106. <xs:element name="attribute" type="tns:AttributeType" maxOccurs="unbounded"/>
  107. </xs:sequence>
  108. </xs:complexType>
  109. <xs:complexType name="AttributeType">
  110. <xs:attribute name="name" type="xs:string" use="required"/>
  111. <xs:attribute name="type" type="tns:AttributeTypeEnum" use="required"/>
  112. <xs:attribute name="default" type="xs:string"/>
  113. <xs:attribute name="required" type="xs:boolean" default="false"/>
  114. <xs:attribute name="min" type="xs:int"/>
  115. <xs:attribute name="max" type="xs:int"/>
  116. <xs:attribute name="values" type="xs:string"/>
  117. </xs:complexType>
  118. <!-- Attribute Type Enumeration -->
  119. <xs:simpleType name="AttributeTypeEnum">
  120. <xs:restriction base="xs:string">
  121. <xs:enumeration value="string"/>
  122. <xs:enumeration value="int"/>
  123. <xs:enumeration value="bool"/>
  124. <xs:enumeration value="enum"/>
  125. <xs:enumeration value="color"/>
  126. <xs:enumeration value="date"/>
  127. <xs:enumeration value="datetime"/>
  128. <xs:enumeration value="timespan"/>
  129. <xs:enumeration value="icon"/>
  130. <xs:enumeration value="image"/>
  131. <xs:enumeration value="object"/>
  132. <xs:enumeration value="decimal"/>
  133. <xs:enumeration value="float"/>
  134. <xs:enumeration value="double"/>
  135. <xs:enumeration value="char"/>
  136. <xs:enumeration value="font"/>
  137. <xs:enumeration value="size"/>
  138. <xs:enumeration value="point"/>
  139. <xs:enumeration value="padding"/>
  140. <xs:enumeration value="thickness"/>
  141. <xs:enumeration value="corner-radius"/>
  142. <xs:enumeration value="brush"/>
  143. <xs:enumeration value="geometry"/>
  144. </xs:restriction>
  145. </xs:simpleType>
  146. <!-- Behavior -->
  147. <xs:complexType name="BehaviorType">
  148. <xs:sequence>
  149. <xs:element name="event" type="tns:EventType" maxOccurs="unbounded"/>
  150. </xs:sequence>
  151. </xs:complexType>
  152. <xs:complexType name="EventType">
  153. <xs:attribute name="name" type="xs:string" use="required"/>
  154. <xs:attribute name="alias" type="xs:string"/>
  155. <xs:attribute name="required" type="xs:boolean" default="false"/>
  156. <xs:attribute name="handler-required" type="xs:boolean" default="false"/>
  157. <xs:attribute name="bubbles" type="xs:boolean" default="false"/>
  158. <xs:attribute name="parameters" type="xs:string"/>
  159. </xs:complexType>
  160. <!-- Control Structure (simplified for patterns) -->
  161. <xs:complexType name="ControlStructureType">
  162. <xs:choice maxOccurs="unbounded">
  163. <xs:element name="items" type="tns:ItemsType"/>
  164. <xs:element name="menu-items" type="tns:MenuItemsType"/>
  165. <xs:element name="columns" type="tns:ColumnsType"/>
  166. <xs:element name="children" type="tns:ChildrenType"/>
  167. <xs:element name="selected-items" type="tns:SelectedItemsType"/>
  168. <xs:element name="context-menu" type="tns:ContextMenuType"/>
  169. <xs:element name="panel1" type="tns:PanelType"/>
  170. <xs:element name="panel2" type="tns:PanelType"/>
  171. <xs:element name="pane" type="tns:PaneType"/>
  172. <xs:element name="content" type="tns:ContentType"/>
  173. <xs:element name="grid-definitions" type="tns:GridDefinitionsType"/>
  174. <!-- Add other structure types as needed -->
  175. </xs:choice>
  176. </xs:complexType>
  177. <!-- Structure Definition -->
  178. <xs:complexType name="StructureType">
  179. <xs:sequence>
  180. <xs:element name="description" type="xs:string" minOccurs="0"/>
  181. <xs:element name="constraints" type="tns:ConstraintsType" minOccurs="0"/>
  182. <xs:element name="attributes" type="tns:AttributesType" minOccurs="0"/>
  183. <xs:element name="template" type="tns:TemplateType"/>
  184. </xs:sequence>
  185. <xs:attribute name="name" type="xs:string" use="required"/>
  186. <xs:attribute name="type" type="xs:string" use="required"/>
  187. <xs:attribute name="category" type="tns:ControlCategoryEnum" use="required"/>
  188. <xs:attribute name="inherits" type="xs:string"/>
  189. </xs:complexType>
  190. <!-- Wireframe Definition -->
  191. <xs:complexType name="WireframeType">
  192. <xs:sequence>
  193. <xs:element name="description" type="xs:string" minOccurs="0"/>
  194. <xs:element name="template" type="tns:TemplateType"/>
  195. </xs:sequence>
  196. <xs:attribute name="name" type="xs:string" use="required"/>
  197. <xs:attribute name="type" type="xs:string" use="required"/>
  198. </xs:complexType>
  199. <!-- Template (simplified - contains mixed content for flexibility) -->
  200. <xs:complexType name="TemplateType" mixed="true">
  201. <xs:sequence>
  202. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  203. </xs:sequence>
  204. <xs:anyAttribute processContents="lax"/>
  205. </xs:complexType>
  206. <!-- Supporting Types (simplified) -->
  207. <xs:complexType name="ItemsType">
  208. <xs:sequence>
  209. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  210. </xs:sequence>
  211. <xs:attribute name="min-count" type="xs:int" default="0"/>
  212. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  213. <xs:attribute name="max-depth" type="xs:int"/>
  214. </xs:complexType>
  215. <xs:complexType name="MenuItemsType">
  216. <xs:sequence>
  217. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  218. </xs:sequence>
  219. <xs:attribute name="min-count" type="xs:int" default="1"/>
  220. <xs:attribute name="max-count" type="xs:string" default="unlimited"/>
  221. <xs:attribute name="max-depth" type="xs:int"/>
  222. </xs:complexType>
  223. <xs:complexType name="ColumnsType">
  224. <xs:sequence>
  225. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  226. </xs:sequence>
  227. <xs:attribute name="min-count" type="xs:int" default="1"/>
  228. <xs:attribute name="max-count" type="xs:int" default="50"/>
  229. </xs:complexType>
  230. <xs:complexType name="ChildrenType">
  231. <xs:sequence>
  232. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  233. </xs:sequence>
  234. <xs:attribute name="allow-multiple" type="xs:boolean" default="true"/>
  235. </xs:complexType>
  236. <xs:complexType name="SelectedItemsType">
  237. <xs:attribute name="max-count" type="xs:string" use="required"/>
  238. </xs:complexType>
  239. <xs:complexType name="ContextMenuType">
  240. <xs:attribute name="max-count" type="xs:int" default="1"/>
  241. </xs:complexType>
  242. <xs:complexType name="PanelType">
  243. <xs:sequence>
  244. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  245. </xs:sequence>
  246. <xs:attribute name="required" type="xs:boolean" default="true"/>
  247. </xs:complexType>
  248. <xs:complexType name="PaneType">
  249. <xs:sequence>
  250. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  251. </xs:sequence>
  252. </xs:complexType>
  253. <xs:complexType name="ContentType">
  254. <xs:sequence>
  255. <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
  256. </xs:sequence>
  257. </xs:complexType>
  258. <xs:complexType name="GridDefinitionsType">
  259. <xs:sequence>
  260. <xs:element name="row-definitions" type="tns:RowDefinitionsType"/>
  261. <xs:element name="column-definitions" type="tns:ColumnDefinitionsType"/>
  262. </xs:sequence>
  263. </xs:complexType>
  264. <xs:complexType name="RowDefinitionsType">
  265. <xs:sequence>
  266. <xs:element name="row-definition" type="tns:RowDefinitionType" maxOccurs="unbounded"/>
  267. </xs:sequence>
  268. </xs:complexType>
  269. <xs:complexType name="RowDefinitionType">
  270. <xs:attribute name="height" type="xs:string" use="required"/>
  271. <xs:attribute name="min-height" type="xs:string" default="0"/>
  272. <xs:attribute name="max-height" type="xs:string" default="Infinity"/>
  273. </xs:complexType>
  274. <xs:complexType name="ColumnDefinitionsType">
  275. <xs:sequence>
  276. <xs:element name="column-definition" type="tns:ColumnDefinitionType" maxOccurs="unbounded"/>
  277. </xs:sequence>
  278. </xs:complexType>
  279. <xs:complexType name="ColumnDefinitionType">
  280. <xs:attribute name="width" type="xs:string" use="required"/>
  281. <xs:attribute name="min-width" type="xs:string" default="0"/>
  282. <xs:attribute name="max-width" type="xs:string" default="Infinity"/>
  283. </xs:complexType>
  284. </xs:schema>