xddl.xsd 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xs:schema targetNamespace="http://static.gigobyte.com/schema/v1/xddl.xsd"
  3. xmlns="http://static.gigobyte.com/schema/v1/xddl.xsd"
  4. xmlns:xs="http://www.w3.org/2001/XMLSchema"
  5. elementFormDefault="qualified">
  6. <xs:element name="schema">
  7. <xs:complexType>
  8. <xs:sequence>
  9. <xs:element name="table"
  10. type="Table"
  11. minOccurs="0"
  12. maxOccurs="unbounded" />
  13. <xs:element name="script"
  14. type="xs:string"
  15. minOccurs="0" />
  16. </xs:sequence>
  17. <xs:attribute name="name"
  18. type="xs:string"
  19. use="optional" />
  20. <xs:attribute name="author"
  21. type="xs:string"
  22. use="optional" />
  23. </xs:complexType>
  24. </xs:element>
  25. <!-- XSD TYPES -->
  26. <!-- C -->
  27. <xs:complexType name="Column">
  28. <xs:sequence>
  29. <xs:element name="comment"
  30. type="xs:string"
  31. minOccurs="0" />
  32. <xs:element name="dataType"
  33. type="DataType" />
  34. <xs:element name="modifier"
  35. type="xs:string"
  36. minOccurs="0"
  37. maxOccurs="unbounded" />
  38. </xs:sequence>
  39. <xs:attribute name="name"
  40. type="xs:string"
  41. use="required" />
  42. <xs:attribute name="nullable"
  43. type="xs:boolean"
  44. use="optional"
  45. default="0" />
  46. <xs:attribute name="autoIncrement"
  47. type="xs:boolean"
  48. default="0"
  49. use="optional" />
  50. </xs:complexType>
  51. <!-- D -->
  52. <xs:complexType name="DataType">
  53. <xs:simpleContent>
  54. <xs:extension base="TypeName">
  55. <xs:attribute name="scale"
  56. type="xs:int"
  57. use="optional" />
  58. <xs:attribute name="precision"
  59. type="xs:int"
  60. use="optional" />
  61. </xs:extension>
  62. </xs:simpleContent>
  63. </xs:complexType>
  64. <!-- F -->
  65. <xs:complexType name="ForeignKey">
  66. <xs:all>
  67. <xs:element name="onUpdate"
  68. type="ForeignKeyRule"
  69. minOccurs="0" />
  70. <xs:element name="onDelete"
  71. type="ForeignKeyRule"
  72. minOccurs="0" />
  73. </xs:all>
  74. <xs:attribute name="name"
  75. type="xs:string"
  76. use="optional" />
  77. <xs:attribute name="localColumn"
  78. type="xs:string"
  79. use="required" />
  80. <xs:attribute name="foreignTable"
  81. type="xs:string"
  82. use="required" />
  83. <xs:attribute name="foreignColumn"
  84. type="xs:string"
  85. use="required" />
  86. </xs:complexType>
  87. <xs:simpleType name="ForeignKeyRule">
  88. <xs:restriction base="xs:string">
  89. <xs:enumeration value="CASCADE" />
  90. <xs:enumeration value="NO ACTION" />
  91. <xs:enumeration value="SET NULL" />
  92. <xs:enumeration value="SET DEFAULT" />
  93. <xs:enumeration value="RESTRICT" />
  94. </xs:restriction>
  95. </xs:simpleType>
  96. <!-- I -->
  97. <xs:complexType name="Index">
  98. <xs:sequence>
  99. <xs:element name="columnName"
  100. type="IndexColumn"
  101. maxOccurs="unbounded" />
  102. </xs:sequence>
  103. <xs:attribute name="name"
  104. type="xs:string"
  105. use="optional" />
  106. <xs:attribute name="unique"
  107. type="xs:boolean"
  108. default="0" />
  109. <xs:attribute name="table"
  110. type="xs:string"
  111. use="optional" />
  112. <xs:attribute name="type">
  113. <xs:simpleType>
  114. <xs:restriction base="xs:string">
  115. <xs:enumeration value="index" />
  116. <xs:enumeration value="primaryKey" />
  117. </xs:restriction>
  118. </xs:simpleType>
  119. </xs:attribute>
  120. </xs:complexType>
  121. <xs:complexType name="IndexColumn">
  122. <xs:simpleContent>
  123. <xs:extension base="xs:string">
  124. <xs:attribute name="order"
  125. type="SortOrder"
  126. use="optional" />
  127. </xs:extension>
  128. </xs:simpleContent>
  129. </xs:complexType>
  130. <!-- S -->
  131. <xs:simpleType name="SortOrder">
  132. <xs:restriction base="xs:string">
  133. <xs:enumeration value="ASC" />
  134. <xs:enumeration value="DESC" />
  135. </xs:restriction>
  136. </xs:simpleType>
  137. <!-- T -->
  138. <xs:complexType name="Table">
  139. <xs:sequence>
  140. <xs:element name="comment"
  141. type="xs:string"
  142. minOccurs="0" />
  143. <xs:element name="modifier"
  144. type="xs:string"
  145. minOccurs="0"
  146. maxOccurs="unbounded" />
  147. <xs:element name="column"
  148. type="Column"
  149. minOccurs="0"
  150. maxOccurs="unbounded" />
  151. <xs:element name="foreignKey"
  152. type="ForeignKey"
  153. minOccurs="0"
  154. maxOccurs="unbounded" />
  155. <xs:element name="index"
  156. type="Index"
  157. minOccurs="0"
  158. maxOccurs="unbounded" />
  159. </xs:sequence>
  160. <xs:attribute name="name"
  161. type="xs:string"
  162. use="required" />
  163. </xs:complexType>
  164. <xs:simpleType name="TypeName">
  165. <xs:restriction base="xs:string">
  166. <xs:enumeration value="bool" />
  167. <xs:enumeration value="blob" />
  168. <xs:enumeration value="char" />
  169. <xs:enumeration value="text" />
  170. <xs:enumeration value="varchar" />
  171. <xs:enumeration value="int" />
  172. <xs:enumeration value="bigInt" />
  173. <xs:enumeration value="mediumInt" />
  174. <xs:enumeration value="smallInt" />
  175. <xs:enumeration value="float" />
  176. <xs:enumeration value="double" />
  177. <xs:enumeration value="decimal" />
  178. <xs:enumeration value="date" />
  179. <xs:enumeration value="time" />
  180. <xs:enumeration value="dateTime" />
  181. </xs:restriction>
  182. </xs:simpleType>
  183. </xs:schema>