1 <?xml version=
"1.0" encoding=
"UTF-8" ?>
3 <xs:schema xmlns:
xs=
"http://www.w3.org/2001/XMLSchema">
4 <xs:simpleType name=
"trueFalse" >
5 <xs:restriction base=
"xs:NMTOKEN" >
6 <xs:enumeration value=
"true" />
7 <xs:enumeration value=
"false" />
11 <xs:simpleType name=
"tableName" >
12 <xs:restriction base=
"xs:string" >
13 <xs:pattern value='[
0-
9a-z_]{
1,
28}'
/>
17 <xs:simpleType name=
"fieldName" >
18 <xs:restriction base=
"xs:string" >
19 <xs:pattern value='[
0-
9a-z_]{
1,
30}'
/>
23 <xs:simpleType name=
"fieldType">
24 <xs:restriction base=
"xs:NMTOKEN">
25 <xs:enumeration value=
"int" />
26 <xs:enumeration value=
"number" />
27 <xs:enumeration value=
"float" />
28 <xs:enumeration value=
"char" />
29 <xs:enumeration value=
"text" />
30 <xs:enumeration value=
"binary" />
31 <xs:enumeration value=
"datetime" />
35 <xs:simpleType name=
"fieldLength" >
36 <xs:restriction base=
"xs:string" >
37 <xs:pattern value='(\d+)|(small|medium|big)'
/>
41 <xs:simpleType name=
"fieldsList" >
42 <xs:restriction base=
"xs:string" >
43 <xs:pattern value='[
0-
9a-z_, ]+'
/>
47 <xs:simpleType name=
"keyType">
48 <xs:restriction base=
"xs:NMTOKEN">
49 <xs:enumeration value=
"primary" />
50 <xs:enumeration value=
"unique" />
51 <xs:enumeration value=
"foreign" />
52 <xs:enumeration value=
"foreign-unique" />
57 <xs:element name=
"FIELD">
59 <xs:attribute name=
"NAME" type=
"fieldName" use=
"required" />
60 <xs:attribute name=
"SEQUENCE" type=
"trueFalse" use=
"required" />
61 <xs:attribute name=
"TYPE" type=
"fieldType" use=
"required" />
62 <xs:attribute name=
"LENGTH" type=
"fieldLength" use=
"optional" />
63 <xs:attribute name=
"NOTNULL" type=
"trueFalse" use=
"required" />
64 <xs:attribute name=
"DECIMALS" type=
"xs:positiveInteger" use=
"optional" />
65 <xs:attribute name=
"UNSIGNED" type=
"trueFalse" use=
"optional" />
66 <!-- TODO: Moodle 2.1 - Drop ENUM and ENUMVALUES attributes -->
67 <xs:attribute name=
"ENUM" type=
"trueFalse" use=
"optional" />
68 <xs:attribute name=
"ENUMVALUES" type=
"xs:string" use=
"optional" />
69 <xs:attribute name=
"DEFAULT" type=
"xs:string" use=
"optional" />
70 <xs:attribute name=
"COMMENT" type=
"xs:string" use=
"optional" />
71 <xs:attribute name=
"PREVIOUS" type=
"fieldName" use=
"optional" />
72 <xs:attribute name=
"NEXT" type=
"fieldName" use=
"optional" />
76 <xs:element name=
"FIELDS">
79 <xs:element ref=
"FIELD" maxOccurs=
"unbounded" />
84 <xs:element name=
"INDEX">
86 <xs:attribute name=
"NAME" type=
"xs:NMTOKEN" use=
"required" />
87 <xs:attribute name=
"UNIQUE" type=
"trueFalse" use=
"required" />
88 <xs:attribute name=
"FIELDS" type=
"fieldsList" use=
"required" />
89 <xs:attribute name=
"COMMENT" type=
"xs:string" use=
"optional" />
90 <xs:attribute name=
"PREVIOUS" type=
"xs:NMTOKEN" use=
"optional" />
91 <xs:attribute name=
"NEXT" type=
"xs:NMTOKEN" use=
"optional" />
95 <xs:element name=
"INDEXES">
98 <xs:element ref=
"INDEX" maxOccurs=
"unbounded" />
103 <xs:element name=
"KEY">
105 <xs:attribute name=
"NAME" type=
"xs:NMTOKEN" use=
"required" />
106 <xs:attribute name=
"TYPE" type=
"keyType" use=
"required" />
107 <xs:attribute name=
"FIELDS" type=
"fieldsList" use=
"required" />
108 <xs:attribute name=
"REFTABLE" type=
"tableName" use=
"optional" />
109 <xs:attribute name=
"REFFIELDS" type=
"fieldsList" use=
"optional" />
110 <xs:attribute name=
"COMMENT" type=
"xs:string" use=
"optional" />
111 <xs:attribute name=
"PREVIOUS" type=
"xs:NMTOKEN" use=
"optional" />
112 <xs:attribute name=
"NEXT" type=
"xs:NMTOKEN" use=
"optional" />
116 <xs:element name=
"KEYS">
119 <xs:element ref=
"KEY" maxOccurs=
"unbounded" />
124 <xs:element name=
"SENTENCE">
126 <xs:attribute name=
"TEXT" type=
"xs:string" use=
"required" />
130 <xs:element name=
"SENTENCES">
133 <xs:element ref=
"SENTENCE" maxOccurs=
"unbounded" />
138 <xs:element name=
"TABLE">
141 <xs:element ref=
"FIELDS" />
142 <xs:element ref=
"KEYS" minOccurs=
"0" />
143 <xs:element ref=
"INDEXES" minOccurs=
"0" />
145 <xs:attribute name=
"NAME" type=
"tableName" use=
"required" />
146 <xs:attribute name=
"COMMENT" type=
"xs:string" use=
"optional" />
147 <xs:attribute name=
"PREVIOUS" type=
"tableName" use=
"optional" />
148 <xs:attribute name=
"NEXT" type=
"tableName" use=
"optional" />
152 <xs:element name=
"TABLES">
155 <xs:element ref=
"TABLE" maxOccurs=
"unbounded" />
160 <xs:element name=
"XMLDB">
163 <xs:element ref=
"TABLES" minOccurs=
"0" />
165 <xs:attribute name=
"PATH" type=
"xs:string" use=
"required" />
166 <xs:attribute name=
"VERSION" type=
"xs:string" use=
"required" />
167 <xs:attribute name=
"COMMENT" type=
"xs:string" use=
"optional" />