ui-layout-avalonia-controls.xsd 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  3. targetNamespace="http://quadarax.com/ui-layout-avalonia-controls"
  4. xmlns:tns="http://quadarax.com/ui-layout-avalonia-controls"
  5. xmlns:basic="http://quadarax.com/ui-layout-basic-controls"
  6. elementFormDefault="qualified"
  7. version="1.6">
  8. <!-- Import basic controls -->
  9. <xs:import namespace="http://quadarax.com/ui-layout-basic-controls" schemaLocation="ui-layout-basic-controls.xsd"/>
  10. <!-- Avalonia Control Instance Type -->
  11. <xs:complexType name="AvaloniaControlInstanceType" mixed="true">
  12. <xs:group ref="tns:AvaloniaControlContentGroup" minOccurs="0" maxOccurs="unbounded"/>
  13. <!-- ENHANCEMENT: v1.3 Avalonia-specific attributes -->
  14. <xs:attribute name="schema-version" type="xs:string" default="1.6"/>
  15. <xs:attribute name="avalonia-version" type="xs:string" default="11.0"/>
  16. <xs:attribute name="theme-variant" type="tns:ThemeVariantEnum" default="default"/>
  17. <xs:attribute name="design-mode" type="xs:boolean" default="false"/>
  18. <xs:anyAttribute processContents="lax"/>
  19. </xs:complexType>
  20. <!-- ENHANCEMENT: Theme Variant Enumeration -->
  21. <xs:simpleType name="ThemeVariantEnum">
  22. <xs:restriction base="xs:string">
  23. <xs:enumeration value="default"/>
  24. <xs:enumeration value="light"/>
  25. <xs:enumeration value="dark"/>
  26. <xs:enumeration value="high-contrast"/>
  27. <xs:enumeration value="custom"/>
  28. </xs:restriction>
  29. </xs:simpleType>
  30. <!-- FIXED: Avalonia Control Content Group -->
  31. <xs:group name="AvaloniaControlContentGroup">
  32. <xs:choice>
  33. <!-- Allow any elements from current namespace or basic controls namespace -->
  34. <xs:any namespace="##targetNamespace http://quadarax.com/ui-layout-basic-controls" processContents="lax" minOccurs="0" maxOccurs="unbounded">
  35. <xs:annotation>
  36. <xs:documentation>
  37. Allows any Avalonia UI controls and basic controls with full flexibility.
  38. Eliminates need for explicit control definitions while maintaining structure.
  39. </xs:documentation>
  40. </xs:annotation>
  41. </xs:any>
  42. </xs:choice>
  43. </xs:group>
  44. <!-- ENHANCEMENT: Shapes Type -->
  45. <xs:complexType name="ShapesType">
  46. <xs:choice maxOccurs="unbounded">
  47. <xs:element name="Rectangle" type="tns:AvaloniaControlInstanceType"/>
  48. <xs:element name="Ellipse" type="tns:AvaloniaControlInstanceType"/>
  49. <xs:element name="Line" type="tns:AvaloniaControlInstanceType"/>
  50. <xs:element name="Polyline" type="tns:AvaloniaControlInstanceType"/>
  51. <xs:element name="Polygon" type="tns:AvaloniaControlInstanceType"/>
  52. <xs:element name="Path" type="tns:AvaloniaControlInstanceType"/>
  53. </xs:choice>
  54. </xs:complexType>
  55. <!-- ENHANCEMENT: Geometry Type -->
  56. <xs:complexType name="GeometryType">
  57. <xs:choice>
  58. <xs:element name="RectangleGeometry" type="tns:RectangleGeometryType"/>
  59. <xs:element name="EllipseGeometry" type="tns:EllipseGeometryType"/>
  60. <xs:element name="LineGeometry" type="tns:LineGeometryType"/>
  61. <xs:element name="PathGeometry" type="tns:PathGeometryType"/>
  62. <xs:element name="CombinedGeometry" type="tns:CombinedGeometryType"/>
  63. </xs:choice>
  64. </xs:complexType>
  65. <xs:complexType name="RectangleGeometryType">
  66. <xs:attribute name="rect" type="xs:string" use="required"/>
  67. <xs:attribute name="radius-x" type="xs:double" default="0"/>
  68. <xs:attribute name="radius-y" type="xs:double" default="0"/>
  69. </xs:complexType>
  70. <xs:complexType name="EllipseGeometryType">
  71. <xs:attribute name="center" type="xs:string" use="required"/>
  72. <xs:attribute name="radius-x" type="xs:double" use="required"/>
  73. <xs:attribute name="radius-y" type="xs:double" use="required"/>
  74. </xs:complexType>
  75. <xs:complexType name="LineGeometryType">
  76. <xs:attribute name="start-point" type="xs:string" use="required"/>
  77. <xs:attribute name="end-point" type="xs:string" use="required"/>
  78. </xs:complexType>
  79. <xs:complexType name="PathGeometryType">
  80. <xs:attribute name="data" type="xs:string" use="required"/>
  81. <xs:attribute name="fill-rule" type="tns:FillRuleEnum" default="EvenOdd"/>
  82. </xs:complexType>
  83. <xs:complexType name="CombinedGeometryType">
  84. <xs:attribute name="geometry1" type="xs:string" use="required"/>
  85. <xs:attribute name="geometry2" type="xs:string" use="required"/>
  86. <xs:attribute name="combine-mode" type="tns:CombineModeEnum" use="required"/>
  87. </xs:complexType>
  88. <xs:simpleType name="FillRuleEnum">
  89. <xs:restriction base="xs:string">
  90. <xs:enumeration value="EvenOdd"/>
  91. <xs:enumeration value="NonZero"/>
  92. </xs:restriction>
  93. </xs:simpleType>
  94. <xs:simpleType name="CombineModeEnum">
  95. <xs:restriction base="xs:string">
  96. <xs:enumeration value="Union"/>
  97. <xs:enumeration value="Intersect"/>
  98. <xs:enumeration value="Xor"/>
  99. <xs:enumeration value="Exclude"/>
  100. </xs:restriction>
  101. </xs:simpleType>
  102. <!-- ENHANCEMENT: Transform Type -->
  103. <xs:complexType name="TransformType">
  104. <xs:choice>
  105. <xs:element name="TranslateTransform" type="tns:TranslateTransformType"/>
  106. <xs:element name="RotateTransform" type="tns:RotateTransformType"/>
  107. <xs:element name="ScaleTransform" type="tns:ScaleTransformType"/>
  108. <xs:element name="SkewTransform" type="tns:SkewTransformType"/>
  109. <xs:element name="MatrixTransform" type="tns:MatrixTransformType"/>
  110. <xs:element name="TransformGroup" type="tns:TransformGroupType"/>
  111. </xs:choice>
  112. </xs:complexType>
  113. <xs:complexType name="TranslateTransformType">
  114. <xs:attribute name="x" type="xs:double" default="0"/>
  115. <xs:attribute name="y" type="xs:double" default="0"/>
  116. </xs:complexType>
  117. <xs:complexType name="RotateTransformType">
  118. <xs:attribute name="angle" type="xs:double" use="required"/>
  119. <xs:attribute name="center-x" type="xs:double" default="0"/>
  120. <xs:attribute name="center-y" type="xs:double" default="0"/>
  121. </xs:complexType>
  122. <xs:complexType name="ScaleTransformType">
  123. <xs:attribute name="scale-x" type="xs:double" default="1"/>
  124. <xs:attribute name="scale-y" type="xs:double" default="1"/>
  125. <xs:attribute name="center-x" type="xs:double" default="0"/>
  126. <xs:attribute name="center-y" type="xs:double" default="0"/>
  127. </xs:complexType>
  128. <xs:complexType name="SkewTransformType">
  129. <xs:attribute name="angle-x" type="xs:double" default="0"/>
  130. <xs:attribute name="angle-y" type="xs:double" default="0"/>
  131. <xs:attribute name="center-x" type="xs:double" default="0"/>
  132. <xs:attribute name="center-y" type="xs:double" default="0"/>
  133. </xs:complexType>
  134. <xs:complexType name="MatrixTransformType">
  135. <xs:attribute name="matrix" type="xs:string" use="required"/>
  136. </xs:complexType>
  137. <xs:complexType name="TransformGroupType">
  138. <xs:sequence>
  139. <xs:element name="Transform" type="tns:TransformType" maxOccurs="unbounded"/>
  140. </xs:sequence>
  141. </xs:complexType>
  142. <!-- ENHANCEMENT: Animation Type -->
  143. <xs:complexType name="AnimationType">
  144. <xs:choice maxOccurs="unbounded">
  145. <xs:element name="DoubleAnimation" type="tns:DoubleAnimationType"/>
  146. <xs:element name="ColorAnimation" type="tns:ColorAnimationType"/>
  147. <xs:element name="PointAnimation" type="tns:PointAnimationType"/>
  148. <xs:element name="ThicknessAnimation" type="tns:ThicknessAnimationType"/>
  149. <xs:element name="Storyboard" type="tns:StoryboardType"/>
  150. </xs:choice>
  151. </xs:complexType>
  152. <xs:complexType name="DoubleAnimationType">
  153. <xs:attribute name="target-property" type="xs:string" use="required"/>
  154. <xs:attribute name="from" type="xs:double"/>
  155. <xs:attribute name="to" type="xs:double"/>
  156. <xs:attribute name="duration" type="xs:string" use="required"/>
  157. <xs:attribute name="easing" type="tns:EasingEnum" default="Linear"/>
  158. <xs:attribute name="auto-reverse" type="xs:boolean" default="false"/>
  159. <xs:attribute name="repeat-count" type="xs:string" default="1"/>
  160. </xs:complexType>
  161. <xs:complexType name="ColorAnimationType">
  162. <xs:attribute name="target-property" type="xs:string" use="required"/>
  163. <xs:attribute name="from" type="xs:string"/>
  164. <xs:attribute name="to" type="xs:string"/>
  165. <xs:attribute name="duration" type="xs:string" use="required"/>
  166. <xs:attribute name="easing" type="tns:EasingEnum" default="Linear"/>
  167. <xs:attribute name="auto-reverse" type="xs:boolean" default="false"/>
  168. <xs:attribute name="repeat-count" type="xs:string" default="1"/>
  169. </xs:complexType>
  170. <xs:complexType name="PointAnimationType">
  171. <xs:attribute name="target-property" type="xs:string" use="required"/>
  172. <xs:attribute name="from" type="xs:string"/>
  173. <xs:attribute name="to" type="xs:string"/>
  174. <xs:attribute name="duration" type="xs:string" use="required"/>
  175. <xs:attribute name="easing" type="tns:EasingEnum" default="Linear"/>
  176. </xs:complexType>
  177. <xs:complexType name="ThicknessAnimationType">
  178. <xs:attribute name="target-property" type="xs:string" use="required"/>
  179. <xs:attribute name="from" type="xs:string"/>
  180. <xs:attribute name="to" type="xs:string"/>
  181. <xs:attribute name="duration" type="xs:string" use="required"/>
  182. <xs:attribute name="easing" type="tns:EasingEnum" default="Linear"/>
  183. </xs:complexType>
  184. <xs:complexType name="StoryboardType">
  185. <xs:sequence>
  186. <xs:element name="Animation" type="tns:AnimationType" maxOccurs="unbounded"/>
  187. </xs:sequence>
  188. <xs:attribute name="name" type="xs:string"/>
  189. <xs:attribute name="target" type="xs:string"/>
  190. </xs:complexType>
  191. <xs:simpleType name="EasingEnum">
  192. <xs:restriction base="xs:string">
  193. <xs:enumeration value="Linear"/>
  194. <xs:enumeration value="QuadraticEaseIn"/>
  195. <xs:enumeration value="QuadraticEaseOut"/>
  196. <xs:enumeration value="QuadraticEaseInOut"/>
  197. <xs:enumeration value="CubicEaseIn"/>
  198. <xs:enumeration value="CubicEaseOut"/>
  199. <xs:enumeration value="CubicEaseInOut"/>
  200. <xs:enumeration value="BackEaseIn"/>
  201. <xs:enumeration value="BackEaseOut"/>
  202. <xs:enumeration value="BackEaseInOut"/>
  203. <xs:enumeration value="BounceEaseIn"/>
  204. <xs:enumeration value="BounceEaseOut"/>
  205. <xs:enumeration value="BounceEaseInOut"/>
  206. <xs:enumeration value="ElasticEaseIn"/>
  207. <xs:enumeration value="ElasticEaseOut"/>
  208. <xs:enumeration value="ElasticEaseInOut"/>
  209. </xs:restriction>
  210. </xs:simpleType>
  211. <!-- ENHANCEMENT: Gestures Type -->
  212. <xs:complexType name="GesturesType">
  213. <xs:sequence>
  214. <xs:element name="gesture" type="tns:GestureType" maxOccurs="unbounded"/>
  215. </xs:sequence>
  216. </xs:complexType>
  217. <xs:complexType name="GestureType">
  218. <xs:attribute name="type" type="tns:GestureTypeEnum" use="required"/>
  219. <xs:attribute name="handler" type="xs:string" use="required"/>
  220. <xs:attribute name="parameter" type="xs:string"/>
  221. </xs:complexType>
  222. <xs:simpleType name="GestureTypeEnum">
  223. <xs:restriction base="xs:string">
  224. <xs:enumeration value="Tap"/>
  225. <xs:enumeration value="DoubleTap"/>
  226. <xs:enumeration value="RightTap"/>
  227. <xs:enumeration value="Hold"/>
  228. <xs:enumeration value="Swipe"/>
  229. <xs:enumeration value="Pan"/>
  230. <xs:enumeration value="Pinch"/>
  231. <xs:enumeration value="Rotate"/>
  232. <xs:enumeration value="Drag"/>
  233. <xs:enumeration value="Flick"/>
  234. </xs:restriction>
  235. </xs:simpleType>
  236. <!-- ENHANCEMENT: Interactions Type -->
  237. <xs:complexType name="InteractionsType">
  238. <xs:sequence>
  239. <xs:element name="interaction" type="tns:InteractionType" maxOccurs="unbounded"/>
  240. </xs:sequence>
  241. </xs:complexType>
  242. <xs:complexType name="InteractionType">
  243. <xs:attribute name="type" type="tns:InteractionTypeEnum" use="required"/>
  244. <xs:attribute name="target" type="xs:string"/>
  245. <xs:attribute name="command" type="xs:string"/>
  246. <xs:attribute name="parameter" type="xs:string"/>
  247. </xs:complexType>
  248. <xs:simpleType name="InteractionTypeEnum">
  249. <xs:restriction base="xs:string">
  250. <xs:enumeration value="EventTrigger"/>
  251. <xs:enumeration value="PropertyChangedTrigger"/>
  252. <xs:enumeration value="DataTrigger"/>
  253. <xs:enumeration value="CallMethodAction"/>
  254. <xs:enumeration value="InvokeCommandAction"/>
  255. <xs:enumeration value="ChangePropertyAction"/>
  256. </xs:restriction>
  257. </xs:simpleType>
  258. <!-- ENHANCEMENT: Behaviors Type -->
  259. <xs:complexType name="BehaviorsType">
  260. <xs:sequence>
  261. <xs:element name="behavior" type="tns:BehaviorType" maxOccurs="unbounded"/>
  262. </xs:sequence>
  263. </xs:complexType>
  264. <xs:complexType name="BehaviorType">
  265. <xs:attribute name="type" type="tns:BehaviorTypeEnum" use="required"/>
  266. <xs:attribute name="target" type="xs:string"/>
  267. <xs:attribute name="property" type="xs:string"/>
  268. <xs:attribute name="value" type="xs:string"/>
  269. </xs:complexType>
  270. <xs:simpleType name="BehaviorTypeEnum">
  271. <xs:restriction base="xs:string">
  272. <xs:enumeration value="DragBehavior"/>
  273. <xs:enumeration value="DropBehavior"/>
  274. <xs:enumeration value="SelectionBehavior"/>
  275. <xs:enumeration value="ValidationBehavior"/>
  276. <xs:enumeration value="AnimationBehavior"/>
  277. <xs:enumeration value="FocusBehavior"/>
  278. <xs:enumeration value="ScrollBehavior"/>
  279. </xs:restriction>
  280. </xs:simpleType>
  281. <!-- Avalonia-specific supporting types -->
  282. <xs:complexType name="GridDefinitionsType">
  283. <xs:sequence>
  284. <xs:element name="row-definitions" type="tns:RowDefinitionsType"/>
  285. <xs:element name="column-definitions" type="tns:ColumnDefinitionsType"/>
  286. </xs:sequence>
  287. <!-- ENHANCEMENT: v1.3 grid enhancements -->
  288. <xs:attribute name="show-grid-lines" type="xs:boolean" default="false"/>
  289. <xs:attribute name="grid-line-brush" type="xs:string"/>
  290. </xs:complexType>
  291. <xs:complexType name="RowDefinitionsType">
  292. <xs:sequence>
  293. <xs:element name="row-definition" maxOccurs="unbounded">
  294. <xs:complexType>
  295. <xs:attribute name="height" type="xs:string" use="required"/>
  296. <xs:attribute name="min-height" type="xs:string" default="0"/>
  297. <xs:attribute name="max-height" type="xs:string" default="Infinity"/>
  298. <!-- ENHANCEMENT: v1.3 additions -->
  299. <xs:attribute name="shared-size-group" type="xs:string"/>
  300. </xs:complexType>
  301. </xs:element>
  302. </xs:sequence>
  303. </xs:complexType>
  304. <xs:complexType name="ColumnDefinitionsType">
  305. <xs:sequence>
  306. <xs:element name="column-definition" maxOccurs="unbounded">
  307. <xs:complexType>
  308. <xs:attribute name="width" type="xs:string" use="required"/>
  309. <xs:attribute name="min-width" type="xs:string" default="0"/>
  310. <xs:attribute name="max-width" type="xs:string" default="Infinity"/>
  311. <!-- ENHANCEMENT: v1.3 additions -->
  312. <xs:attribute name="shared-size-group" type="xs:string"/>
  313. </xs:complexType>
  314. </xs:element>
  315. </xs:sequence>
  316. </xs:complexType>
  317. <xs:complexType name="TabsType">
  318. <xs:sequence>
  319. <xs:element name="TabItem" maxOccurs="unbounded">
  320. <xs:complexType>
  321. <xs:complexContent>
  322. <xs:extension base="tns:AvaloniaControlInstanceType">
  323. <xs:attribute name="header" type="xs:string"/>
  324. <xs:attribute name="is-selected" type="xs:boolean" default="false"/>
  325. <!-- ENHANCEMENT: v1.3 tab enhancements -->
  326. <xs:attribute name="closable" type="xs:boolean" default="false"/>
  327. <xs:attribute name="icon" type="xs:string"/>
  328. <xs:attribute name="badge" type="xs:string"/>
  329. </xs:extension>
  330. </xs:complexContent>
  331. </xs:complexType>
  332. </xs:element>
  333. </xs:sequence>
  334. </xs:complexType>
  335. <xs:complexType name="PaneType">
  336. <xs:complexContent>
  337. <xs:extension base="tns:AvaloniaControlInstanceType">
  338. <!-- ENHANCEMENT: v1.3 pane enhancements -->
  339. <xs:attribute name="collapsible" type="xs:boolean" default="false"/>
  340. <xs:attribute name="resizable" type="xs:boolean" default="true"/>
  341. <xs:attribute name="dockable" type="xs:boolean" default="false"/>
  342. </xs:extension>
  343. </xs:complexContent>
  344. </xs:complexType>
  345. <xs:complexType name="ContentType">
  346. <xs:complexContent>
  347. <xs:extension base="tns:AvaloniaControlInstanceType">
  348. <!-- ENHANCEMENT: v1.3 content enhancements -->
  349. <xs:attribute name="stretch" type="tns:StretchEnum" default="Uniform"/>
  350. <xs:attribute name="horizontal-alignment" type="tns:HorizontalAlignmentEnum" default="Center"/>
  351. <xs:attribute name="vertical-alignment" type="tns:VerticalAlignmentEnum" default="Center"/>
  352. </xs:extension>
  353. </xs:complexContent>
  354. </xs:complexType>
  355. <xs:simpleType name="StretchEnum">
  356. <xs:restriction base="xs:string">
  357. <xs:enumeration value="None"/>
  358. <xs:enumeration value="Fill"/>
  359. <xs:enumeration value="Uniform"/>
  360. <xs:enumeration value="UniformToFill"/>
  361. </xs:restriction>
  362. </xs:simpleType>
  363. <xs:simpleType name="HorizontalAlignmentEnum">
  364. <xs:restriction base="xs:string">
  365. <xs:enumeration value="Left"/>
  366. <xs:enumeration value="Center"/>
  367. <xs:enumeration value="Right"/>
  368. <xs:enumeration value="Stretch"/>
  369. </xs:restriction>
  370. </xs:simpleType>
  371. <xs:simpleType name="VerticalAlignmentEnum">
  372. <xs:restriction base="xs:string">
  373. <xs:enumeration value="Top"/>
  374. <xs:enumeration value="Center"/>
  375. <xs:enumeration value="Bottom"/>
  376. <xs:enumeration value="Stretch"/>
  377. </xs:restriction>
  378. </xs:simpleType>
  379. <!-- ENHANCEMENT: Resources Type -->
  380. <xs:complexType name="ResourcesType">
  381. <xs:sequence>
  382. <xs:element name="resource" type="tns:ResourceType" maxOccurs="unbounded"/>
  383. </xs:sequence>
  384. </xs:complexType>
  385. <xs:complexType name="ResourceType">
  386. <xs:attribute name="key" type="xs:string" use="required"/>
  387. <xs:attribute name="type" type="tns:ResourceTypeEnum" use="required"/>
  388. <xs:attribute name="value" type="xs:string"/>
  389. <xs:attribute name="source" type="xs:anyURI"/>
  390. </xs:complexType>
  391. <xs:simpleType name="ResourceTypeEnum">
  392. <xs:restriction base="xs:string">
  393. <xs:enumeration value="Brush"/>
  394. <xs:enumeration value="Color"/>
  395. <xs:enumeration value="Font"/>
  396. <xs:enumeration value="FontFamily"/>
  397. <xs:enumeration value="Thickness"/>
  398. <xs:enumeration value="CornerRadius"/>
  399. <xs:enumeration value="Image"/>
  400. <xs:enumeration value="Icon"/>
  401. <xs:enumeration value="Style"/>
  402. <xs:enumeration value="Template"/>
  403. <xs:enumeration value="Geometry"/>
  404. <xs:enumeration value="Transform"/>
  405. <xs:enumeration value="Animation"/>
  406. <xs:enumeration value="String"/>
  407. <xs:enumeration value="Double"/>
  408. <xs:enumeration value="Boolean"/>
  409. </xs:restriction>
  410. </xs:simpleType>
  411. <!-- ENHANCEMENT: Styles Type -->
  412. <xs:complexType name="StylesType">
  413. <xs:sequence>
  414. <xs:element name="style" type="tns:StyleType" maxOccurs="unbounded"/>
  415. </xs:sequence>
  416. </xs:complexType>
  417. <xs:complexType name="StyleType">
  418. <xs:sequence>
  419. <xs:element name="setter" type="tns:SetterType" maxOccurs="unbounded"/>
  420. <xs:element name="trigger" type="tns:TriggerType" minOccurs="0" maxOccurs="unbounded"/>
  421. </xs:sequence>
  422. <xs:attribute name="selector" type="xs:string" use="required"/>
  423. <xs:attribute name="target-type" type="xs:string"/>
  424. <xs:attribute name="base-style" type="xs:string"/>
  425. </xs:complexType>
  426. <xs:complexType name="SetterType">
  427. <xs:attribute name="property" type="xs:string" use="required"/>
  428. <xs:attribute name="value" type="xs:string" use="required"/>
  429. </xs:complexType>
  430. <xs:complexType name="TriggerType">
  431. <xs:sequence>
  432. <xs:element name="setter" type="tns:SetterType" maxOccurs="unbounded"/>
  433. </xs:sequence>
  434. <xs:attribute name="property" type="xs:string" use="required"/>
  435. <xs:attribute name="value" type="xs:string" use="required"/>
  436. </xs:complexType>
  437. <!-- ENHANCEMENT: Triggers Type -->
  438. <xs:complexType name="TriggersType">
  439. <xs:sequence>
  440. <xs:element name="trigger" type="tns:AdvancedTriggerType" maxOccurs="unbounded"/>
  441. </xs:sequence>
  442. </xs:complexType>
  443. <xs:complexType name="AdvancedTriggerType">
  444. <xs:sequence>
  445. <xs:element name="condition" type="tns:TriggerConditionType" maxOccurs="unbounded"/>
  446. <xs:element name="action" type="tns:TriggerActionType" maxOccurs="unbounded"/>
  447. </xs:sequence>
  448. <xs:attribute name="name" type="xs:string"/>
  449. <xs:attribute name="type" type="tns:TriggerTypeEnum" use="required"/>
  450. </xs:complexType>
  451. <xs:complexType name="TriggerConditionType">
  452. <xs:attribute name="property" type="xs:string" use="required"/>
  453. <xs:attribute name="operator" type="tns:ComparisonOperatorEnum" use="required"/>
  454. <xs:attribute name="value" type="xs:string" use="required"/>
  455. </xs:complexType>
  456. <xs:complexType name="TriggerActionType">
  457. <xs:attribute name="type" type="tns:ActionTypeEnum" use="required"/>
  458. <xs:attribute name="target" type="xs:string"/>
  459. <xs:attribute name="property" type="xs:string"/>
  460. <xs:attribute name="value" type="xs:string"/>
  461. <xs:attribute name="command" type="xs:string"/>
  462. </xs:complexType>
  463. <xs:simpleType name="TriggerTypeEnum">
  464. <xs:restriction base="xs:string">
  465. <xs:enumeration value="Property"/>
  466. <xs:enumeration value="Event"/>
  467. <xs:enumeration value="Data"/>
  468. <xs:enumeration value="Multi"/>
  469. <xs:enumeration value="Condition"/>
  470. </xs:restriction>
  471. </xs:simpleType>
  472. <xs:simpleType name="ComparisonOperatorEnum">
  473. <xs:restriction base="xs:string">
  474. <xs:enumeration value="Equal"/>
  475. <xs:enumeration value="NotEqual"/>
  476. <xs:enumeration value="GreaterThan"/>
  477. <xs:enumeration value="LessThan"/>
  478. <xs:enumeration value="GreaterThanOrEqual"/>
  479. <xs:enumeration value="LessThanOrEqual"/>
  480. <xs:enumeration value="Contains"/>
  481. <xs:enumeration value="StartsWith"/>
  482. <xs:enumeration value="EndsWith"/>
  483. </xs:restriction>
  484. </xs:simpleType>
  485. <xs:simpleType name="ActionTypeEnum">
  486. <xs:restriction base="xs:string">
  487. <xs:enumeration value="SetProperty"/>
  488. <xs:enumeration value="InvokeCommand"/>
  489. <xs:enumeration value="BeginStoryboard"/>
  490. <xs:enumeration value="StopStoryboard"/>
  491. <xs:enumeration value="PlaySound"/>
  492. <xs:enumeration value="CallMethod"/>
  493. </xs:restriction>
  494. </xs:simpleType>
  495. </xs:schema>