xqueryx.xsd - Revision 1.5 xqueryx.xsd - Working Copy (Revision 1.5)
1<?xml version="1.0"?>1<?xml version="1.0"?>
2<!--  ================================================================================  -->2<!--  ================================================================================  -->
3<!--  NOTES TO READERS OF THIS SCHEMA:                                                  -->3<!--  NOTES TO READERS OF THIS SCHEMA:                                                  -->
4<!--  The default value for both minOccurs and maxOccurs is "1".                        -->4<!--  The default value for both minOccurs and maxOccurs is "1".                        -->
5<!--  The XQueryX schema has been designed to provide the ability to extend definitions -->5<!--  The XQueryX schema has been designed to provide the ability to extend definitions -->
6<!--    of top-level elements in extensions such as Full-Text and the Update Facility.  -->6<!--    of top-level elements in extensions such as Full-Text and the Update Facility.  -->
7<!--    The nature of the modification is to define named complex types and redefine    -->7<!--    The nature of the modification is to define named complex types and redefine    -->
8<!--    those top-level elements in terms of the named complex types.                   -->8<!--    those top-level elements in terms of the named complex types.                   -->
9<!--  ================================================================================  -->9<!--  ================================================================================  -->
10<!--  Changes from Recommendation (XQueryX 3.0):                                        -->10<!--  Changes from Recommendation (XQueryX 3.0):                                        -->
11<!--  ================================================================================  -->11<!--  ================================================================================  -->
12<!--  Errata applied:                                                                   -->12<!--  Errata applied:                                                                   -->
13<!--  ================================================================================  -->13<!--  ================================================================================  -->
14<!--  Modifications:                                                                    -->14<!--  Modifications:                                                                    -->
15<!--    JS/2015-11-05 : Added support for stringConstructor and optional enclosed expr  -->
15<!--    JM/2014-07-11 : Added support for anyMapText and typedMapTest                   -->16<!--    JM/2014-07-11 : Added support for anyMapText and typedMapTest                   -->
16<!--    JM/2014-07-11 : Added support for anyArrayText and typedArrayTest               -->17<!--    JM/2014-07-11 : Added support for anyArrayText and typedArrayTest               -->
17<!--    JM/2014-07-13 : Added support for new alternatives in stepExpr                  -->18<!--    JM/2014-07-13 : Added support for new alternatives in stepExpr                  -->
18<!--    JM/2014-07-13 : Added support for lookup (formerly mapLookup) and arrowPostfix  -->19<!--    JM/2014-07-13 : Added support for lookup (formerly mapLookup) and arrowPostfix  -->
19<!--    JM/2014-07-13 : Added support for unaryLookup (formerly unaryMapLookup)         -->20<!--    JM/2014-07-13 : Added support for unaryLookup (formerly unaryMapLookup)         -->
20<!--    JM/2014-07-13 : Added support for new alternatives in filterExpr                -->21<!--    JM/2014-07-13 : Added support for new alternatives in filterExpr                -->
21<!--    JM/2014-07-13 : Added support for mapConstructor and arrayConstructor           -->22<!--    JM/2014-07-13 : Added support for mapConstructor and arrayConstructor           -->
22<!--    JM/2014-08-28 : Fixed [unary]Lookup replacing stringLiteral w/integerLiteral    -->23<!--    JM/2014-08-28 : Fixed [unary]Lookup replacing stringLiteral w/integerLiteral    -->
23<!--    JM/2015-01-21 : Replaced arrowPostfix with arrowExpr per bug 27537              -->24<!--    JM/2015-01-21 : Replaced arrowPostfix with arrowExpr per bug 27537              -->
24<!--  ================================================================================  -->25<!--  ================================================================================  -->
2526
26<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"27<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
27            xmlns="http://www.w3.org/2005/XQueryX"28            xmlns="http://www.w3.org/2005/XQueryX"
28            targetNamespace="http://www.w3.org/2005/XQueryX"29            targetNamespace="http://www.w3.org/2005/XQueryX"
29            elementFormDefault="qualified" attributeFormDefault="qualified">30            elementFormDefault="qualified" attributeFormDefault="qualified">
3031
3132
32<!-- A few helper declarations                                                          -->33<!-- A few helper declarations                                                          -->
33  <xsd:complexType name="emptyContent"/>34  <xsd:complexType name="emptyContent"/>
3435
35  <xsd:element name="NCName" type="xsd:NCName"/>36  <xsd:element name="NCName" type="xsd:NCName"/>
3637
37  <xsd:complexType name="QName">38  <xsd:complexType name="QName">
38    <xsd:simpleContent>39    <xsd:simpleContent>
39      <xsd:extension base="xsd:NCName">40      <xsd:extension base="xsd:NCName">
40        <xsd:attribute name="prefix" type="xsd:NCName" use="optional"/>41        <xsd:attribute name="prefix" type="xsd:NCName" use="optional"/>
41      </xsd:extension>42      </xsd:extension>
42    </xsd:simpleContent>43    </xsd:simpleContent>
43  </xsd:complexType>44  </xsd:complexType>
4445
45  <xsd:complexType name="EQName">46  <xsd:complexType name="EQName">
46    <xsd:simpleContent>47    <xsd:simpleContent>
47      <xsd:extension base="xsd:NCName">48      <xsd:extension base="xsd:NCName">
48        <xsd:attribute name="prefix" type="xsd:NCName" use="optional"/>49        <xsd:attribute name="prefix" type="xsd:NCName" use="optional"/>
49        <xsd:attribute name="URI" type="xsd:string" use="optional"/>50        <xsd:attribute name="URI" type="xsd:string" use="optional"/>
50      </xsd:extension>51      </xsd:extension>
51    </xsd:simpleContent>52    </xsd:simpleContent>
52  </xsd:complexType>53  </xsd:complexType>
5354
54<!-- The base expression class                                                          -->55<!-- The base expression class                                                          -->
55  <xsd:complexType name="expr"/>56  <xsd:complexType name="expr"/>
5657
57  <xsd:element name="expr" type="expr" abstract="true"/>58  <xsd:element name="expr" type="expr" abstract="true"/>
5859
5960
60<!-- A list of expressions                                                              -->61<!-- A list of expressions                                                              -->
61  <xsd:complexType name="exprList">62  <xsd:complexType name="exprList">
62    <xsd:sequence>63    <xsd:sequence>
63      <xsd:element ref="expr" minOccurs="0" maxOccurs="unbounded"/>64      <xsd:element ref="expr" minOccurs="0" maxOccurs="unbounded"/>
64    </xsd:sequence>65    </xsd:sequence>
65  </xsd:complexType>66  </xsd:complexType>
6667
67<!-- A list of expressions or placeholders                                              -->68<!-- A list of expressions or placeholders                                              -->
68  <xsd:complexType name="exprOrPlaceholderList">69  <xsd:complexType name="exprOrPlaceholderList">
69    <xsd:sequence>70    <xsd:sequence>
70      <xsd:choice minOccurs="0" maxOccurs="unbounded">71      <xsd:choice minOccurs="0" maxOccurs="unbounded">
71        <xsd:element ref="expr"/>72        <xsd:element ref="expr"/>
72        <xsd:element name="argumentPlaceholder" type="emptyContent"/>73        <xsd:element name="argumentPlaceholder" type="emptyContent"/>
73      </xsd:choice>74      </xsd:choice>
74    </xsd:sequence>75    </xsd:sequence>
75  </xsd:complexType>76  </xsd:complexType>
7677
77<!-- A type to be used by elements that comprise an optional expr                       -->78<!-- A type to be used by elements that comprise an optional expr                       -->
78  <xsd:complexType name="exprWrapperOptional">79  <xsd:complexType name="exprWrapperOptional">
79    <xsd:sequence>80    <xsd:sequence>
80      <xsd:element ref="expr" minOccurs="0"/>81      <xsd:element ref="expr" minOccurs="0"/>
81    </xsd:sequence>82    </xsd:sequence>
82  </xsd:complexType>83  </xsd:complexType>
8384
84<!-- Simple wrapper class                                                               -->85<!-- Simple wrapper class                                                               -->
85  <xsd:complexType name="exprWrapper">86  <xsd:complexType name="exprWrapper">
86    <xsd:sequence>87    <xsd:sequence>
87      <xsd:element ref="expr"/>88      <xsd:element ref="expr"/>
88    </xsd:sequence>89    </xsd:sequence>
89  </xsd:complexType>90  </xsd:complexType>
9091
91<!-- A list of literals                                                                 -->92<!-- A list of literals                                                                 -->
92  <xsd:complexType name="literalList">93  <xsd:complexType name="literalList">
93    <xsd:sequence>94    <xsd:sequence>
94      <xsd:element ref="constantExpr" minOccurs="0" maxOccurs="unbounded"/>95      <xsd:element ref="constantExpr" minOccurs="0" maxOccurs="unbounded"/>
95    </xsd:sequence>96    </xsd:sequence>
96  </xsd:complexType>97  </xsd:complexType>
9798
98<!-- constant expressions. We have 4 different subclasses for this                      -->99<!-- constant expressions. We have 4 different subclasses for this                      -->
99  <xsd:complexType name="constantExpr">100  <xsd:complexType name="constantExpr">
100    <xsd:complexContent>101    <xsd:complexContent>
101      <xsd:extension base="expr">102      <xsd:extension base="expr">
102        <xsd:sequence>103        <xsd:sequence>
103          <xsd:element name="value" type="xsd:anyType"/>104          <xsd:element name="value" type="xsd:anyType"/>
104        </xsd:sequence>105        </xsd:sequence>
105      </xsd:extension>106      </xsd:extension>
106    </xsd:complexContent>107    </xsd:complexContent>
107  </xsd:complexType>108  </xsd:complexType>
108109
109  <xsd:element name="constantExpr" type="constantExpr" abstract="true"110  <xsd:element name="constantExpr" type="constantExpr" abstract="true"
110               substitutionGroup="expr"/>111               substitutionGroup="expr"/>
111112
112113
113  <xsd:complexType name="integerConstantExpr">114  <xsd:complexType name="integerConstantExpr">
114    <xsd:complexContent>115    <xsd:complexContent>
115      <xsd:restriction base="constantExpr">116      <xsd:restriction base="constantExpr">
116        <xsd:sequence>117        <xsd:sequence>
117          <xsd:element name="value" type="xsd:integer"/>118          <xsd:element name="value" type="xsd:integer"/>
118        </xsd:sequence>119        </xsd:sequence>
119      </xsd:restriction>120      </xsd:restriction>
120    </xsd:complexContent>121    </xsd:complexContent>
121  </xsd:complexType>122  </xsd:complexType>
122123
123  <xsd:element name="integerConstantExpr" type="integerConstantExpr"124  <xsd:element name="integerConstantExpr" type="integerConstantExpr"
124               substitutionGroup="constantExpr"/>125               substitutionGroup="constantExpr"/>
125126
126127
127  <xsd:complexType name="decimalConstantExpr">128  <xsd:complexType name="decimalConstantExpr">
128    <xsd:complexContent>129    <xsd:complexContent>
129      <xsd:restriction base="constantExpr">130      <xsd:restriction base="constantExpr">
130        <xsd:sequence>131        <xsd:sequence>
131          <xsd:element name="value" type="xsd:decimal"/>132          <xsd:element name="value" type="xsd:decimal"/>
132        </xsd:sequence>133        </xsd:sequence>
133      </xsd:restriction>134      </xsd:restriction>
134    </xsd:complexContent>135    </xsd:complexContent>
135  </xsd:complexType>136  </xsd:complexType>
136137
137  <xsd:element name="decimalConstantExpr" type="decimalConstantExpr"138  <xsd:element name="decimalConstantExpr" type="decimalConstantExpr"
138               substitutionGroup="constantExpr"/>139               substitutionGroup="constantExpr"/>
139140
140141
141  <xsd:complexType name="doubleConstantExpr">142  <xsd:complexType name="doubleConstantExpr">
142    <xsd:complexContent>143    <xsd:complexContent>
143      <xsd:restriction base="constantExpr">144      <xsd:restriction base="constantExpr">
144        <xsd:sequence>145        <xsd:sequence>
145          <xsd:element name="value" type="xsd:double"/>146          <xsd:element name="value" type="xsd:double"/>
146        </xsd:sequence>147        </xsd:sequence>
147      </xsd:restriction>148      </xsd:restriction>
148    </xsd:complexContent>149    </xsd:complexContent>
149  </xsd:complexType>150  </xsd:complexType>
150151
151  <xsd:element name="doubleConstantExpr" type="doubleConstantExpr"152  <xsd:element name="doubleConstantExpr" type="doubleConstantExpr"
152               substitutionGroup="constantExpr"/>153               substitutionGroup="constantExpr"/>
153154
154155
155  <xsd:complexType name="stringConstantExpr">156  <xsd:complexType name="stringConstantExpr">
156    <xsd:complexContent>157    <xsd:complexContent>
157      <xsd:restriction base="constantExpr">158      <xsd:restriction base="constantExpr">
158        <xsd:sequence>159        <xsd:sequence>
159          <xsd:element name="value" type="xsd:string"/>160          <xsd:element name="value" type="xsd:string"/>
160        </xsd:sequence>161        </xsd:sequence>
161      </xsd:restriction>162      </xsd:restriction>
162    </xsd:complexContent>163    </xsd:complexContent>
163  </xsd:complexType>164  </xsd:complexType>
164165
165  <xsd:element name="stringConstantExpr" type="stringConstantExpr"166  <xsd:element name="stringConstantExpr" type="stringConstantExpr"
166               substitutionGroup="constantExpr"/>167               substitutionGroup="constantExpr"/>
167168
168169
169<!-- Variables                                                                          -->170<!-- Variables                                                                          -->
170  <xsd:complexType name="varRef">171  <xsd:complexType name="varRef">
171    <xsd:complexContent>172    <xsd:complexContent>
172      <xsd:extension base="expr">173      <xsd:extension base="expr">
173        <xsd:sequence>174        <xsd:sequence>
174          <xsd:element name="name" type="EQName"/>175          <xsd:element name="name" type="EQName"/>
175        </xsd:sequence>176        </xsd:sequence>
176      </xsd:extension>177      </xsd:extension>
177    </xsd:complexContent>178    </xsd:complexContent>
178  </xsd:complexType>179  </xsd:complexType>
179180
180  <xsd:element name="varRef" type="varRef" substitutionGroup="expr"/>181  <xsd:element name="varRef" type="varRef" substitutionGroup="expr"/>
181182
182183
183<!-- root and context-item expressions                                                  -->184<!-- root and context-item expressions                                                  -->
184<!-- rootExpr deleted per Bugzilla Bug #2523                                            -->185<!-- rootExpr deleted per Bugzilla Bug #2523                                            -->
185  <xsd:complexType name="contextItemExpr">186  <xsd:complexType name="contextItemExpr">
186    <xsd:complexContent>187    <xsd:complexContent>
187      <xsd:extension base="expr"/>188      <xsd:extension base="expr"/>
188    </xsd:complexContent>189    </xsd:complexContent>
189  </xsd:complexType>190  </xsd:complexType>
190191
191  <xsd:element name="contextItemExpr" type="contextItemExpr"192  <xsd:element name="contextItemExpr" type="contextItemExpr"
192               substitutionGroup="expr"/>193               substitutionGroup="expr"/>
193194
194195
195<!-- Pragmas and extension expressions                                                  -->196<!-- Pragmas and extension expressions                                                  -->
196<!--   2010-01-01, JM replaced pragmaContents elem def'n with one that has a pattern    -->197<!--   2010-01-01, JM replaced pragmaContents elem def'n with one that has a pattern    -->
197  <xsd:complexType name="pragma">198  <xsd:complexType name="pragma">
198    <xsd:sequence>199    <xsd:sequence>
199      <xsd:element name="pragmaName" type="EQName"/>200      <xsd:element name="pragmaName" type="EQName"/>
200      <xsd:element name="pragmaContents">201      <xsd:element name="pragmaContents">
201        <xsd:simpleType>202        <xsd:simpleType>
202          <xsd:restriction base="xsd:string">203          <xsd:restriction base="xsd:string">
203            <xsd:pattern value="(([^#]|#+[^\)#])*#*)"/>204            <xsd:pattern value="(([^#]|#+[^\)#])*#*)"/>
204          </xsd:restriction>205          </xsd:restriction>
205        </xsd:simpleType>206        </xsd:simpleType>
206      </xsd:element>207      </xsd:element>
207    </xsd:sequence>208    </xsd:sequence>
208  </xsd:complexType>209  </xsd:complexType>
209210
210  <xsd:element name="pragma" type="pragma"/>211  <xsd:element name="pragma" type="pragma"/>
211212
212213
213  <xsd:complexType name="extensionExpr">214  <xsd:complexType name="extensionExpr">
214    <xsd:complexContent>215    <xsd:complexContent>
215      <xsd:extension base="expr">216      <xsd:extension base="expr">
216        <xsd:sequence>217        <xsd:sequence>
217          <xsd:element ref="pragma" maxOccurs="unbounded"/>218          <xsd:element ref="pragma" maxOccurs="unbounded"/>
218          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>219          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
219        </xsd:sequence>220        </xsd:sequence>
220      </xsd:extension>221      </xsd:extension>
221    </xsd:complexContent>222    </xsd:complexContent>
222  </xsd:complexType>223  </xsd:complexType>
223224
224  <xsd:element name="extensionExpr" type="extensionExpr"225  <xsd:element name="extensionExpr" type="extensionExpr"
225               substitutionGroup="expr"/>226               substitutionGroup="expr"/>
226227
227228
228<!-- Simple map expressions                                                             -->229<!-- Simple map expressions                                                             -->
229  <xsd:complexType name="simpleMapExpr">230  <xsd:complexType name="simpleMapExpr">
230    <xsd:complexContent>231    <xsd:complexContent>
231      <xsd:extension base="expr">232      <xsd:extension base="expr">
232        <xsd:sequence minOccurs="2" maxOccurs="unbounded">233        <xsd:sequence minOccurs="2" maxOccurs="unbounded">
233          <xsd:element ref="pathExpr"/>234          <xsd:element ref="pathExpr"/>
234        </xsd:sequence>235        </xsd:sequence>
235      </xsd:extension>236      </xsd:extension>
236    </xsd:complexContent>237    </xsd:complexContent>
237  </xsd:complexType>238  </xsd:complexType>
238239
239  <xsd:element name="simpleMapExpr" type="simpleMapExpr"240  <xsd:element name="simpleMapExpr" type="simpleMapExpr"
240               substitutionGroup="expr"/>241               substitutionGroup="expr"/>
241242
242243
243<!-- Function call expressions                                                          -->244<!-- Function call expressions                                                          -->
244  <xsd:complexType name="functionCallExpr">245  <xsd:complexType name="functionCallExpr">
245    <xsd:complexContent>246    <xsd:complexContent>
246      <xsd:extension base="expr">247      <xsd:extension base="expr">
247        <xsd:sequence>248        <xsd:sequence>
248          <xsd:element name="functionName" type="EQName"/>249          <xsd:element name="functionName" type="EQName"/>
249          <xsd:element name="arguments" type="exprOrPlaceholderList" minOccurs="0"/>250          <xsd:element name="arguments" type="exprOrPlaceholderList" minOccurs="0"/>
250        </xsd:sequence>251        </xsd:sequence>
251      </xsd:extension>252      </xsd:extension>
252    </xsd:complexContent>253    </xsd:complexContent>
253  </xsd:complexType>254  </xsd:complexType>
254255
255  <xsd:element name="functionCallExpr" type="functionCallExpr"256  <xsd:element name="functionCallExpr" type="functionCallExpr"
256               substitutionGroup="expr"/>257               substitutionGroup="expr"/>
257258
258259
259<!-- Constructor functions                                                              -->260<!-- Constructor functions                                                              -->
260  <xsd:complexType name="constructorFunctionExpr">261  <xsd:complexType name="constructorFunctionExpr">
261    <xsd:complexContent>262    <xsd:complexContent>
262      <xsd:extension base="expr">263      <xsd:extension base="expr">
263        <xsd:sequence>264        <xsd:sequence>
264          <xsd:element name="typeName" type="EQName"/>265          <xsd:element name="typeName" type="EQName"/>
265          <xsd:element name="argExpr" type="exprWrapper"/>266          <xsd:element name="argExpr" type="exprWrapper"/>
266        </xsd:sequence>267        </xsd:sequence>
267      </xsd:extension>268      </xsd:extension>
268    </xsd:complexContent>269    </xsd:complexContent>
269  </xsd:complexType>270  </xsd:complexType>
270271
271  <xsd:element name="constructorFunctionExpr" type="constructorFunctionExpr"272  <xsd:element name="constructorFunctionExpr" type="constructorFunctionExpr"
272               substitutionGroup="expr"/>273               substitutionGroup="expr"/>
273274
274275
275<!-- Sequence expressions                                                               -->276<!-- Sequence expressions                                                               -->
276  <xsd:complexType name="sequenceExpr">277  <xsd:complexType name="sequenceExpr">
277    <xsd:complexContent>278    <xsd:complexContent>
278      <xsd:extension base="expr">279      <xsd:extension base="expr">
279        <xsd:sequence>280        <xsd:sequence>
280          <xsd:element ref="expr" minOccurs="0" maxOccurs="unbounded"/>281          <xsd:element ref="expr" minOccurs="0" maxOccurs="unbounded"/>
281        </xsd:sequence>282        </xsd:sequence>
282      </xsd:extension>283      </xsd:extension>
283    </xsd:complexContent>284    </xsd:complexContent>
284  </xsd:complexType>285  </xsd:complexType>
285286
286  <xsd:element name="sequenceExpr" type="sequenceExpr" substitutionGroup="expr"/>287  <xsd:element name="sequenceExpr" type="sequenceExpr" substitutionGroup="expr"/>
287288
288289
289  <xsd:complexType name="rangeSequenceExpr">290  <xsd:complexType name="rangeSequenceExpr">
290    <xsd:complexContent>291    <xsd:complexContent>
291      <xsd:extension base="expr">292      <xsd:extension base="expr">
292        <xsd:sequence>293        <xsd:sequence>
293          <xsd:element name="startExpr" type="exprWrapper"/>294          <xsd:element name="startExpr" type="exprWrapper"/>
294          <xsd:element name="endExpr" type="exprWrapper"/>295          <xsd:element name="endExpr" type="exprWrapper"/>
295        </xsd:sequence>296        </xsd:sequence>
296      </xsd:extension>297      </xsd:extension>
297    </xsd:complexContent>298    </xsd:complexContent>
298  </xsd:complexType>299  </xsd:complexType>
299300
300  <xsd:element name="rangeSequenceExpr" type="rangeSequenceExpr"301  <xsd:element name="rangeSequenceExpr" type="rangeSequenceExpr"
301               substitutionGroup="expr"/>302               substitutionGroup="expr"/>
302303
303304
304<!-- Builtin operator expressions                                                       -->305<!-- Builtin operator expressions                                                       -->
305  <xsd:complexType name="operatorExpr">306  <xsd:complexType name="operatorExpr">
306    <xsd:complexContent>307    <xsd:complexContent>
307      <xsd:extension base="expr"/>308      <xsd:extension base="expr"/>
308    </xsd:complexContent>309    </xsd:complexContent>
309  </xsd:complexType>310  </xsd:complexType>
310311
311312
312  <xsd:complexType name="unaryOperatorExpr">313  <xsd:complexType name="unaryOperatorExpr">
313    <xsd:complexContent>314    <xsd:complexContent>
314      <xsd:extension base="operatorExpr">315      <xsd:extension base="operatorExpr">
315        <xsd:sequence>316        <xsd:sequence>
316          <xsd:element name="operand" type="exprWrapper"/>317          <xsd:element name="operand" type="exprWrapper"/>
317        </xsd:sequence>318        </xsd:sequence>
318      </xsd:extension>319      </xsd:extension>
319    </xsd:complexContent>320    </xsd:complexContent>
320  </xsd:complexType>321  </xsd:complexType>
321322
322323
323  <xsd:complexType name="binaryOperatorExpr">324  <xsd:complexType name="binaryOperatorExpr">
324    <xsd:complexContent>325    <xsd:complexContent>
325      <xsd:extension base="operatorExpr">326      <xsd:extension base="operatorExpr">
326        <xsd:sequence>327        <xsd:sequence>
327          <xsd:element name="firstOperand" type="exprWrapper"/>328          <xsd:element name="firstOperand" type="exprWrapper"/>
328          <xsd:element name="secondOperand" type="exprWrapper"/>329          <xsd:element name="secondOperand" type="exprWrapper"/>
329        </xsd:sequence>330        </xsd:sequence>
330      </xsd:extension>331      </xsd:extension>
331    </xsd:complexContent>332    </xsd:complexContent>
332  </xsd:complexType>333  </xsd:complexType>
333334
334335
335<!-- General operator expressions -->336<!-- General operator expressions -->
336  <xsd:element name="operatorExpr" type="operatorExpr"337  <xsd:element name="operatorExpr" type="operatorExpr"
337               abstract="true" substitutionGroup="expr"/>338               abstract="true" substitutionGroup="expr"/>
338339
339<!-- Arithmetic operator expressions -->340<!-- Arithmetic operator expressions -->
340  <xsd:element name="arithmeticOp" type="operatorExpr"341  <xsd:element name="arithmeticOp" type="operatorExpr"
341               abstract="true" substitutionGroup="operatorExpr"/>342               abstract="true" substitutionGroup="operatorExpr"/>
342343
343  <xsd:element name="addOp" type="binaryOperatorExpr"344  <xsd:element name="addOp" type="binaryOperatorExpr"
344               substitutionGroup="arithmeticOp"/>345               substitutionGroup="arithmeticOp"/>
345346
346  <xsd:element name="subtractOp" type="binaryOperatorExpr"347  <xsd:element name="subtractOp" type="binaryOperatorExpr"
347               substitutionGroup="arithmeticOp"/>348               substitutionGroup="arithmeticOp"/>
348349
349  <xsd:element name="multiplyOp" type="binaryOperatorExpr"350  <xsd:element name="multiplyOp" type="binaryOperatorExpr"
350               substitutionGroup="arithmeticOp"/>351               substitutionGroup="arithmeticOp"/>
351352
352  <xsd:element name="divOp" type="binaryOperatorExpr"353  <xsd:element name="divOp" type="binaryOperatorExpr"
353               substitutionGroup="arithmeticOp"/>354               substitutionGroup="arithmeticOp"/>
354355
355  <xsd:element name="idivOp" type="binaryOperatorExpr"356  <xsd:element name="idivOp" type="binaryOperatorExpr"
356               substitutionGroup="arithmeticOp"/>357               substitutionGroup="arithmeticOp"/>
357358
358  <xsd:element name="modOp" type="binaryOperatorExpr"359  <xsd:element name="modOp" type="binaryOperatorExpr"
359               substitutionGroup="arithmeticOp"/>360               substitutionGroup="arithmeticOp"/>
360361
361  <xsd:element name="unaryMinusOp" type="unaryOperatorExpr"362  <xsd:element name="unaryMinusOp" type="unaryOperatorExpr"
362               substitutionGroup="arithmeticOp"/>363               substitutionGroup="arithmeticOp"/>
363364
364  <xsd:element name="unaryPlusOp" type="unaryOperatorExpr"365  <xsd:element name="unaryPlusOp" type="unaryOperatorExpr"
365               substitutionGroup="arithmeticOp"/>366               substitutionGroup="arithmeticOp"/>
366367
367<!-- String operator expressions -->368<!-- String operator expressions -->
368  <xsd:element name="stringOp" type="operatorExpr"369  <xsd:element name="stringOp" type="operatorExpr"
369               abstract="true" substitutionGroup="operatorExpr"/>370               abstract="true" substitutionGroup="operatorExpr"/>
370371
371  <xsd:element name="stringConcatenateOp" type="binaryOperatorExpr"372  <xsd:element name="stringConcatenateOp" type="binaryOperatorExpr"
372               substitutionGroup="stringOp"/>373               substitutionGroup="stringOp"/>
373374
374<!-- Comparison operator expressions -->375<!-- Comparison operator expressions -->
375  <xsd:element name="comparisonOp" type="binaryOperatorExpr" abstract="true"376  <xsd:element name="comparisonOp" type="binaryOperatorExpr" abstract="true"
376               substitutionGroup="operatorExpr"/>377               substitutionGroup="operatorExpr"/>
377378
378<!-- Value comparison operator expressions -->379<!-- Value comparison operator expressions -->
379  <xsd:element name="valueComparisonOp" type="binaryOperatorExpr"380  <xsd:element name="valueComparisonOp" type="binaryOperatorExpr"
380               abstract="true" substitutionGroup="operatorExpr"/>381               abstract="true" substitutionGroup="operatorExpr"/>
381382
382  <xsd:element name="eqOp" type="binaryOperatorExpr"383  <xsd:element name="eqOp" type="binaryOperatorExpr"
383               substitutionGroup="valueComparisonOp"/>384               substitutionGroup="valueComparisonOp"/>
384385
385  <xsd:element name="neOp" type="binaryOperatorExpr"386  <xsd:element name="neOp" type="binaryOperatorExpr"
386               substitutionGroup="valueComparisonOp"/>387               substitutionGroup="valueComparisonOp"/>
387388
388  <xsd:element name="gtOp" type="binaryOperatorExpr"389  <xsd:element name="gtOp" type="binaryOperatorExpr"
389               substitutionGroup="valueComparisonOp"/>390               substitutionGroup="valueComparisonOp"/>
390391
391  <xsd:element name="geOp" type="binaryOperatorExpr"392  <xsd:element name="geOp" type="binaryOperatorExpr"
392               substitutionGroup="valueComparisonOp"/>393               substitutionGroup="valueComparisonOp"/>
393394
394  <xsd:element name="ltOp" type="binaryOperatorExpr"395  <xsd:element name="ltOp" type="binaryOperatorExpr"
395               substitutionGroup="valueComparisonOp"/>396               substitutionGroup="valueComparisonOp"/>
396397
397  <xsd:element name="leOp" type="binaryOperatorExpr"398  <xsd:element name="leOp" type="binaryOperatorExpr"
398               substitutionGroup="valueComparisonOp"/>399               substitutionGroup="valueComparisonOp"/>
399400
400<!-- General comparison operator expressions -->401<!-- General comparison operator expressions -->
401  <xsd:element name="generalComparisonOp" type="binaryOperatorExpr" abstract="true"402  <xsd:element name="generalComparisonOp" type="binaryOperatorExpr" abstract="true"
402               substitutionGroup="operatorExpr"/>403               substitutionGroup="operatorExpr"/>
403404
404  <xsd:element name="equalOp" type="binaryOperatorExpr"405  <xsd:element name="equalOp" type="binaryOperatorExpr"
405               substitutionGroup="generalComparisonOp"/>406               substitutionGroup="generalComparisonOp"/>
406407
407  <xsd:element name="notEqualOp" type="binaryOperatorExpr"408  <xsd:element name="notEqualOp" type="binaryOperatorExpr"
408               substitutionGroup="generalComparisonOp"/>409               substitutionGroup="generalComparisonOp"/>
409410
410  <xsd:element name="lessThanOp" type="binaryOperatorExpr"411  <xsd:element name="lessThanOp" type="binaryOperatorExpr"
411               substitutionGroup="generalComparisonOp"/>412               substitutionGroup="generalComparisonOp"/>
412413
413  <xsd:element name="lessThanOrEqualOp" type="binaryOperatorExpr"414  <xsd:element name="lessThanOrEqualOp" type="binaryOperatorExpr"
414               substitutionGroup="generalComparisonOp"/>415               substitutionGroup="generalComparisonOp"/>
415416
416  <xsd:element name="greaterThanOp" type="binaryOperatorExpr"417  <xsd:element name="greaterThanOp" type="binaryOperatorExpr"
417               substitutionGroup="generalComparisonOp"/>418               substitutionGroup="generalComparisonOp"/>
418419
419  <xsd:element name="greaterThanOrEqualOp" type="binaryOperatorExpr"420  <xsd:element name="greaterThanOrEqualOp" type="binaryOperatorExpr"
420               substitutionGroup="generalComparisonOp"/>421               substitutionGroup="generalComparisonOp"/>
421422
422<!-- Node comparison operator expressions -->423<!-- Node comparison operator expressions -->
423  <xsd:element name="nodeComparisonOp" type="binaryOperatorExpr"424  <xsd:element name="nodeComparisonOp" type="binaryOperatorExpr"
424               abstract="true" substitutionGroup="operatorExpr"/>425               abstract="true" substitutionGroup="operatorExpr"/>
425426
426  <xsd:element name="isOp" type="binaryOperatorExpr"427  <xsd:element name="isOp" type="binaryOperatorExpr"
427               substitutionGroup="nodeComparisonOp"/>428               substitutionGroup="nodeComparisonOp"/>
428429
429<!-- Order comparison operator expressions -->430<!-- Order comparison operator expressions -->
430  <xsd:element name="orderComparisonOp" type="binaryOperatorExpr"431  <xsd:element name="orderComparisonOp" type="binaryOperatorExpr"
431               abstract="true" substitutionGroup="operatorExpr"/>432               abstract="true" substitutionGroup="operatorExpr"/>
432433
433  <xsd:element name="nodeBeforeOp" type="binaryOperatorExpr"434  <xsd:element name="nodeBeforeOp" type="binaryOperatorExpr"
434               substitutionGroup="orderComparisonOp"/>435               substitutionGroup="orderComparisonOp"/>
435436
436  <xsd:element name="nodeAfterOp" type="binaryOperatorExpr"437  <xsd:element name="nodeAfterOp" type="binaryOperatorExpr"
437               substitutionGroup="orderComparisonOp"/>438               substitutionGroup="orderComparisonOp"/>
438439
439<!-- Logical operator expressions -->440<!-- Logical operator expressions -->
440  <xsd:element name="logicalOp" type="binaryOperatorExpr"441  <xsd:element name="logicalOp" type="binaryOperatorExpr"
441               abstract="true" substitutionGroup="operatorExpr"/>442               abstract="true" substitutionGroup="operatorExpr"/>
442443
443  <xsd:element name="andOp" type="binaryOperatorExpr"444  <xsd:element name="andOp" type="binaryOperatorExpr"
444               substitutionGroup="logicalOp"/>445               substitutionGroup="logicalOp"/>
445446
446  <xsd:element name="orOp" type="binaryOperatorExpr"447  <xsd:element name="orOp" type="binaryOperatorExpr"
447               substitutionGroup="logicalOp"/>448               substitutionGroup="logicalOp"/>
448449
449  <xsd:element name="setOp" type="binaryOperatorExpr"450  <xsd:element name="setOp" type="binaryOperatorExpr"
450               abstract="true" substitutionGroup="operatorExpr"/>451               abstract="true" substitutionGroup="operatorExpr"/>
451452
452  <xsd:element name="unionOp" type="binaryOperatorExpr"453  <xsd:element name="unionOp" type="binaryOperatorExpr"
453               substitutionGroup="setOp"/>454               substitutionGroup="setOp"/>
454455
455  <xsd:element name="intersectOp" type="binaryOperatorExpr"456  <xsd:element name="intersectOp" type="binaryOperatorExpr"
456               substitutionGroup="setOp"/>457               substitutionGroup="setOp"/>
457458
458  <xsd:element name="exceptOp" type="binaryOperatorExpr"459  <xsd:element name="exceptOp" type="binaryOperatorExpr"
459               substitutionGroup="setOp"/>460               substitutionGroup="setOp"/>
460461
461462
462<!-- Basic typenames                                                                    -->463<!-- Basic typenames                                                                    -->
463<!-- By changing the type attribute from QName to EQName, this is now atomicOrUnionType -->464<!-- By changing the type attribute from QName to EQName, this is now atomicOrUnionType -->
464<!--   However, for backwards compatibility w/XQueryX 1.0, the name had to stay the same-->465<!--   However, for backwards compatibility w/XQueryX 1.0, the name had to stay the same-->
465  <xsd:element name="atomicType" type="EQName" substitutionGroup="itemType"/>466  <xsd:element name="atomicType" type="EQName" substitutionGroup="itemType"/>
466467
467468
468<!-- Used in castable expression and cast expression                                    -->469<!-- Used in castable expression and cast expression                                    -->
469  <xsd:complexType name="singleType">470  <xsd:complexType name="singleType">
470    <xsd:sequence>471    <xsd:sequence>
471      <xsd:element ref="atomicType"/>472      <xsd:element ref="atomicType"/>
472      <xsd:element name="optional" type="emptyContent" minOccurs="0"/>473      <xsd:element name="optional" type="emptyContent" minOccurs="0"/>
473    </xsd:sequence>474    </xsd:sequence>
474  </xsd:complexType>475  </xsd:complexType>
475476
476  <xsd:element name="singleType" type="singleType"/>477  <xsd:element name="singleType" type="singleType"/>
477478
478479
479<!-- Item type schema types and elements                                                -->480<!-- Item type schema types and elements                                                -->
480  <xsd:element name="itemType" abstract="true"/>481  <xsd:element name="itemType" abstract="true"/>
481482
482  <xsd:complexType name="contextItemType">483  <xsd:complexType name="contextItemType">
483    <xsd:complexContent>484    <xsd:complexContent>
484      <xsd:extension base="emptyItemTypeContent">485      <xsd:extension base="emptyItemTypeContent">
485        <xsd:sequence>486        <xsd:sequence>
486          <xsd:element ref="itemType"/>487          <xsd:element ref="itemType"/>
487        </xsd:sequence>488        </xsd:sequence>
488      </xsd:extension>489      </xsd:extension>
489    </xsd:complexContent>490    </xsd:complexContent>
490  </xsd:complexType>491  </xsd:complexType>
491492
492  <xsd:element name="contextItemType" type="contextItemType" substitutionGroup="itemType"/>493  <xsd:element name="contextItemType" type="contextItemType" substitutionGroup="itemType"/>
493494
494495
495  <xsd:complexType name="emptyItemTypeContent"/>496  <xsd:complexType name="emptyItemTypeContent"/>
496497
497  <xsd:element name="anyItemType" type="emptyItemTypeContent"498  <xsd:element name="anyItemType" type="emptyItemTypeContent"
498               substitutionGroup="itemType"/>499               substitutionGroup="itemType"/>
499500
500501
501  <xsd:simpleType name="occurrenceIndicator">502  <xsd:simpleType name="occurrenceIndicator">
502    <xsd:restriction base="xsd:string">503    <xsd:restriction base="xsd:string">
503      <xsd:enumeration value="?"/>504      <xsd:enumeration value="?"/>
504      <xsd:enumeration value="*"/>505      <xsd:enumeration value="*"/>
505      <xsd:enumeration value="+"/>506      <xsd:enumeration value="+"/>
506    </xsd:restriction>507    </xsd:restriction>
507  </xsd:simpleType>508  </xsd:simpleType>
508509
509510
510<!-- Sequence type                                                                      -->511<!-- Sequence type                                                                      -->
511  <xsd:complexType name="sequenceType">512  <xsd:complexType name="sequenceType">
512    <xsd:choice>513    <xsd:choice>
513      <xsd:element name="voidSequenceType" type="emptyContent"/>514      <xsd:element name="voidSequenceType" type="emptyContent"/>
514      <xsd:sequence>515      <xsd:sequence>
515        <xsd:element ref="itemType"/>516        <xsd:element ref="itemType"/>
516        <xsd:element name="occurrenceIndicator" type="occurrenceIndicator"517        <xsd:element name="occurrenceIndicator" type="occurrenceIndicator"
517                     minOccurs="0"/>518                     minOccurs="0"/>
518      </xsd:sequence>519      </xsd:sequence>
519    </xsd:choice>520    </xsd:choice>
520  </xsd:complexType>521  </xsd:complexType>
521522
522  <xsd:element name="sequenceType" type="sequenceType"/>523  <xsd:element name="sequenceType" type="sequenceType"/>
523524
524  <xsd:element name="typeDeclaration" type="sequenceType"/>525  <xsd:element name="typeDeclaration" type="sequenceType"/>
525526
526527
527<!-- Union of sequence types                                                           -->528<!-- Union of sequence types                                                           -->
528  <xsd:complexType name="sequenceTypeUnion">529  <xsd:complexType name="sequenceTypeUnion">
529    <xsd:sequence minOccurs="1" maxOccurs="unbounded">530    <xsd:sequence minOccurs="1" maxOccurs="unbounded">
530      <xsd:element ref="sequenceType"/>531      <xsd:element ref="sequenceType"/>
531    </xsd:sequence>532    </xsd:sequence>
532  </xsd:complexType>533  </xsd:complexType>
533534
534  <xsd:element name="sequenceTypeUnion" type="sequenceTypeUnion"/>535  <xsd:element name="sequenceTypeUnion" type="sequenceTypeUnion"/>
535536
536537
537538
538<!-- Represents a "typed" variable (for clause, let clause etc)                         -->539<!-- Represents a "typed" variable (for clause, let clause etc)                         -->
539  <xsd:complexType name="typedVariableBinding">540  <xsd:complexType name="typedVariableBinding">
540    <xsd:sequence>541    <xsd:sequence>
541      <xsd:element name="varName" type="EQName"/>542      <xsd:element name="varName" type="EQName"/>
542      <xsd:element ref="typeDeclaration" minOccurs="0"/>543      <xsd:element ref="typeDeclaration" minOccurs="0"/>
543    </xsd:sequence>544    </xsd:sequence>
544  </xsd:complexType>545  </xsd:complexType>
545546
546  <xsd:element name="typedVariableBinding" type="typedVariableBinding"/>547  <xsd:element name="typedVariableBinding" type="typedVariableBinding"/>
547548
548549
549<!-- Represents an untyped variable for the "at" clause in a for clause                 -->550<!-- Represents an untyped variable for the "at" clause in a for clause                 -->
550  <xsd:element name="positionalVariableBinding" type="EQName"/>551  <xsd:element name="positionalVariableBinding" type="EQName"/>
551552
552  <xsd:element name="variableBinding" type="EQName"/>553  <xsd:element name="variableBinding" type="EQName"/>
553554
554555
555<!-- Represents all variable bindings in a for or let clause except typed and           -->556<!-- Represents all variable bindings in a for or let clause except typed and           -->
556<!--   positional variable bindings                                                     -->557<!--   positional variable bindings                                                     -->
557  <xsd:element name="forLetClauseItemExtensions" abstract="true"/>558  <xsd:element name="forLetClauseItemExtensions" abstract="true"/>
558559
559560
560<!-- Major syntax productions: FLWOR clause components                                  -->561<!-- Major syntax productions: FLWOR clause components                                  -->
561<!-- for clause                                                                         -->562<!-- for clause                                                                         -->
562  <xsd:complexType name="forClauseItem">563  <xsd:complexType name="forClauseItem">
563    <xsd:sequence>564    <xsd:sequence>
564      <xsd:element ref="typedVariableBinding"/>565      <xsd:element ref="typedVariableBinding"/>
565      <xsd:element name="allowingEmpty" type="emptyContent"566      <xsd:element name="allowingEmpty" type="emptyContent"
566                   minOccurs="0"/>567                   minOccurs="0"/>
567      <xsd:element ref="positionalVariableBinding" minOccurs="0" maxOccurs="1"/>568      <xsd:element ref="positionalVariableBinding" minOccurs="0" maxOccurs="1"/>
568      <xsd:element ref="forLetClauseItemExtensions" minOccurs="0"569      <xsd:element ref="forLetClauseItemExtensions" minOccurs="0"
569                   maxOccurs="unbounded"/>570                   maxOccurs="unbounded"/>
570      <xsd:element name="forExpr" type="exprWrapper"/>571      <xsd:element name="forExpr" type="exprWrapper"/>
571    </xsd:sequence>572    </xsd:sequence>
572  </xsd:complexType>573  </xsd:complexType>
573574
574  <xsd:element name="forClauseItem" type="forClauseItem"/>575  <xsd:element name="forClauseItem" type="forClauseItem"/>
575576
576577
577  <xsd:complexType name="forClause">578  <xsd:complexType name="forClause">
578    <xsd:sequence>579    <xsd:sequence>
579      <xsd:element ref="forClauseItem" minOccurs="1" maxOccurs="unbounded"/>580      <xsd:element ref="forClauseItem" minOccurs="1" maxOccurs="unbounded"/>
580    </xsd:sequence>581    </xsd:sequence>
581  </xsd:complexType>582  </xsd:complexType>
582583
583  <xsd:element name="forClause" type="forClause"/>584  <xsd:element name="forClause" type="forClause"/>
584585
585586
586<!-- let clause                                                                         -->587<!-- let clause                                                                         -->
587  <xsd:complexType name="letClauseItem">588  <xsd:complexType name="letClauseItem">
588    <xsd:sequence>589    <xsd:sequence>
589      <xsd:choice>590      <xsd:choice>
590        <xsd:sequence>591        <xsd:sequence>
591          <xsd:element ref="typedVariableBinding"/>592          <xsd:element ref="typedVariableBinding"/>
592          <xsd:element ref="forLetClauseItemExtensions"593          <xsd:element ref="forLetClauseItemExtensions"
593                       minOccurs="0" maxOccurs="unbounded"/>594                       minOccurs="0" maxOccurs="unbounded"/>
594        </xsd:sequence>595        </xsd:sequence>
595        <xsd:element ref="forLetClauseItemExtensions"596        <xsd:element ref="forLetClauseItemExtensions"
596                     minOccurs="0" maxOccurs="unbounded"/>597                     minOccurs="0" maxOccurs="unbounded"/>
597      </xsd:choice>598      </xsd:choice>
598      <xsd:element name="letExpr" type="exprWrapper"/>599      <xsd:element name="letExpr" type="exprWrapper"/>
599    </xsd:sequence>600    </xsd:sequence>
600  </xsd:complexType>601  </xsd:complexType>
601602
602  <xsd:element name="letClauseItem" type="letClauseItem"/>603  <xsd:element name="letClauseItem" type="letClauseItem"/>
603604
604605
605  <xsd:complexType name="letClause">606  <xsd:complexType name="letClause">
606    <xsd:sequence>607    <xsd:sequence>
607      <xsd:element ref="letClauseItem" maxOccurs="unbounded"/>608      <xsd:element ref="letClauseItem" maxOccurs="unbounded"/>
608    </xsd:sequence>609    </xsd:sequence>
609  </xsd:complexType>610  </xsd:complexType>
610611
611  <xsd:element name="letClause" type="letClause"/>612  <xsd:element name="letClause" type="letClause"/>
612613
613614
614<!-- This is the windowClause (part of FLWOR expression)                                -->615<!-- This is the windowClause (part of FLWOR expression)                                -->
615<!-- It corresponds to the following XQuery grammar                                     -->616<!-- It corresponds to the following XQuery grammar                                     -->
616<!--    WindowClause ::= "for" (TumblingWindowClause | SlidingWindowClause)               -->617<!--    WindowClause ::= "for" (TumblingWindowClause | SlidingWindowClause)               -->
617  <xsd:complexType name="windowClause">618  <xsd:complexType name="windowClause">
618    <xsd:choice>619    <xsd:choice>
619      <xsd:element ref="tumblingWindowClause"/>620      <xsd:element ref="tumblingWindowClause"/>
620      <xsd:element ref="slidingWindowClause"/>621      <xsd:element ref="slidingWindowClause"/>
621    </xsd:choice>622    </xsd:choice>
622  </xsd:complexType>623  </xsd:complexType>
623624
624  <xsd:element name="windowClause" type="windowClause"/>625  <xsd:element name="windowClause" type="windowClause"/>
625626
626627
627<!-- This is the tumblingWindowClause                                                   -->628<!-- This is the tumblingWindowClause                                                   -->
628<!-- It corresponds to the following XQuery grammar                                     -->629<!-- It corresponds to the following XQuery grammar                                     -->
629<!-- TumblingWindowClause ::= "tumbling" "window" "$" VarName TypeDeclaration?          -->630<!-- TumblingWindowClause ::= "tumbling" "window" "$" VarName TypeDeclaration?          -->
630<!--                           "in" ExprSingle WindowStartCondition WindowEndCondition? -->631<!--                           "in" ExprSingle WindowStartCondition WindowEndCondition? -->
631  <xsd:complexType name="tumblingWindowClause">632  <xsd:complexType name="tumblingWindowClause">
632    <xsd:sequence>633    <xsd:sequence>
633      <xsd:element ref="typedVariableBinding"/>634      <xsd:element ref="typedVariableBinding"/>
634      <xsd:element name="bindingSequence" type="exprWrapper"/>635      <xsd:element name="bindingSequence" type="exprWrapper"/>
635      <xsd:element ref="windowStartCondition"/>636      <xsd:element ref="windowStartCondition"/>
636      <xsd:element ref="windowEndCondition" minOccurs="0"/>637      <xsd:element ref="windowEndCondition" minOccurs="0"/>
637    </xsd:sequence>638    </xsd:sequence>
638  </xsd:complexType>639  </xsd:complexType>
639640
640  <xsd:element name="tumblingWindowClause" type="tumblingWindowClause"/>641  <xsd:element name="tumblingWindowClause" type="tumblingWindowClause"/>
641642
642643
643<!-- This is the slidingWindowClause                                                    -->644<!-- This is the slidingWindowClause                                                    -->
644<!-- It corresponds to the following XQuery grammar                                     -->645<!-- It corresponds to the following XQuery grammar                                     -->
645<!-- SlidingWindowClause ::= "sliding" "window" "$" VarName TypeDeclaration?            -->646<!-- SlidingWindowClause ::= "sliding" "window" "$" VarName TypeDeclaration?            -->
646<!--                         "in" ExprSingle WindowStartCondition WindowEndCondition    -->647<!--                         "in" ExprSingle WindowStartCondition WindowEndCondition    -->
647  <xsd:complexType name="slidingWindowClause">648  <xsd:complexType name="slidingWindowClause">
648    <xsd:sequence>649    <xsd:sequence>
649      <xsd:element ref="typedVariableBinding"/>650      <xsd:element ref="typedVariableBinding"/>
650      <xsd:element name="bindingSequence" type="exprWrapper"/>651      <xsd:element name="bindingSequence" type="exprWrapper"/>
651      <xsd:element ref="windowStartCondition"/>652      <xsd:element ref="windowStartCondition"/>
652      <xsd:element ref="windowEndCondition"/>653      <xsd:element ref="windowEndCondition"/>
653    </xsd:sequence>654    </xsd:sequence>
654  </xsd:complexType>655  </xsd:complexType>
655656
656  <xsd:element name="slidingWindowClause" type="slidingWindowClause"/>657  <xsd:element name="slidingWindowClause" type="slidingWindowClause"/>
657658
658659
659<!-- windowStartCondition                                                               -->660<!-- windowStartCondition                                                               -->
660<!-- Corresponds to the following XQuery grammar                                        -->661<!-- Corresponds to the following XQuery grammar                                        -->
661<!-- WindowStartCondition ::= "start" WindowVars "when" ExprSingle                      -->662<!-- WindowStartCondition ::= "start" WindowVars "when" ExprSingle                      -->
662  <xsd:complexType name="windowStartCondition">663  <xsd:complexType name="windowStartCondition">
663    <xsd:sequence>664    <xsd:sequence>
664      <xsd:element ref="windowVars" minOccurs="0"/>665      <xsd:element ref="windowVars" minOccurs="0"/>
665      <xsd:element name="winStartExpr" type="exprWrapper"/>666      <xsd:element name="winStartExpr" type="exprWrapper"/>
666    </xsd:sequence>667    </xsd:sequence>
667  </xsd:complexType>668  </xsd:complexType>
668669
669  <xsd:element name="windowStartCondition" type="windowStartCondition"/>670  <xsd:element name="windowStartCondition" type="windowStartCondition"/>
670671
671672
672<!-- windowEndCondition                                                                 -->673<!-- windowEndCondition                                                                 -->
673<!-- Corresponds to the following XQuery grammar                                        -->674<!-- Corresponds to the following XQuery grammar                                        -->
674<!-- WindowEndCondition        ::=      "only"? "end" WindowVars "when" ExprSingle        -->675<!-- WindowEndCondition        ::=      "only"? "end" WindowVars "when" ExprSingle        -->
675  <xsd:complexType name="windowEndCondition">676  <xsd:complexType name="windowEndCondition">
676    <xsd:sequence>677    <xsd:sequence>
677      <xsd:element ref="windowVars" minOccurs="0"/>678      <xsd:element ref="windowVars" minOccurs="0"/>
678      <xsd:element name="winEndExpr" type="exprWrapper"/>679      <xsd:element name="winEndExpr" type="exprWrapper"/>
679    </xsd:sequence>680    </xsd:sequence>
680    <xsd:attribute name="onlyEnd" type="xsd:boolean" default="false"/>681    <xsd:attribute name="onlyEnd" type="xsd:boolean" default="false"/>
681  </xsd:complexType>682  </xsd:complexType>
682683
683  <xsd:element name="windowEndCondition" type="windowEndCondition"/>684  <xsd:element name="windowEndCondition" type="windowEndCondition"/>
684685
685686
686<!-- windowVars                                                                         -->687<!-- windowVars                                                                         -->
687<!-- Corresponds to the following XQuery grammar                                        -->688<!-- Corresponds to the following XQuery grammar                                        -->
688<!-- WindowVars ::= ("$" \)? PositionalVar? ("previous" "$" PreviousItem)?    -->689<!-- WindowVars ::= ("$" \)? PositionalVar? ("previous" "$" PreviousItem)?    -->
689<!--                ("next" "$" NextItem)?                                              -->690<!--                ("next" "$" NextItem)?                                              -->
690  <xsd:complexType name="windowVars">691  <xsd:complexType name="windowVars">
691    <xsd:sequence>692    <xsd:sequence>
692      <xsd:element name="currentItem" type="EQName" minOccurs="0"/>693      <xsd:element name="currentItem" type="EQName" minOccurs="0"/>
693      <xsd:element ref="positionalVariableBinding" minOccurs="0"/>694      <xsd:element ref="positionalVariableBinding" minOccurs="0"/>
694      <xsd:element name="previousItem" type="EQName" minOccurs="0"/>695      <xsd:element name="previousItem" type="EQName" minOccurs="0"/>
695      <xsd:element name="nextItem" type="EQName" minOccurs="0"/>696      <xsd:element name="nextItem" type="EQName" minOccurs="0"/>
696    </xsd:sequence>697    </xsd:sequence>
697  </xsd:complexType>698  </xsd:complexType>
698699
699  <xsd:element name="windowVars" type="windowVars"/>700  <xsd:element name="windowVars" type="windowVars"/>
700701
701702
702<!-- countClause (part of FLWOR expression)                                             -->703<!-- countClause (part of FLWOR expression)                                             -->
703  <xsd:complexType name="countClause">704  <xsd:complexType name="countClause">
704    <xsd:sequence>705    <xsd:sequence>
705      <xsd:element ref="varRef"/>706      <xsd:element ref="varRef"/>
706    </xsd:sequence>707    </xsd:sequence>
707  </xsd:complexType>708  </xsd:complexType>
708709
709  <xsd:element name="countClause" type="countClause"/>710  <xsd:element name="countClause" type="countClause"/>
710711
711712
712<!-- whereClause (part of FLWOR expression)                                             -->713<!-- whereClause (part of FLWOR expression)                                             -->
713  <xsd:element name="whereClause" type="exprWrapper"/>714  <xsd:element name="whereClause" type="exprWrapper"/>
714715
715716
716<!-- groupByClause (part of FLWOR expression)                                           -->717<!-- groupByClause (part of FLWOR expression)                                           -->
717<!-- Corresponds to the following XQuery syntax                                         -->718<!-- Corresponds to the following XQuery syntax                                         -->
718<!-- GroupByClause ::= "group" "by" GroupingSpecList                                    -->719<!-- GroupByClause ::= "group" "by" GroupingSpecList                                    -->
719<!-- GroupingSpecList ::= GroupingSpec ("," GroupingSpec)*                              -->720<!-- GroupingSpecList ::= GroupingSpec ("," GroupingSpec)*                              -->
720  <xsd:complexType name="groupByClause">721  <xsd:complexType name="groupByClause">
721    <xsd:sequence maxOccurs="unbounded">722    <xsd:sequence maxOccurs="unbounded">
722      <xsd:element ref="groupingSpec"/>723      <xsd:element ref="groupingSpec"/>
723    </xsd:sequence>724    </xsd:sequence>
724  </xsd:complexType>725  </xsd:complexType>
725726
726  <xsd:element name="groupByClause" type="groupByClause"/>727  <xsd:element name="groupByClause" type="groupByClause"/>
727728
728729
729<!-- Corresponds to the following XQuery syntax                                         -->730<!-- Corresponds to the following XQuery syntax                                         -->
730<!-- GroupingSpec ::=                                                                   -->731<!-- GroupingSpec ::=                                                                   -->
731<!--     "$" VarName ( typeDeclaration? ":=" exprSingle )? ("collation" URILiteral)?    -->732<!--     "$" VarName ( typeDeclaration? ":=" exprSingle )? ("collation" URILiteral)?    -->
732  <xsd:complexType name="groupingSpec">733  <xsd:complexType name="groupingSpec">
733    <xsd:sequence>734    <xsd:sequence>
734      <xsd:element name="varName" type="EQName"/>735      <xsd:element name="varName" type="EQName"/>
735      <xsd:element name="groupVarInitialize" minOccurs="0">736      <xsd:element name="groupVarInitialize" minOccurs="0">
736        <xsd:complexType>737        <xsd:complexType>
737          <xsd:sequence>738          <xsd:sequence>
738            <xsd:element ref="typeDeclaration" minOccurs="0"/>739            <xsd:element ref="typeDeclaration" minOccurs="0"/>
739            <xsd:element name="varValue" type="exprWrapper"/>740            <xsd:element name="varValue" type="exprWrapper"/>
740          </xsd:sequence>741          </xsd:sequence>
741        </xsd:complexType>742        </xsd:complexType>
742      </xsd:element>743      </xsd:element>
743      <xsd:element name="collation" type="xsd:string" minOccurs="0"/>744      <xsd:element name="collation" type="xsd:string" minOccurs="0"/>
744    </xsd:sequence>745    </xsd:sequence>
745  </xsd:complexType>746  </xsd:complexType>
746747
747  <xsd:element name="groupingSpec" type="groupingSpec"/>748  <xsd:element name="groupingSpec" type="groupingSpec"/>
748749
749750
750<!-- order by clause                                                                    -->751<!-- order by clause                                                                    -->
751  <xsd:simpleType name="emptyOrderingMode">752  <xsd:simpleType name="emptyOrderingMode">
752    <xsd:restriction base="xsd:string">753    <xsd:restriction base="xsd:string">
753      <xsd:enumeration value="empty greatest"/>754      <xsd:enumeration value="empty greatest"/>
754      <xsd:enumeration value="empty least"/>755      <xsd:enumeration value="empty least"/>
755    </xsd:restriction>756    </xsd:restriction>
756  </xsd:simpleType>757  </xsd:simpleType>
757758
758  <xsd:simpleType name="orderingKind">759  <xsd:simpleType name="orderingKind">
759    <xsd:restriction base="xsd:string">760    <xsd:restriction base="xsd:string">
760      <xsd:enumeration value="ascending"/>761      <xsd:enumeration value="ascending"/>
761      <xsd:enumeration value="descending"/>762      <xsd:enumeration value="descending"/>
762    </xsd:restriction>763    </xsd:restriction>
763  </xsd:simpleType>764  </xsd:simpleType>
764765
765766
766  <xsd:complexType name="orderModifier">767  <xsd:complexType name="orderModifier">
767    <xsd:sequence>768    <xsd:sequence>
768      <xsd:element name="orderingKind" type="orderingKind" minOccurs="0"/>769      <xsd:element name="orderingKind" type="orderingKind" minOccurs="0"/>
769      <xsd:element name="emptyOrderingMode" type="emptyOrderingMode" minOccurs="0"/>770      <xsd:element name="emptyOrderingMode" type="emptyOrderingMode" minOccurs="0"/>
770      <xsd:element name="collation" type="xsd:string" minOccurs="0"/>771      <xsd:element name="collation" type="xsd:string" minOccurs="0"/>
771    </xsd:sequence>772    </xsd:sequence>
772  </xsd:complexType>773  </xsd:complexType>
773774
774  <xsd:element name="orderModifier" type="orderModifier"/>775  <xsd:element name="orderModifier" type="orderModifier"/>
775776
776777
777  <xsd:complexType name="orderBySpec">778  <xsd:complexType name="orderBySpec">
778    <xsd:sequence>779    <xsd:sequence>
779      <xsd:element name="orderByExpr" type="exprWrapper"/>780      <xsd:element name="orderByExpr" type="exprWrapper"/>
780      <xsd:element ref="orderModifier" minOccurs="0"/>781      <xsd:element ref="orderModifier" minOccurs="0"/>
781    </xsd:sequence>782    </xsd:sequence>
782  </xsd:complexType>783  </xsd:complexType>
783784
784  <xsd:element name="orderBySpec" type="orderBySpec"/>785  <xsd:element name="orderBySpec" type="orderBySpec"/>
785786
786787
787  <xsd:complexType name="orderByClause">788  <xsd:complexType name="orderByClause">
788    <xsd:sequence>789    <xsd:sequence>
789      <xsd:element name="stable" type="emptyContent" minOccurs="0"/>790      <xsd:element name="stable" type="emptyContent" minOccurs="0"/>
790      <xsd:element ref="orderBySpec" maxOccurs="unbounded"/>791      <xsd:element ref="orderBySpec" maxOccurs="unbounded"/>
791    </xsd:sequence>792    </xsd:sequence>
792  </xsd:complexType>793  </xsd:complexType>
793794
794  <xsd:element name="orderByClause" type="orderByClause"/>795  <xsd:element name="orderByClause" type="orderByClause"/>
795796
796797
797<!-- return clause                                                                      -->798<!-- return clause                                                                      -->
798  <xsd:element name="returnClause" type="exprWrapper"/>799  <xsd:element name="returnClause" type="exprWrapper"/>
799800
800801
801<!-- This is the XQuery 1.1 flwor expression                                            -->802<!-- This is the XQuery 1.1 flwor expression                                            -->
802<!-- Corresponds to the following XQuery syntax:                                        -->803<!-- Corresponds to the following XQuery syntax:                                        -->
803<!-- 1.1 FLWORExpr ::= (ForClause | LetClause | WindowClause)                           -->804<!-- 1.1 FLWORExpr ::= (ForClause | LetClause | WindowClause)                           -->
804<!--                   (ForClause | LetClause | WindowClause | CountClause |            -->805<!--                   (ForClause | LetClause | WindowClause | CountClause |            -->
805<!--                    WhereClause | GroupByClause | OrderByClause)*                   -->806<!--                    WhereClause | GroupByClause | OrderByClause)*                   -->
806<!--                   ReturnClause                                                     -->807<!--                   ReturnClause                                                     -->
807  <xsd:complexType name="flworExpr">808  <xsd:complexType name="flworExpr">
808    <xsd:complexContent>809    <xsd:complexContent>
809      <xsd:extension base="expr">810      <xsd:extension base="expr">
810        <xsd:sequence>811        <xsd:sequence>
811          <xsd:choice>812          <xsd:choice>
812            <xsd:element ref="forClause"/>813            <xsd:element ref="forClause"/>
813            <xsd:element ref="letClause"/>814            <xsd:element ref="letClause"/>
814            <xsd:element ref="windowClause"/>815            <xsd:element ref="windowClause"/>
815          </xsd:choice>816          </xsd:choice>
816          <xsd:sequence>817          <xsd:sequence>
817            <xsd:choice minOccurs="0" maxOccurs="unbounded">818            <xsd:choice minOccurs="0" maxOccurs="unbounded">
818              <xsd:element ref="forClause"/>819              <xsd:element ref="forClause"/>
819              <xsd:element ref="letClause"/>820              <xsd:element ref="letClause"/>
820              <xsd:element ref="windowClause"/>821              <xsd:element ref="windowClause"/>
821              <xsd:element ref="countClause"/>822              <xsd:element ref="countClause"/>
822              <xsd:element ref="whereClause"/>823              <xsd:element ref="whereClause"/>
823              <xsd:element ref="groupByClause"/>824              <xsd:element ref="groupByClause"/>
824              <xsd:element ref="orderByClause"/>825              <xsd:element ref="orderByClause"/>
825            </xsd:choice>826            </xsd:choice>
826          <xsd:element ref="returnClause"/>827          <xsd:element ref="returnClause"/>
827        </xsd:sequence>828        </xsd:sequence>
828        </xsd:sequence>829        </xsd:sequence>
829      </xsd:extension>830      </xsd:extension>
830    </xsd:complexContent>831    </xsd:complexContent>
831  </xsd:complexType>832  </xsd:complexType>
832833
833  <xsd:element name="flworExpr" type="flworExpr" substitutionGroup="expr"/>834  <xsd:element name="flworExpr" type="flworExpr" substitutionGroup="expr"/>
834835
835836
836<!-- conditional expressions                                                            -->837<!-- conditional expressions                                                            -->
837  <xsd:complexType name="ifThenElseExpr">838  <xsd:complexType name="ifThenElseExpr">
838    <xsd:complexContent>839    <xsd:complexContent>
839      <xsd:extension base="expr">840      <xsd:extension base="expr">
840        <xsd:sequence>841        <xsd:sequence>
841          <xsd:element name="ifClause" type="exprWrapper"/>842          <xsd:element name="ifClause" type="exprWrapper"/>
842          <xsd:element name="thenClause" type="exprWrapper"/>843          <xsd:element name="thenClause" type="exprWrapper"/>
843          <xsd:element name="elseClause" type="exprWrapper"/>844          <xsd:element name="elseClause" type="exprWrapper"/>
844        </xsd:sequence>845        </xsd:sequence>
845      </xsd:extension>846      </xsd:extension>
846    </xsd:complexContent>847    </xsd:complexContent>
847  </xsd:complexType>848  </xsd:complexType>
848849
849  <xsd:element name="ifThenElseExpr" type="ifThenElseExpr" 850  <xsd:element name="ifThenElseExpr" type="ifThenElseExpr" 
850               substitutionGroup="expr"/>851               substitutionGroup="expr"/>
851852
852853
853<!-- The following clauses describe quantified expressions                              -->854<!-- The following clauses describe quantified expressions                              -->
854  <xsd:simpleType name="quantifier">855  <xsd:simpleType name="quantifier">
855    <xsd:restriction base="xsd:NMTOKEN">856    <xsd:restriction base="xsd:NMTOKEN">
856      <xsd:enumeration value="some"/>857      <xsd:enumeration value="some"/>
857      <xsd:enumeration value="every"/>858      <xsd:enumeration value="every"/>
858    </xsd:restriction>859    </xsd:restriction>
859  </xsd:simpleType>860  </xsd:simpleType>
860861
861862
862  <xsd:complexType name="quantifiedExprInClause">863  <xsd:complexType name="quantifiedExprInClause">
863    <xsd:sequence>864    <xsd:sequence>
864      <xsd:element ref="typedVariableBinding"/>865      <xsd:element ref="typedVariableBinding"/>
865      <xsd:element name="sourceExpr" type="exprWrapper"/>866      <xsd:element name="sourceExpr" type="exprWrapper"/>
866    </xsd:sequence>867    </xsd:sequence>
867  </xsd:complexType>868  </xsd:complexType>
868869
869  <xsd:element name="quantifiedExprInClause" type="quantifiedExprInClause"/>870  <xsd:element name="quantifiedExprInClause" type="quantifiedExprInClause"/>
870871
871872
872  <xsd:complexType name="quantifiedExpr">873  <xsd:complexType name="quantifiedExpr">
873    <xsd:complexContent>874    <xsd:complexContent>
874      <xsd:extension base="expr">875      <xsd:extension base="expr">
875        <xsd:sequence>876        <xsd:sequence>
876          <xsd:element name="quantifier" type="quantifier"/>877          <xsd:element name="quantifier" type="quantifier"/>
877          <xsd:element ref="quantifiedExprInClause" maxOccurs="unbounded"/>878          <xsd:element ref="quantifiedExprInClause" maxOccurs="unbounded"/>
878          <xsd:element name="predicateExpr" type="exprWrapper"/>879          <xsd:element name="predicateExpr" type="exprWrapper"/>
879        </xsd:sequence>880        </xsd:sequence>
880      </xsd:extension>881      </xsd:extension>
881    </xsd:complexContent>882    </xsd:complexContent>
882  </xsd:complexType>883  </xsd:complexType>
883884
884  <xsd:element name="quantifiedExpr" type="quantifiedExpr"885  <xsd:element name="quantifiedExpr" type="quantifiedExpr"
885               substitutionGroup="expr"/>886               substitutionGroup="expr"/>
886887
887888
888<!-- handle the switch expression                                                       -->889<!-- handle the switch expression                                                       -->
889<!-- Note: no substitutionGroup as we cannot use this anywhere except within switch     -->890<!-- Note: no substitutionGroup as we cannot use this anywhere except within switch     -->
890  <xsd:complexType name="switchExprCaseClause">891  <xsd:complexType name="switchExprCaseClause">
891    <xsd:complexContent>892    <xsd:complexContent>
892      <xsd:extension base="expr">893      <xsd:extension base="expr">
893        <xsd:sequence>894        <xsd:sequence>
894          <xsd:element name="switchCaseExpr" type="exprWrapper" maxOccurs="unbounded"/>895          <xsd:element name="switchCaseExpr" type="exprWrapper" maxOccurs="unbounded"/>
895          <xsd:element name="resultExpr" type="exprWrapper"/>896          <xsd:element name="resultExpr" type="exprWrapper"/>
896        </xsd:sequence>897        </xsd:sequence>
897      </xsd:extension>898      </xsd:extension>
898    </xsd:complexContent>899    </xsd:complexContent>
899  </xsd:complexType>900  </xsd:complexType>
900901
901  <xsd:element name="switchExprCaseClause"902  <xsd:element name="switchExprCaseClause"
902               type="switchExprCaseClause"/>903               type="switchExprCaseClause"/>
903904
904905
905<!-- Note: no substitutionGroup as we cannot use this anywhere except within switch     -->906<!-- Note: no substitutionGroup as we cannot use this anywhere except within switch     -->
906  <xsd:complexType name="switchExprDefaultClause">907  <xsd:complexType name="switchExprDefaultClause">
907    <xsd:complexContent>908    <xsd:complexContent>
908      <xsd:extension base="expr">909      <xsd:extension base="expr">
909        <xsd:sequence>910        <xsd:sequence>
910          <xsd:element name="resultExpr" type="exprWrapper"/>911          <xsd:element name="resultExpr" type="exprWrapper"/>
911        </xsd:sequence>912        </xsd:sequence>
912      </xsd:extension>913      </xsd:extension>
913    </xsd:complexContent>914    </xsd:complexContent>
914  </xsd:complexType>915  </xsd:complexType>
915916
916  <xsd:element name="switchExprDefaultClause"917  <xsd:element name="switchExprDefaultClause"
917               type="switchExprDefaultClause"/>918               type="switchExprDefaultClause"/>
918919
919920
920  <xsd:complexType name="switchExpr">921  <xsd:complexType name="switchExpr">
921    <xsd:complexContent>922    <xsd:complexContent>
922      <xsd:extension base="expr">923      <xsd:extension base="expr">
923        <xsd:sequence>924        <xsd:sequence>
924          <xsd:element name="argExpr" type="exprWrapper"/>925          <xsd:element name="argExpr" type="exprWrapper"/>
925          <xsd:element ref="switchExprCaseClause" maxOccurs="unbounded"/>926          <xsd:element ref="switchExprCaseClause" maxOccurs="unbounded"/>
926          <xsd:element ref="switchExprDefaultClause"/>927          <xsd:element ref="switchExprDefaultClause"/>
927        </xsd:sequence>928        </xsd:sequence>
928      </xsd:extension>929      </xsd:extension>
929    </xsd:complexContent>930    </xsd:complexContent>
930  </xsd:complexType>931  </xsd:complexType>
931932
932  <xsd:element name="switchExpr" type="switchExpr"933  <xsd:element name="switchExpr" type="switchExpr"
933               substitutionGroup="expr"/>934               substitutionGroup="expr"/>
934935
935936
936<!-- handle the typeswitch expression                                                   -->937<!-- handle the typeswitch expression                                                   -->
937<!-- Note: no substitutionGroup as we cannot use this anywhere except within typeswitch -->938<!-- Note: no substitutionGroup as we cannot use this anywhere except within typeswitch -->
938  <xsd:complexType name="typeswitchExprCaseClause">939  <xsd:complexType name="typeswitchExprCaseClause">
939    <xsd:complexContent>940    <xsd:complexContent>
940      <xsd:extension base="expr">941      <xsd:extension base="expr">
941        <xsd:sequence>942        <xsd:sequence>
942          <xsd:element ref="variableBinding" minOccurs="0"/>943          <xsd:element ref="variableBinding" minOccurs="0"/>
943          <xsd:choice>944          <xsd:choice>
944            <xsd:element ref="sequenceType"/>945            <xsd:element ref="sequenceType"/>
945            <xsd:element ref="sequenceTypeUnion"/>946            <xsd:element ref="sequenceTypeUnion"/>
946          </xsd:choice>947          </xsd:choice>
947          <xsd:element name="resultExpr" type="exprWrapper"/>948          <xsd:element name="resultExpr" type="exprWrapper"/>
948        </xsd:sequence>949        </xsd:sequence>
949      </xsd:extension>950      </xsd:extension>
950    </xsd:complexContent>951    </xsd:complexContent>
951  </xsd:complexType>952  </xsd:complexType>
952953
953  <xsd:element name="typeswitchExprCaseClause"954  <xsd:element name="typeswitchExprCaseClause"
954               type="typeswitchExprCaseClause"/>955               type="typeswitchExprCaseClause"/>
955956
956957
957<!-- Note: no substitutionGroup as we cannot use this anywhere except within typeswitch -->958<!-- Note: no substitutionGroup as we cannot use this anywhere except within typeswitch -->
958  <xsd:complexType name="typeswitchExprDefaultClause">959  <xsd:complexType name="typeswitchExprDefaultClause">
959    <xsd:complexContent>960    <xsd:complexContent>
960      <xsd:extension base="expr">961      <xsd:extension base="expr">
961        <xsd:sequence>962        <xsd:sequence>
962          <xsd:element ref="variableBinding" minOccurs="0"/>963          <xsd:element ref="variableBinding" minOccurs="0"/>
963          <xsd:element name="resultExpr" type="exprWrapper"/>964          <xsd:element name="resultExpr" type="exprWrapper"/>
964        </xsd:sequence>965        </xsd:sequence>
965      </xsd:extension>966      </xsd:extension>
966    </xsd:complexContent>967    </xsd:complexContent>
967  </xsd:complexType>968  </xsd:complexType>
968969
969  <xsd:element name="typeswitchExprDefaultClause"970  <xsd:element name="typeswitchExprDefaultClause"
970               type="typeswitchExprDefaultClause"/>971               type="typeswitchExprDefaultClause"/>
971972
972973
973  <xsd:complexType name="typeswitchExpr">974  <xsd:complexType name="typeswitchExpr">
974    <xsd:complexContent>975    <xsd:complexContent>
975      <xsd:extension base="expr">976      <xsd:extension base="expr">
976        <xsd:sequence>977        <xsd:sequence>
977          <xsd:element name="argExpr" type="exprWrapper"/>978          <xsd:element name="argExpr" type="exprWrapper"/>
978          <xsd:element ref="typeswitchExprCaseClause" maxOccurs="unbounded"/>979          <xsd:element ref="typeswitchExprCaseClause" maxOccurs="unbounded"/>
979          <xsd:element ref="typeswitchExprDefaultClause"/>980          <xsd:element ref="typeswitchExprDefaultClause"/>
980        </xsd:sequence>981        </xsd:sequence>
981      </xsd:extension>982      </xsd:extension>
982    </xsd:complexContent>983    </xsd:complexContent>
983  </xsd:complexType>984  </xsd:complexType>
984985
985  <xsd:element name="typeswitchExpr" type="typeswitchExpr"986  <xsd:element name="typeswitchExpr" type="typeswitchExpr"
986               substitutionGroup="expr"/>987               substitutionGroup="expr"/>
987988
988989
989<!-- TryCatchExpression                                                                 -->990<!-- TryCatchExpression                                                                 -->
990<!-- Corresponds to the following XQuery syntax                                         -->991<!-- Corresponds to the following XQuery syntax                                         -->
991<!-- TryCatchExpression ::= TryClause CatchClause+                                      -->992<!-- TryCatchExpression ::= TryClause CatchClause+                                      -->
992<!-- TryClause ::= "{" TryTargetExpr "}"                                                -->993<!-- TryClause ::= "{" TryTargetExpr "}"                                                -->
993<!-- TryTargetExpr ::= Expr                                                             -->994<!-- TryTargetExpr ::= Expr                                                             -->
994  <xsd:complexType name="tryCatchExpr">995  <xsd:complexType name="tryCatchExpr">
995    <xsd:complexContent>996    <xsd:complexContent>
996      <xsd:extension base="expr">997      <xsd:extension base="expr">
997        <xsd:sequence>998        <xsd:sequence>
998          <xsd:element name="tryClause" type="exprWrapper"/>999          <xsd:element name="tryClause" type="exprWrapper" minOccurs="0"/>
999          <xsd:element ref="catchClause" maxOccurs="unbounded"/>1000          <xsd:element ref="catchClause" maxOccurs="unbounded"/>
1000        </xsd:sequence>1001        </xsd:sequence>
1001      </xsd:extension>1002      </xsd:extension>
1002    </xsd:complexContent>1003    </xsd:complexContent>
1003  </xsd:complexType>1004  </xsd:complexType>
10041005
1005  <xsd:element name="tryCatchExpr" type="tryCatchExpr"1006  <xsd:element name="tryCatchExpr" type="tryCatchExpr"
1006               substitutionGroup="expr"/>1007               substitutionGroup="expr"/>
10071008
10081009
1009<!-- CatchClause (part of the TryCatchExpression)                                       -->1010<!-- CatchClause (part of the TryCatchExpression)                                       -->
1010<!-- Corresponds to the following XQuery syntax                                         -->1011<!-- Corresponds to the following XQuery syntax                                         -->
1011<!-- CatchClause ::= "catch" CatchErrorList "{" Expr "}"                                -->1012<!-- CatchClause ::= "catch" CatchErrorList "{" Expr "}"                                -->
1012  <xsd:complexType name="catchClause">1013  <xsd:complexType name="catchClause">
1013    <xsd:sequence>1014    <xsd:sequence>
1014      <xsd:element ref="catchErrorList"/>1015      <xsd:element ref="catchErrorList"/>
1015      <xsd:element name="catchExpr" type="exprWrapper"/>1016      <xsd:element name="catchExpr" type="exprWrapper" minOccurs="0"/>
1016    </xsd:sequence>1017    </xsd:sequence>
1017  </xsd:complexType>1018  </xsd:complexType>
10181019
1019  <xsd:element name="catchClause" type="catchClause"/>1020  <xsd:element name="catchClause" type="catchClause"/>
10201021
10211022
1022<!-- CatchErrorList (part of the TryCatchExpression)                                    -->1023<!-- CatchErrorList (part of the TryCatchExpression)                                    -->
1023<!-- Corresponds to the following XQuery syntax                                         -->1024<!-- Corresponds to the following XQuery syntax                                         -->
1024<!-- CatchErrorList ::= NameTest ( "|" NameTest )*                                      -->1025<!-- CatchErrorList ::= NameTest ( "|" NameTest )*                                      -->
1025<!-- (remembering that NameTest is either QName or Wildcard)                            -->1026<!-- (remembering that NameTest is either QName or Wildcard)                            -->
1026  <xsd:complexType name="catchErrorList">1027  <xsd:complexType name="catchErrorList">
1027    <xsd:sequence maxOccurs="unbounded">1028    <xsd:sequence maxOccurs="unbounded">
1028      <xsd:choice>1029      <xsd:choice>
1029        <xsd:element ref="nameTest"/>1030        <xsd:element ref="nameTest"/>
1030        <xsd:element ref="Wildcard"/>1031        <xsd:element ref="Wildcard"/>
1031      </xsd:choice>1032      </xsd:choice>
1032    </xsd:sequence>1033    </xsd:sequence>
1033  </xsd:complexType>1034  </xsd:complexType>
10341035
1035  <xsd:element name="catchErrorList" type="catchErrorList"/>1036  <xsd:element name="catchErrorList" type="catchErrorList"/>
10361037
10371038
1038<!-- instance-of expressions                                                            -->1039<!-- instance-of expressions                                                            -->
1039  <xsd:complexType name="instanceOfExpr">1040  <xsd:complexType name="instanceOfExpr">
1040    <xsd:complexContent>1041    <xsd:complexContent>
1041      <xsd:extension base="expr">1042      <xsd:extension base="expr">
1042        <xsd:sequence>1043        <xsd:sequence>
1043          <xsd:element name="argExpr" type="exprWrapper"/>1044          <xsd:element name="argExpr" type="exprWrapper"/>
1044          <xsd:element ref="sequenceType"/>1045          <xsd:element ref="sequenceType"/>
1045        </xsd:sequence>1046        </xsd:sequence>
1046      </xsd:extension>1047      </xsd:extension>
1047    </xsd:complexContent>1048    </xsd:complexContent>
1048  </xsd:complexType>1049  </xsd:complexType>
10491050
1050  <xsd:element name="instanceOfExpr" type="instanceOfExpr"1051  <xsd:element name="instanceOfExpr" type="instanceOfExpr"
1051               substitutionGroup="expr"/>1052               substitutionGroup="expr"/>
10521053
10531054
1054<!-- treat-as expressions                                                               -->1055<!-- treat-as expressions                                                               -->
1055  <xsd:complexType name="treatExpr">1056  <xsd:complexType name="treatExpr">
1056    <xsd:complexContent>1057    <xsd:complexContent>
1057      <xsd:extension base="expr">1058      <xsd:extension base="expr">
1058        <xsd:sequence>1059        <xsd:sequence>
1059          <xsd:element name="argExpr" type="exprWrapper"/>1060          <xsd:element name="argExpr" type="exprWrapper"/>
1060          <xsd:element ref="sequenceType"/>1061          <xsd:element ref="sequenceType"/>
1061        </xsd:sequence>1062        </xsd:sequence>
1062      </xsd:extension>1063      </xsd:extension>
1063    </xsd:complexContent>1064    </xsd:complexContent>
1064  </xsd:complexType>1065  </xsd:complexType>
10651066
1066  <xsd:element name="treatExpr" type="treatExpr"1067  <xsd:element name="treatExpr" type="treatExpr"
1067               substitutionGroup="expr"/>1068               substitutionGroup="expr"/>
10681069
10691070
1070<!-- castable and cast expressions                                                      -->1071<!-- castable and cast expressions                                                      -->
1071  <xsd:complexType name="castableExpr">1072  <xsd:complexType name="castableExpr">
1072    <xsd:complexContent>1073    <xsd:complexContent>
1073      <xsd:extension base="expr">1074      <xsd:extension base="expr">
1074        <xsd:sequence>1075        <xsd:sequence>
1075          <xsd:element name="argExpr" type="exprWrapper"/>1076          <xsd:element name="argExpr" type="exprWrapper"/>
1076          <xsd:element ref="singleType"/>1077          <xsd:element ref="singleType"/>
1077        </xsd:sequence>1078        </xsd:sequence>
1078      </xsd:extension>1079      </xsd:extension>
1079    </xsd:complexContent>1080    </xsd:complexContent>
1080  </xsd:complexType>1081  </xsd:complexType>
10811082
1082  <xsd:element name="castableExpr" type="castableExpr"1083  <xsd:element name="castableExpr" type="castableExpr"
1083               substitutionGroup="expr"/>1084               substitutionGroup="expr"/>
10841085
10851086
1086  <xsd:complexType name="castExpr">1087  <xsd:complexType name="castExpr">
1087    <xsd:complexContent>1088    <xsd:complexContent>
1088      <xsd:extension base="expr">1089      <xsd:extension base="expr">
1089        <xsd:sequence>1090        <xsd:sequence>
1090          <xsd:element name="argExpr" type="exprWrapper"/>1091          <xsd:element name="argExpr" type="exprWrapper"/>
1091          <xsd:element ref="singleType"/>1092          <xsd:element ref="singleType"/>
1092        </xsd:sequence>1093        </xsd:sequence>
1093      </xsd:extension>1094      </xsd:extension>
1094    </xsd:complexContent>1095    </xsd:complexContent>
1095  </xsd:complexType>1096  </xsd:complexType>
10961097
1097  <xsd:element name="castExpr" type="castExpr"1098  <xsd:element name="castExpr" type="castExpr"
1098               substitutionGroup="expr"/>1099               substitutionGroup="expr"/>
10991100
11001101
1101<!-- 2015-02-11/JM Added arrowExpr (replacing arrowPostfix)                             -->1102<!-- 2015-02-11/JM Added arrowExpr (replacing arrowPostfix)                             -->
1102<!-- Corresponds to XQuery syntax:                                                      -->1103<!-- Corresponds to XQuery syntax:                                                      -->
1103<!--   ArrowExpr              ::= UnaryExpr "=>" ArrowFunctionSpecifier ArgumentList    -->1104<!--   ArrowExpr              ::= UnaryExpr "=>" ArrowFunctionSpecifier ArgumentList    -->
1104<!--   ArrowFunctionSpecifier ::= EQName | VarRef | ParenthesizedExpression             -->1105<!--   ArrowFunctionSpecifier ::= EQName | VarRef | ParenthesizedExpression             -->
1105  <xsd:complexType name="arrowExpr">1106  <xsd:complexType name="arrowExpr">
1106    <xsd:complexContent>1107    <xsd:complexContent>
1107      <xsd:extension base="expr">1108      <xsd:extension base="expr">
1108        <xsd:sequence>1109        <xsd:sequence>
1109          <xsd:element name="argExpr" type="exprWrapper"/>1110          <xsd:element name="argExpr" type="exprWrapper"/>
1110          <xsd:sequence minOccurs="1" maxOccurs="unbounded">1111          <xsd:sequence minOccurs="1" maxOccurs="unbounded">
1111            <xsd:choice>1112            <xsd:choice>
1112              <xsd:element name="EQName" type="EQName"/>1113              <xsd:element name="EQName" type="EQName"/>
1113              <xsd:element name="variableRef" type="varRef"/>1114              <xsd:element name="variableRef" type="varRef"/>
1114              <xsd:element ref="expr"/>1115              <xsd:element ref="expr"/>
1115            </xsd:choice>1116            </xsd:choice>
1116            <xsd:element name="arguments" type="exprOrPlaceholderList" minOccurs="0"/>1117            <xsd:element name="arguments" type="exprOrPlaceholderList" minOccurs="0"/>
1117          </xsd:sequence>1118          </xsd:sequence>
1118        </xsd:sequence>1119        </xsd:sequence>
1119      </xsd:extension>1120      </xsd:extension>
1120    </xsd:complexContent>1121    </xsd:complexContent>
1121  </xsd:complexType>1122  </xsd:complexType>
11221123
1123  <xsd:element name="arrowExpr" type="arrowExpr"1124  <xsd:element name="arrowExpr" type="arrowExpr"
1124               substitutionGroup="expr"/>1125               substitutionGroup="expr"/>
11251126
11261127
1127<!-- Validate expressions                                                               -->1128<!-- Validate expressions                                                               -->
1128  <xsd:simpleType name="validationMode">1129  <xsd:simpleType name="validationMode">
1129    <xsd:restriction base="xsd:NMTOKEN">1130    <xsd:restriction base="xsd:NMTOKEN">
1130      <xsd:enumeration value="lax"/>1131      <xsd:enumeration value="lax"/>
1131      <xsd:enumeration value="strict"/>1132      <xsd:enumeration value="strict"/>
1132    </xsd:restriction>1133    </xsd:restriction>
1133  </xsd:simpleType>1134  </xsd:simpleType>
11341135
1135  <xsd:complexType name="validateExpr">1136  <xsd:complexType name="validateExpr">
1136    <xsd:complexContent>1137    <xsd:complexContent>
1137      <xsd:extension base="expr">1138      <xsd:extension base="expr">
1138        <xsd:sequence>1139        <xsd:sequence>
1139          <xsd:choice>1140          <xsd:choice>
1140            <xsd:element name="validationMode" type="validationMode" minOccurs="0"/>1141            <xsd:element name="validationMode" type="validationMode" minOccurs="0"/>
1141            <xsd:element name="typeName" type="EQName" minOccurs="0"/>1142            <xsd:element name="typeName" type="EQName" minOccurs="0"/>
1142          </xsd:choice>1143          </xsd:choice>
1143          <xsd:element name="argExpr" type="exprWrapper"/>1144          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
1144        </xsd:sequence>1145        </xsd:sequence>
1145      </xsd:extension>1146      </xsd:extension>
1146    </xsd:complexContent>1147    </xsd:complexContent>
1147  </xsd:complexType>1148  </xsd:complexType>
11481149
1149  <xsd:element name="validateExpr" type="validateExpr"1150  <xsd:element name="validateExpr" type="validateExpr"
1150               substitutionGroup="expr"/>1151               substitutionGroup="expr"/>
11511152
11521153
1153<!-- Direct constructors. Only elementConstructor for now                               -->1154<!-- Direct constructors. Only elementConstructor for now                               -->
1154<!-- Note the absence of constructors corresponding to                                  -->1155<!-- Note the absence of constructors corresponding to                                  -->
1155<!-- the directCommentConstructor and the directPIConstructor                           -->1156<!-- the directCommentConstructor and the directPIConstructor                           -->
1156<!-- productions in the XQuery grammar. This is because they are                        -->1157<!-- productions in the XQuery grammar. This is because they are                        -->
1157<!-- trivially identical to the computed variants                                       -->1158<!-- trivially identical to the computed variants                                       -->
11581159
1159<!-- attributeConstructor is no longer a subclass of expr                               -->1160<!-- attributeConstructor is no longer a subclass of expr                               -->
1160  <xsd:complexType name="attributeConstructor">1161  <xsd:complexType name="attributeConstructor">
1161    <xsd:sequence>1162    <xsd:sequence>
1162      <xsd:element name="attributeName" type="QName"/>1163      <xsd:element name="attributeName" type="QName"/>
1163      <xsd:choice>1164      <xsd:choice>
1164        <xsd:element name="attributeValueExpr" type="exprList"/>1165        <xsd:element name="attributeValueExpr" type="exprList"/>
1165        <xsd:element name="attributeValue" type="xsd:string"/>1166        <xsd:element name="attributeValue" type="xsd:string"/>
1166      </xsd:choice>1167      </xsd:choice>
1167    </xsd:sequence>1168    </xsd:sequence>
1168  </xsd:complexType>1169  </xsd:complexType>
11691170
1170  <xsd:complexType name="namespaceDeclaration">1171  <xsd:complexType name="namespaceDeclaration">
1171    <xsd:sequence>1172    <xsd:sequence>
1172      <xsd:element name="prefix" type="xsd:NCName" minOccurs="0"/>1173      <xsd:element name="prefix" type="xsd:NCName" minOccurs="0"/>
1173      <xsd:element name="uri" type="xsd:string"/>1174      <xsd:element name="uri" type="xsd:string"/>
1174    </xsd:sequence>1175    </xsd:sequence>
1175  </xsd:complexType>1176  </xsd:complexType>
11761177
11771178
1178<!-- element constructors                                                               -->1179<!-- element constructors                                                               -->
1179  <xsd:complexType name="attributeList">1180  <xsd:complexType name="attributeList">
1180    <xsd:sequence>1181    <xsd:sequence>
1181      <xsd:choice maxOccurs="unbounded">1182      <xsd:choice maxOccurs="unbounded">
1182        <xsd:element name="attributeConstructor" type="attributeConstructor"/>1183        <xsd:element name="attributeConstructor" type="attributeConstructor"/>
1183        <xsd:element name="namespaceDeclaration" type="namespaceDeclaration"/>1184        <xsd:element name="namespaceDeclaration" type="namespaceDeclaration"/>
1184      </xsd:choice>1185      </xsd:choice>
1185    </xsd:sequence>1186    </xsd:sequence>
1186  </xsd:complexType>1187  </xsd:complexType>
11871188
1188  <xsd:element name="attributeList" type="attributeList"/>1189  <xsd:element name="attributeList" type="attributeList"/>
11891190
11901191
1191  <xsd:element name="elementContent" type="exprList"/>1192  <xsd:element name="elementContent" type="exprList"/>
11921193
11931194
1194  <xsd:complexType name="elementConstructor">1195  <xsd:complexType name="elementConstructor">
1195    <xsd:complexContent>1196    <xsd:complexContent>
1196      <xsd:extension base="expr">1197      <xsd:extension base="expr">
1197        <xsd:sequence>1198        <xsd:sequence>
1198          <xsd:element name="tagName" type="QName"/>1199          <xsd:element name="tagName" type="QName"/>
1199          <xsd:element ref="attributeList" minOccurs="0"/>1200          <xsd:element ref="attributeList" minOccurs="0"/>
1200          <xsd:element ref="elementContent" minOccurs="0"/>1201          <xsd:element ref="elementContent" minOccurs="0"/>
1201        </xsd:sequence>1202        </xsd:sequence>
1202      </xsd:extension>1203      </xsd:extension>
1203    </xsd:complexContent>1204    </xsd:complexContent>
1204  </xsd:complexType>1205  </xsd:complexType>
12051206
1206  <xsd:element name="elementConstructor" type="elementConstructor"1207  <xsd:element name="elementConstructor" type="elementConstructor"
1207               substitutionGroup="expr"/>1208               substitutionGroup="expr"/>
12081209
12091210
1210<!-- computed constructors                                                              -->1211<!-- computed constructors                                                              -->
1211<!-- computed element constructor                                                       -->1212<!-- computed element constructor                                                       -->
1212  <xsd:complexType name="computedElementConstructor">1213  <xsd:complexType name="computedElementConstructor">
1213    <xsd:complexContent>1214    <xsd:complexContent>
1214      <xsd:extension base="expr">1215      <xsd:extension base="expr">
1215        <xsd:sequence>1216        <xsd:sequence>
1216          <xsd:choice>1217          <xsd:choice>
1217            <xsd:element name="tagName" type="EQName"/>1218            <xsd:element name="tagName" type="EQName"/>
1218            <xsd:element name="tagNameExpr" type="exprWrapper"/>1219            <xsd:element name="tagNameExpr" type="exprWrapper"/>
1219          </xsd:choice>1220          </xsd:choice>
1220          <xsd:element name="contentExpr" type="exprWrapper" minOccurs="0"/>1221          <xsd:element name="contentExpr" type="exprWrapper" minOccurs="0"/>
1221        </xsd:sequence>1222        </xsd:sequence>
1222      </xsd:extension>1223      </xsd:extension>
1223    </xsd:complexContent>1224    </xsd:complexContent>
1224  </xsd:complexType>1225  </xsd:complexType>
12251226
1226  <xsd:element name="computedElementConstructor" type="computedElementConstructor"1227  <xsd:element name="computedElementConstructor" type="computedElementConstructor"
1227               substitutionGroup="expr"/>1228               substitutionGroup="expr"/>
12281229
12291230
1230<!-- computed attribute constructor                                                     -->1231<!-- computed attribute constructor                                                     -->
1231  <xsd:complexType name="computedAttributeConstructor">1232  <xsd:complexType name="computedAttributeConstructor">
1232    <xsd:complexContent>1233    <xsd:complexContent>
1233      <xsd:extension base="expr">1234      <xsd:extension base="expr">
1234        <xsd:sequence>1235        <xsd:sequence>
1235          <xsd:choice>1236          <xsd:choice>
1236            <xsd:element name="tagName" type="EQName"/>1237            <xsd:element name="tagName" type="EQName"/>
1237            <xsd:element name="tagNameExpr" type="exprWrapper"/>1238            <xsd:element name="tagNameExpr" type="exprWrapper"/>
1238          </xsd:choice>1239          </xsd:choice>
1239          <xsd:element name="valueExpr" type="exprWrapper" minOccurs="0"/>1240          <xsd:element name="valueExpr" type="exprWrapper" minOccurs="0"/>
1240        </xsd:sequence>1241        </xsd:sequence>
1241      </xsd:extension>1242      </xsd:extension>
1242    </xsd:complexContent>1243    </xsd:complexContent>
1243  </xsd:complexType>1244  </xsd:complexType>
12441245
1245  <xsd:element name="computedAttributeConstructor" type="computedAttributeConstructor"1246  <xsd:element name="computedAttributeConstructor" type="computedAttributeConstructor"
1246               substitutionGroup="expr"/>1247               substitutionGroup="expr"/>
12471248
12481249
1249<!-- computed document constructor                                                      -->1250<!-- computed document constructor                                                      -->
1250  <xsd:complexType name="computedDocumentConstructor">1251  <xsd:complexType name="computedDocumentConstructor">
1251    <xsd:complexContent>1252    <xsd:complexContent>
1252      <xsd:extension base="expr">1253      <xsd:extension base="expr">
1253        <xsd:sequence>1254        <xsd:sequence>
1254          <xsd:element name="argExpr" type="exprWrapper"/>1255          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
1255        </xsd:sequence>1256        </xsd:sequence>
1256      </xsd:extension>1257      </xsd:extension>
1257    </xsd:complexContent>1258    </xsd:complexContent>
1258  </xsd:complexType>1259  </xsd:complexType>
12591260
1260  <xsd:element name="computedDocumentConstructor" type="computedDocumentConstructor"1261  <xsd:element name="computedDocumentConstructor" type="computedDocumentConstructor"
1261               substitutionGroup="expr"/>1262               substitutionGroup="expr"/>
12621263
12631264
1264<!-- computed text constructor                                                          -->1265<!-- computed text constructor                                                          -->
1265  <xsd:complexType name="computedTextConstructor">1266  <xsd:complexType name="computedTextConstructor">
1266    <xsd:complexContent>1267    <xsd:complexContent>
1267      <xsd:extension base="expr">1268      <xsd:extension base="expr">
1268        <xsd:sequence>1269        <xsd:sequence>
1269          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>1270          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
1270        </xsd:sequence>1271        </xsd:sequence>
1271      </xsd:extension>1272      </xsd:extension>
1272    </xsd:complexContent>1273    </xsd:complexContent>
1273  </xsd:complexType>1274  </xsd:complexType>
12741275
1275  <xsd:element name="computedTextConstructor" type="computedTextConstructor"1276  <xsd:element name="computedTextConstructor" type="computedTextConstructor"
1276               substitutionGroup="expr"/>1277               substitutionGroup="expr"/>
12771278
12781279
1279<!-- computed comment constructor                                                       -->1280<!-- computed comment constructor                                                       -->
1280  <xsd:complexType name="computedCommentConstructor">1281  <xsd:complexType name="computedCommentConstructor">
1281    <xsd:complexContent>1282    <xsd:complexContent>
1282      <xsd:extension base="expr">1283      <xsd:extension base="expr">
1283        <xsd:sequence>1284        <xsd:sequence>
1284          <xsd:element name="argExpr" type="exprWrapper"/>1285          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
1285        </xsd:sequence>1286        </xsd:sequence>
1286      </xsd:extension>1287      </xsd:extension>
1287    </xsd:complexContent>1288    </xsd:complexContent>
1288  </xsd:complexType>1289  </xsd:complexType>
12891290
1290  <xsd:element name="computedCommentConstructor" type="computedCommentConstructor"1291  <xsd:element name="computedCommentConstructor" type="computedCommentConstructor"
1291               substitutionGroup="expr"/>1292               substitutionGroup="expr"/>
12921293
12931294
1294<!-- computed namespace constructor                                                     -->1295<!-- computed namespace constructor                                                     -->
1295  <xsd:complexType name="computedNamespaceConstructor">1296  <xsd:complexType name="computedNamespaceConstructor">
1296    <xsd:complexContent>1297    <xsd:complexContent>
1297      <xsd:extension base="expr">1298      <xsd:extension base="expr">
1298        <xsd:sequence>1299        <xsd:sequence>
1299          <xsd:choice>1300          <xsd:choice>
1300            <xsd:element name="prefix" type="xsd:NCName"/>1301            <xsd:element name="prefix" type="xsd:NCName"/>
1301            <xsd:element name="prefixExpr" type="exprWrapper"/>1302            <xsd:element name="prefixExpr" type="exprWrapper"/>
1302          </xsd:choice>1303          </xsd:choice>
1303          <xsd:element name="URIExpr" type="exprWrapper" minOccurs="0"/>1304          <xsd:element name="URIExpr" type="exprWrapper" minOccurs="0"/>
1304        </xsd:sequence>1305        </xsd:sequence>
1305      </xsd:extension>1306      </xsd:extension>
1306    </xsd:complexContent>1307    </xsd:complexContent>
1307  </xsd:complexType>1308  </xsd:complexType>
13081309
1309  <xsd:element name="computedNamespaceConstructor" type="computedNamespaceConstructor"1310  <xsd:element name="computedNamespaceConstructor" type="computedNamespaceConstructor"
1310               substitutionGroup="expr"/>1311               substitutionGroup="expr"/>
13111312
13121313
1313<!-- computed processing instruction constructor                                        -->1314<!-- computed processing instruction constructor                                        -->
1314  <xsd:complexType name="computedPIConstructor">1315  <xsd:complexType name="computedPIConstructor">
1315    <xsd:complexContent>1316    <xsd:complexContent>
1316      <xsd:extension base="expr">1317      <xsd:extension base="expr">
1317        <xsd:sequence>1318        <xsd:sequence>
1318          <xsd:choice>1319          <xsd:choice>
1319            <xsd:element name="piTarget" type="xsd:NCName"/>1320            <xsd:element name="piTarget" type="xsd:NCName"/>
1320            <xsd:element name="piTargetExpr" type="exprWrapper"/>1321            <xsd:element name="piTargetExpr" type="exprWrapper"/>
1321          </xsd:choice>1322          </xsd:choice>
1322          <xsd:element name="piValueExpr" type="exprWrapper" minOccurs="0"/>1323          <xsd:element name="piValueExpr" type="exprWrapper" minOccurs="0"/>
1323        </xsd:sequence>1324        </xsd:sequence>
1324      </xsd:extension>1325      </xsd:extension>
1325    </xsd:complexContent>1326    </xsd:complexContent>
1326  </xsd:complexType>1327  </xsd:complexType>
13271328
1328  <xsd:element name="computedPIConstructor" type="computedPIConstructor"1329  <xsd:element name="computedPIConstructor" type="computedPIConstructor"
1329               substitutionGroup="expr"/>1330               substitutionGroup="expr"/>
13301331
13311332
1332<!-- ordered and unordered expressions                                                  -->1333<!-- ordered and unordered expressions                                                  -->
1333  <xsd:complexType name="unorderedExpr">1334  <xsd:complexType name="unorderedExpr">
1334    <xsd:complexContent>1335    <xsd:complexContent>
1335      <xsd:extension base="expr">1336      <xsd:extension base="expr">
1336        <xsd:sequence>1337        <xsd:sequence>
1337          <xsd:element name="argExpr" type="exprWrapper"/>1338          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
1338        </xsd:sequence>1339        </xsd:sequence>
1339      </xsd:extension>1340      </xsd:extension>
1340    </xsd:complexContent>1341    </xsd:complexContent>
1341  </xsd:complexType>1342  </xsd:complexType>
13421343
1343  <xsd:element name="unorderedExpr" type="unorderedExpr" substitutionGroup="expr"/>1344  <xsd:element name="unorderedExpr" type="unorderedExpr" substitutionGroup="expr"/>
13441345
13451346
1346  <xsd:complexType name="orderedExpr">1347  <xsd:complexType name="orderedExpr">
1347    <xsd:complexContent>1348    <xsd:complexContent>
1348      <xsd:extension base="expr">1349      <xsd:extension base="expr">
1349        <xsd:sequence>1350        <xsd:sequence>
1350          <xsd:element name="argExpr" type="exprWrapper"/>1351          <xsd:element name="argExpr" type="exprWrapper" minOccurs="0"/>
1351        </xsd:sequence>1352        </xsd:sequence>
1352      </xsd:extension>1353      </xsd:extension>
1353    </xsd:complexContent>1354    </xsd:complexContent>
1354  </xsd:complexType>1355  </xsd:complexType>
13551356
1356  <xsd:element name="orderedExpr" type="orderedExpr" substitutionGroup="expr"/>1357  <xsd:element name="orderedExpr" type="orderedExpr" substitutionGroup="expr"/>
13571358
13581359
1359<!-- function item expressions                                                          -->1360<!-- function item expressions                                                          -->
1360<!-- literal function item expression                                                   -->1361<!-- literal function item expression                                                   -->
1361  <xsd:complexType name="namedFunctionRef">1362  <xsd:complexType name="namedFunctionRef">
1362    <xsd:complexContent>1363    <xsd:complexContent>
1363      <xsd:extension base="expr">1364      <xsd:extension base="expr">
1364        <xsd:sequence>1365        <xsd:sequence>
1365          <xsd:element name="functionName" type="EQName"/>1366          <xsd:element name="functionName" type="EQName"/>
1366          <xsd:element name="integerConstantExpr" type="integerConstantExpr"/>1367          <xsd:element name="integerConstantExpr" type="integerConstantExpr"/>
1367        </xsd:sequence>1368        </xsd:sequence>
1368      </xsd:extension>1369      </xsd:extension>
1369    </xsd:complexContent>1370    </xsd:complexContent>
1370  </xsd:complexType>1371  </xsd:complexType>
13711372
1372  <xsd:element name="namedFunctionRef" type="namedFunctionRef" substitutionGroup="expr"/>1373  <xsd:element name="namedFunctionRef" type="namedFunctionRef" substitutionGroup="expr"/>
13731374
13741375
1375<!-- inline function item expression                                                    -->1376<!-- inline function item expression                                                    -->
1376  <xsd:complexType name="inlineFunctionExpr">1377  <xsd:complexType name="inlineFunctionExpr">
1377    <xsd:complexContent>1378    <xsd:complexContent>
1378      <xsd:extension base="expr">1379      <xsd:extension base="expr">
1379        <xsd:sequence>1380        <xsd:sequence>
1380          <xsd:element name="annotation" type="annotation"1381          <xsd:element name="annotation" type="annotation"
1381                       minOccurs="0" maxOccurs="unbounded"/>1382                       minOccurs="0" maxOccurs="unbounded"/>
1382          <xsd:element ref="paramList"/>1383          <xsd:element ref="paramList"/>
1383          <xsd:element ref="typeDeclaration" minOccurs="0"/>1384          <xsd:element ref="typeDeclaration" minOccurs="0"/>
1384          <xsd:element name="functionBody" type="exprWrapper"/>1385          <xsd:element name="functionBody" type="exprWrapper"/>
1385        </xsd:sequence>1386        </xsd:sequence>
1386      </xsd:extension>1387      </xsd:extension>
1387    </xsd:complexContent>1388    </xsd:complexContent>
1388  </xsd:complexType>1389  </xsd:complexType>
13891390
1390  <xsd:element name="inlineFunctionExpr" type="inlineFunctionExpr" substitutionGroup="expr"/>1391  <xsd:element name="inlineFunctionExpr" type="inlineFunctionExpr" substitutionGroup="expr"/>
13911392
13921393
1393<!-- dynamic function invocations                                                       -->1394<!-- dynamic function invocations                                                       -->
1394  <xsd:complexType name="dynamicFunctionInvocationExpr">1395  <xsd:complexType name="dynamicFunctionInvocationExpr">
1395    <xsd:complexContent>1396    <xsd:complexContent>
1396      <xsd:extension base="expr">1397      <xsd:extension base="expr">
1397        <xsd:sequence>1398        <xsd:sequence>
1398          <xsd:element name="functionItem">1399          <xsd:element name="functionItem">
1399            <xsd:complexType>1400            <xsd:complexType>
1400              <xsd:sequence>1401              <xsd:sequence>
1401                <xsd:group ref="filterExpr"/>1402                <xsd:group ref="filterExpr"/>
1402              </xsd:sequence>1403              </xsd:sequence>
1403            </xsd:complexType>1404            </xsd:complexType>
1404          </xsd:element>1405          </xsd:element>
1405          <xsd:element name="predicates" type="exprList" minOccurs="0"/>1406          <xsd:element name="predicates" type="exprList" minOccurs="0"/>
1406          <xsd:element name="arguments" type="exprOrPlaceholderList" minOccurs="0"/>1407          <xsd:element name="arguments" type="exprOrPlaceholderList" minOccurs="0"/>
1407        </xsd:sequence>1408        </xsd:sequence>
1408      </xsd:extension>1409      </xsd:extension>
1409    </xsd:complexContent>1410    </xsd:complexContent>
1410  </xsd:complexType>1411  </xsd:complexType>
14111412
1412  <xsd:element name="dynamicFunctionInvocationExpr" type="dynamicFunctionInvocationExpr" substitutionGroup="expr"/>1413  <xsd:element name="dynamicFunctionInvocationExpr" type="dynamicFunctionInvocationExpr" substitutionGroup="expr"/>
14131414
14141415
1415<!-- 2014-07-13/JM Added mapConstructor                                                 -->1416<!-- 2014-07-13/JM Added mapConstructor                                                 -->
1416<!-- Corresponds to XQuery syntax:                                                      -->1417<!-- Corresponds to XQuery syntax:                                                      -->
1417<!-- MapConstructor ::= "map" "{" (MapConstructorEntry ("," MapConstructorEntry)*)? "}" -->1418<!-- MapConstructor ::= "map" "{" (MapConstructorEntry ("," MapConstructorEntry)*)? "}" -->
1418<!-- MapConstructorEntry ::= MapKeyExpr ":" MapValueExpr                                -->1419<!-- MapConstructorEntry ::= MapKeyExpr ":" MapValueExpr                                -->
1419<!-- MapKeyExpr ::= ExprSingle                                                          -->1420<!-- MapKeyExpr ::= ExprSingle                                                          -->
1420<!-- MapValueExpr ::= ExprSingle                                                        -->1421<!-- MapValueExpr ::= ExprSingle                                                        -->
1421  <xsd:complexType name="mapConstructor">1422  <xsd:complexType name="mapConstructor">
1422    <xsd:complexContent>1423    <xsd:complexContent>
1423      <xsd:extension base="expr">1424      <xsd:extension base="expr">
1424        <xsd:sequence>1425        <xsd:sequence>
1425          <xsd:element ref="mapConstructorEntry" minOccurs="0" maxOccurs="unbounded"/>1426          <xsd:element ref="mapConstructorEntry" minOccurs="0" maxOccurs="unbounded"/>
1426        </xsd:sequence>1427        </xsd:sequence>
1427      </xsd:extension>1428      </xsd:extension>
1428    </xsd:complexContent>1429    </xsd:complexContent>
1429  </xsd:complexType>1430  </xsd:complexType>
14301431
1431  <xsd:element name="mapConstructor" type="mapConstructor" substitutionGroup="expr"/>1432  <xsd:element name="mapConstructor" type="mapConstructor" substitutionGroup="expr"/>
14321433
14331434
1434  <xsd:complexType name="mapConstructorEntry">1435  <xsd:complexType name="mapConstructorEntry">
1435    <xsd:sequence>1436    <xsd:sequence>
1436      <xsd:element name="mapKeyExpr" type="exprWrapper"/>1437      <xsd:element name="mapKeyExpr" type="exprWrapper"/>
1437      <xsd:element name="mapValueExpr" type="exprWrapper"/>1438      <xsd:element name="mapValueExpr" type="exprWrapper"/>
1438    </xsd:sequence>1439    </xsd:sequence>
1439  </xsd:complexType>1440  </xsd:complexType>
14401441
1441  <xsd:element name="mapConstructorEntry" type="mapConstructorEntry"/>1442  <xsd:element name="mapConstructorEntry" type="mapConstructorEntry"/>
14421443
14431444
1444<!-- 2014-07-13/JM Added arrayConstructor                                               -->1445<!-- 2014-07-13/JM Added arrayConstructor                                               -->
1445<!-- Corresponds to XQuery syntax:                                                      -->1446<!-- Corresponds to XQuery syntax:                                                      -->
1446<!-- ArrayConstructor ::= SquareArrayConstructor | CurlyArrayConstructor                -->1447<!-- ArrayConstructor ::= SquareArrayConstructor | CurlyArrayConstructor                -->
1447<!-- SquareArrayConstructor ::= "[" (ExprSingle ("," ExprSingle)*)? "]"                 -->1448<!-- SquareArrayConstructor ::= "[" (ExprSingle ("," ExprSingle)*)? "]"                 -->
1448<!-- CurlyArrayConstructor ::= "array" "{" Expr? "}"                                    -->1449<!-- CurlyArrayConstructor ::= "array" "{" Expr? "}"                                    -->
1449  <xsd:complexType name="arrayConstructor">1450  <xsd:complexType name="arrayConstructor">
1450    <xsd:complexContent>1451    <xsd:complexContent>
1451      <xsd:extension base="expr">1452      <xsd:extension base="expr">
1452        <xsd:choice>1453        <xsd:choice>
1453          <xsd:element ref="squareArray"/>1454          <xsd:element ref="squareArray"/>
1454          <xsd:element ref="curlyArray"/>1455          <xsd:element ref="curlyArray"/>
1455        </xsd:choice>1456        </xsd:choice>
1456      </xsd:extension>1457      </xsd:extension>
1457    </xsd:complexContent>1458    </xsd:complexContent>
1458  </xsd:complexType>1459  </xsd:complexType>
14591460
1460  <xsd:element name="arrayConstructor" type="arrayConstructor" substitutionGroup="expr"/>1461  <xsd:element name="arrayConstructor" type="arrayConstructor" substitutionGroup="expr"/>
14611462
14621463
1463  <xsd:complexType name="squareArray">1464  <xsd:complexType name="squareArray">
1464    <xsd:sequence minOccurs="0" maxOccurs="unbounded">1465    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
1465      <xsd:element name="arrayElem" type="exprWrapper"/>1466      <xsd:element name="arrayElem" type="exprWrapper"/>
1466    </xsd:sequence>1467    </xsd:sequence>
1467  </xsd:complexType>1468  </xsd:complexType>
14681469
1469  <xsd:element name="squareArray" type="squareArray"/>1470  <xsd:element name="squareArray" type="squareArray"/>
14701471
14711472
1472  <xsd:complexType name="curlyArray">1473  <xsd:complexType name="curlyArray">
1473    <xsd:sequence minOccurs="0" maxOccurs="1">1474    <xsd:sequence minOccurs="0" maxOccurs="1">
1474      <xsd:element name="arrayElem" type="exprWrapper"/>1475      <xsd:element name="arrayElem" type="exprWrapper"/>
1475    </xsd:sequence>1476    </xsd:sequence>
1476  </xsd:complexType>1477  </xsd:complexType>
14771478
1478  <xsd:element name="curlyArray" type="curlyArray"/>1479  <xsd:element name="curlyArray" type="curlyArray"/>
14791480
14801481
1482<!-- 2015-11-05/JS added stringConstructor                                              -->
1483  <xsd:complexType name="stringConstructor">
1484    <xsd:complexContent>
1485      <xsd:extension base="expr">
1486        <xsd:sequence>
1487          <xsd:choice minOccurs="0" maxOccurs="unbounded">
1488            <xsd:element name="stringConstructorChars" type="xsd:string"/>
1489            <xsd:element name="stringConstructorInterpolation" type="exprWrapper"/>
1490          </xsd:choice>
1491        </xsd:sequence>
1492      </xsd:extension>
1493    </xsd:complexContent>
1494  </xsd:complexType>
1495
1496  <xsd:element name="stringConstructor" type="stringConstructor" substitutionGroup="expr"/>
1497
14811498
1482<!-- wildcards                                                                          -->1499<!-- wildcards                                                                          -->
1483  <xsd:complexType name="simpleWildcard">1500  <xsd:complexType name="simpleWildcard">
1484    <xsd:choice>1501    <xsd:choice>
1485      <xsd:element name="QName" type="EQName"/>1502      <xsd:element name="QName" type="EQName"/>
1486      <xsd:element name="star" type="emptyContent"/>1503      <xsd:element name="star" type="emptyContent"/>
1487    </xsd:choice>1504    </xsd:choice>
1488  </xsd:complexType>1505  </xsd:complexType>
14891506
1490<!-- Corresponds to the following XQuery syntax:                                                    -->1507<!-- Corresponds to the following XQuery syntax:                                                    -->
1491<!--   [44] Wildcard ::= "*"                                                                        -->1508<!--   [44] Wildcard ::= "*"                                                                        -->
1492<!--                  | (NCName ":" "*")                                                            -->1509<!--                  | (NCName ":" "*")                                                            -->
1493<!--                  | ("*" ":" NCName)                                                            -->1510<!--                  | ("*" ":" NCName)                                                            -->
1494<!--                  | (URILiteral ":" "*")                                                        -->1511<!--                  | (URILiteral ":" "*")                                                        -->
14951512
1496  <xsd:complexType name="Wildcard">1513  <xsd:complexType name="Wildcard">
1497    <xsd:choice minOccurs="0">1514    <xsd:choice minOccurs="0">
1498      <xsd:sequence>1515      <xsd:sequence>
1499        <xsd:element name="star" type="emptyContent"/>1516        <xsd:element name="star" type="emptyContent"/>
1500        <xsd:element ref="NCName"/>1517        <xsd:element ref="NCName"/>
1501      </xsd:sequence>1518      </xsd:sequence>
1502      <xsd:sequence>1519      <xsd:sequence>
1503        <xsd:element ref="NCName"/>1520        <xsd:element ref="NCName"/>
1504        <xsd:element name="star" type="emptyContent"/>1521        <xsd:element name="star" type="emptyContent"/>
1505      </xsd:sequence>1522      </xsd:sequence>
1506      <xsd:sequence>1523      <xsd:sequence>
1507        <xsd:element name="uri" type="xsd:string"/>1524        <xsd:element name="uri" type="xsd:string"/>
1508        <xsd:element name="star" type="emptyContent"/>1525        <xsd:element name="star" type="emptyContent"/>
1509      </xsd:sequence>1526      </xsd:sequence>
1510    </xsd:choice>1527    </xsd:choice>
1511  </xsd:complexType>1528  </xsd:complexType>
15121529
1513  <xsd:element name="Wildcard" type="Wildcard"/>1530  <xsd:element name="Wildcard" type="Wildcard"/>
15141531
15151532
1516<!-- tests (name and/or type)                                                           -->1533<!-- tests (name and/or type)                                                           -->
1517  <xsd:element name="schemaAttributeTest" type="EQName"1534  <xsd:element name="schemaAttributeTest" type="EQName"
1518               substitutionGroup="kindTest"/>1535               substitutionGroup="kindTest"/>
15191536
15201537
1521  <xsd:complexType name="attributeTest">1538  <xsd:complexType name="attributeTest">
1522    <xsd:complexContent>1539    <xsd:complexContent>
1523      <xsd:extension base="emptyItemTypeContent">1540      <xsd:extension base="emptyItemTypeContent">
1524        <xsd:sequence minOccurs="0">1541        <xsd:sequence minOccurs="0">
1525          <xsd:element name="attributeName" type="simpleWildcard"/>1542          <xsd:element name="attributeName" type="simpleWildcard"/>
1526          <xsd:element name="typeName" type="EQName" minOccurs="0"/>1543          <xsd:element name="typeName" type="EQName" minOccurs="0"/>
1527        </xsd:sequence>1544        </xsd:sequence>
1528      </xsd:extension>1545      </xsd:extension>
1529    </xsd:complexContent>1546    </xsd:complexContent>
1530  </xsd:complexType>1547  </xsd:complexType>
15311548
1532  <xsd:element name="attributeTest" type="attributeTest"1549  <xsd:element name="attributeTest" type="attributeTest"
1533               substitutionGroup="kindTest"/>1550               substitutionGroup="kindTest"/>
15341551
15351552
1536  <xsd:element name="anyElementTest" abstract="true"1553  <xsd:element name="anyElementTest" abstract="true"
1537               substitutionGroup="kindTest"/>1554               substitutionGroup="kindTest"/>
15381555
15391556
1540  <xsd:element name="schemaElementTest" type="EQName"1557  <xsd:element name="schemaElementTest" type="EQName"
1541               substitutionGroup="anyElementTest"/>1558               substitutionGroup="anyElementTest"/>
15421559
15431560
1544  <xsd:complexType name="elementTest">1561  <xsd:complexType name="elementTest">
1545    <xsd:complexContent>1562    <xsd:complexContent>
1546      <xsd:extension base="emptyItemTypeContent">1563      <xsd:extension base="emptyItemTypeContent">
1547        <xsd:sequence minOccurs="0">1564        <xsd:sequence minOccurs="0">
1548          <xsd:element name="elementName" type="simpleWildcard"/>1565          <xsd:element name="elementName" type="simpleWildcard"/>
1549          <xsd:sequence minOccurs="0">1566          <xsd:sequence minOccurs="0">
1550            <xsd:element name="typeName" type="EQName"/>1567            <xsd:element name="typeName" type="EQName"/>
1551            <xsd:element name="nillable" type="emptyContent" minOccurs="0"/>1568            <xsd:element name="nillable" type="emptyContent" minOccurs="0"/>
1552          </xsd:sequence>1569          </xsd:sequence>
1553        </xsd:sequence>1570        </xsd:sequence>
1554      </xsd:extension>1571      </xsd:extension>
1555    </xsd:complexContent>1572    </xsd:complexContent>
1556  </xsd:complexType>1573  </xsd:complexType>
15571574
1558  <xsd:element name="elementTest" type="elementTest"1575  <xsd:element name="elementTest" type="elementTest"
1559               substitutionGroup="anyElementTest"/>1576               substitutionGroup="anyElementTest"/>
15601577
15611578
1562  <xsd:complexType name="documentTest">1579  <xsd:complexType name="documentTest">
1563    <xsd:complexContent>1580    <xsd:complexContent>
1564      <xsd:extension base="emptyItemTypeContent">1581      <xsd:extension base="emptyItemTypeContent">
1565        <xsd:sequence>1582        <xsd:sequence>
1566           <xsd:element ref="anyElementTest" minOccurs="0"/>1583           <xsd:element ref="anyElementTest" minOccurs="0"/>
1567        </xsd:sequence>1584        </xsd:sequence>
1568      </xsd:extension>1585      </xsd:extension>
1569    </xsd:complexContent>1586    </xsd:complexContent>
1570  </xsd:complexType>1587  </xsd:complexType>
15711588
1572  <xsd:element name="documentTest" type="documentTest"1589  <xsd:element name="documentTest" type="documentTest"
1573               substitutionGroup="kindTest"/>1590               substitutionGroup="kindTest"/>
15741591
15751592
1576  <xsd:complexType name="piTest">1593  <xsd:complexType name="piTest">
1577    <xsd:complexContent>1594    <xsd:complexContent>
1578      <xsd:extension base="emptyItemTypeContent">1595      <xsd:extension base="emptyItemTypeContent">
1579        <xsd:sequence>1596        <xsd:sequence>
1580          <xsd:element name="piTarget" type="xsd:NCName" minOccurs="0"/>1597          <xsd:element name="piTarget" type="xsd:NCName" minOccurs="0"/>
1581        </xsd:sequence>1598        </xsd:sequence>
1582      </xsd:extension>1599      </xsd:extension>
1583    </xsd:complexContent>1600    </xsd:complexContent>
1584  </xsd:complexType>1601  </xsd:complexType>
15851602
1586  <xsd:element name="piTest" type="piTest" substitutionGroup="kindTest"/>1603  <xsd:element name="piTest" type="piTest" substitutionGroup="kindTest"/>
15871604
15881605
1589  <xsd:element name="nameTest" type="EQName"/>1606  <xsd:element name="nameTest" type="EQName"/>
15901607
15911608
1592<!-- a kindTest is a kind of itemType -->1609<!-- a kindTest is a kind of itemType -->
1593  <xsd:element name="kindTest" substitutionGroup="itemType"/>1610  <xsd:element name="kindTest" substitutionGroup="itemType"/>
15941611
1595  <xsd:element name="textTest" type="emptyItemTypeContent"1612  <xsd:element name="textTest" type="emptyItemTypeContent"
1596               substitutionGroup="kindTest"/>1613               substitutionGroup="kindTest"/>
15971614
1598  <xsd:element name="commentTest" type="emptyItemTypeContent"1615  <xsd:element name="commentTest" type="emptyItemTypeContent"
1599               substitutionGroup="kindTest"/>1616               substitutionGroup="kindTest"/>
16001617
1601  <xsd:element name="namespaceTest" type="emptyItemTypeContent"1618  <xsd:element name="namespaceTest" type="emptyItemTypeContent"
1602               substitutionGroup="kindTest"/>1619               substitutionGroup="kindTest"/>
16031620
1604  <xsd:element name="anyKindTest" type="emptyItemTypeContent"1621  <xsd:element name="anyKindTest" type="emptyItemTypeContent"
1605               substitutionGroup="kindTest"/>1622               substitutionGroup="kindTest"/>
16061623
16071624
1608<!-- functionTest variations -->1625<!-- functionTest variations -->
1609  <xsd:complexType name="anyFunctionTest">1626  <xsd:complexType name="anyFunctionTest">
1610    <xsd:complexContent>1627    <xsd:complexContent>
1611      <xsd:extension base="emptyItemTypeContent">1628      <xsd:extension base="emptyItemTypeContent">
1612        <xsd:sequence>1629        <xsd:sequence>
1613          <xsd:element name="annotation" type="annotation"1630          <xsd:element name="annotation" type="annotation"
1614                       minOccurs="0" maxOccurs="unbounded"/>1631                       minOccurs="0" maxOccurs="unbounded"/>
1615        </xsd:sequence>1632        </xsd:sequence>
1616      </xsd:extension>1633      </xsd:extension>
1617    </xsd:complexContent>1634    </xsd:complexContent>
1618  </xsd:complexType>1635  </xsd:complexType>
16191636
1620<!-- a functionTest is a kind of itemType -->1637<!-- a functionTest is a kind of itemType -->
1621  <xsd:element name="anyFunctionTest" type="anyFunctionTest" substitutionGroup="itemType"/>1638  <xsd:element name="anyFunctionTest" type="anyFunctionTest" substitutionGroup="itemType"/>
16221639
1623  <xsd:complexType name="typedFunctionTest">1640  <xsd:complexType name="typedFunctionTest">
1624    <xsd:complexContent>1641    <xsd:complexContent>
1625      <xsd:extension base="emptyItemTypeContent">1642      <xsd:extension base="emptyItemTypeContent">
1626        <xsd:sequence>1643        <xsd:sequence>
1627          <xsd:element name="annotation" type="annotation"1644          <xsd:element name="annotation" type="annotation"
1628                       minOccurs="0" maxOccurs="unbounded"/>1645                       minOccurs="0" maxOccurs="unbounded"/>
1629          <xsd:element ref="paramTypeList" minOccurs="0"/>1646          <xsd:element ref="paramTypeList" minOccurs="0"/>
1630          <xsd:element ref="sequenceType"/>1647          <xsd:element ref="sequenceType"/>
1631        </xsd:sequence>1648        </xsd:sequence>
1632      </xsd:extension>1649      </xsd:extension>
1633    </xsd:complexContent>1650    </xsd:complexContent>
1634  </xsd:complexType>1651  </xsd:complexType>
16351652
1636  <xsd:element name="typedFunctionTest" type="typedFunctionTest" substitutionGroup="itemType"/>1653  <xsd:element name="typedFunctionTest" type="typedFunctionTest" substitutionGroup="itemType"/>
16371654
16381655
1639  <xsd:complexType name="paramTypeList">1656  <xsd:complexType name="paramTypeList">
1640    <xsd:sequence>1657    <xsd:sequence>
1641      <xsd:element ref="sequenceType" minOccurs="0" maxOccurs="unbounded"/>1658      <xsd:element ref="sequenceType" minOccurs="0" maxOccurs="unbounded"/>
1642    </xsd:sequence>1659    </xsd:sequence>
1643  </xsd:complexType>1660  </xsd:complexType>
16441661
1645  <xsd:element name="paramTypeList" type="paramTypeList"/>1662  <xsd:element name="paramTypeList" type="paramTypeList"/>
16461663
16471664
1648<!-- a parenthesizedItemType is a kind of itemType -->1665<!-- a parenthesizedItemType is a kind of itemType -->
1649  <xsd:complexType name="parenthesizedItemType">1666  <xsd:complexType name="parenthesizedItemType">
1650    <xsd:complexContent>1667    <xsd:complexContent>
1651      <xsd:extension base="emptyItemTypeContent">1668      <xsd:extension base="emptyItemTypeContent">
1652        <xsd:sequence>1669        <xsd:sequence>
1653          <xsd:element ref="itemType"/>1670          <xsd:element ref="itemType"/>
1654        </xsd:sequence>1671        </xsd:sequence>
1655      </xsd:extension>1672      </xsd:extension>
1656    </xsd:complexContent>1673    </xsd:complexContent>
1657  </xsd:complexType>1674  </xsd:complexType>
16581675
1659  <xsd:element name="parenthesizedItemType" type="parenthesizedItemType" substitutionGroup="itemType"/>1676  <xsd:element name="parenthesizedItemType" type="parenthesizedItemType" substitutionGroup="itemType"/>
16601677
16611678
1662<!-- 2014-07-13/JM Added anyMapTest and typedMapTest                                    -->1679<!-- 2014-07-13/JM Added anyMapTest and typedMapTest                                    -->
1663<!-- mapTest variations -->1680<!-- mapTest variations -->
1664<!-- a mapTest is a kind of itemType -->1681<!-- a mapTest is a kind of itemType -->
1665  <xsd:element name="anyMapTest" type="emptyItemTypeContent" substitutionGroup="itemType"/>1682  <xsd:element name="anyMapTest" type="emptyItemTypeContent" substitutionGroup="itemType"/>
16661683
1667  <xsd:complexType name="typedMapTest">1684  <xsd:complexType name="typedMapTest">
1668    <xsd:complexContent>1685    <xsd:complexContent>
1669      <xsd:extension base="emptyItemTypeContent">1686      <xsd:extension base="emptyItemTypeContent">
1670        <xsd:sequence>1687        <xsd:sequence>
1671          <xsd:element ref="atomicType"/>1688          <xsd:element ref="atomicType"/>
1672          <xsd:element ref="sequenceType"/>1689          <xsd:element ref="sequenceType"/>
1673        </xsd:sequence>1690        </xsd:sequence>
1674      </xsd:extension>1691      </xsd:extension>
1675    </xsd:complexContent>1692    </xsd:complexContent>
1676  </xsd:complexType>1693  </xsd:complexType>
16771694
1678  <xsd:element name="typedMapTest" type="typedMapTest" substitutionGroup="itemType"/>1695  <xsd:element name="typedMapTest" type="typedMapTest" substitutionGroup="itemType"/>
16791696
16801697
1681<!-- 2014-07-13/JM Added anyArrayTest and typedArrayTest                                -->1698<!-- 2014-07-13/JM Added anyArrayTest and typedArrayTest                                -->
1682<!-- arrayTest variations -->1699<!-- arrayTest variations -->
1683<!-- an arrayTest is a kind of itemType -->1700<!-- an arrayTest is a kind of itemType -->
1684  <xsd:element name="anyArrayTest" type="emptyItemTypeContent" substitutionGroup="itemType"/>1701  <xsd:element name="anyArrayTest" type="emptyItemTypeContent" substitutionGroup="itemType"/>
16851702
1686  <xsd:complexType name="typedArrayTest">1703  <xsd:complexType name="typedArrayTest">
1687    <xsd:complexContent>1704    <xsd:complexContent>
1688      <xsd:extension base="emptyItemTypeContent">1705      <xsd:extension base="emptyItemTypeContent">
1689        <xsd:sequence>1706        <xsd:sequence>
1690          <xsd:element ref="sequenceType"/>1707          <xsd:element ref="sequenceType"/>
1691        </xsd:sequence>1708        </xsd:sequence>
1692      </xsd:extension>1709      </xsd:extension>
1693    </xsd:complexContent>1710    </xsd:complexContent>
1694  </xsd:complexType>1711  </xsd:complexType>
16951712
1696  <xsd:element name="typedArrayTest" type="typedArrayTest" substitutionGroup="itemType"/>1713  <xsd:element name="typedArrayTest" type="typedArrayTest" substitutionGroup="itemType"/>
16971714
16981715
1699<!-- 2014-07-13/JM Added lookup (formerly mapLookup)                                    -->1716<!-- 2014-07-13/JM Added lookup (formerly mapLookup)                                    -->
1700<!-- Corresponds to XQuery syntax:                                                      -->1717<!-- Corresponds to XQuery syntax:                                                      -->
1701<!--   Lookup          ::=      "?" KeySpecifier                                          -->1718<!--   Lookup          ::=      "?" KeySpecifier                                          -->
1702<!--   UnaryLookup     ::=      "?" KeySpecifier                                          -->1719<!--   UnaryLookup     ::=      "?" KeySpecifier                                          -->
1703<!--   KeySpecifier    ::=      NCName | IntegerLiteral | ParenthesizedExpr | "*"         -->1720<!--   KeySpecifier    ::=      NCName | IntegerLiteral | ParenthesizedExpr | "*"         -->
1704  <xsd:complexType name="lookup">1721  <xsd:complexType name="lookup">
1705    <xsd:complexContent>1722    <xsd:complexContent>
1706      <xsd:extension base="expr">1723      <xsd:extension base="expr">
1707        <xsd:sequence>1724        <xsd:sequence>
1708          <xsd:choice>1725          <xsd:choice>
1709            <xsd:element ref="NCName"/>1726            <xsd:element ref="NCName"/>
1710            <xsd:element name="integerLiteral" type="integerConstantExpr"/>1727            <xsd:element name="integerLiteral" type="integerConstantExpr"/>
1711            <xsd:element ref="expr"/>1728            <xsd:element ref="expr"/>
1712            <xsd:element name="star" type="emptyContent"/>1729            <xsd:element name="star" type="emptyContent"/>
1713          </xsd:choice>1730          </xsd:choice>
1714        </xsd:sequence>1731        </xsd:sequence>
1715      </xsd:extension>1732      </xsd:extension>
1716    </xsd:complexContent>1733    </xsd:complexContent>
1717  </xsd:complexType>1734  </xsd:complexType>
17181735
1719  <xsd:element name="lookup" type="lookup"/>1736  <xsd:element name="lookup" type="lookup"/>
17201737
1721  <xsd:element name="unaryLookup" type="lookup"1738  <xsd:element name="unaryLookup" type="lookup"
1722               substitutionGroup="expr"/>1739               substitutionGroup="expr"/>
17231740
17241741
1725<!-- XPath axes                                                                         -->1742<!-- XPath axes                                                                         -->
1726  <xsd:simpleType name="xpathAxis">1743  <xsd:simpleType name="xpathAxis">
1727    <xsd:restriction base="xsd:NMTOKEN">1744    <xsd:restriction base="xsd:NMTOKEN">
1728      <xsd:enumeration value="child"/>1745      <xsd:enumeration value="child"/>
1729      <xsd:enumeration value="attribute"/>1746      <xsd:enumeration value="attribute"/>
1730      <xsd:enumeration value="self"/>1747      <xsd:enumeration value="self"/>
1731      <xsd:enumeration value="parent"/>1748      <xsd:enumeration value="parent"/>
1732      <xsd:enumeration value="descendant-or-self"/>1749      <xsd:enumeration value="descendant-or-self"/>
1733      <xsd:enumeration value="descendant"/>1750      <xsd:enumeration value="descendant"/>
1734      <xsd:enumeration value="following"/>1751      <xsd:enumeration value="following"/>
1735      <xsd:enumeration value="following-sibling"/>1752      <xsd:enumeration value="following-sibling"/>
1736      <xsd:enumeration value="ancestor"/>1753      <xsd:enumeration value="ancestor"/>
1737      <xsd:enumeration value="ancestor-or-self"/>1754      <xsd:enumeration value="ancestor-or-self"/>
1738      <xsd:enumeration value="preceding"/>1755      <xsd:enumeration value="preceding"/>
1739      <xsd:enumeration value="preceding-sibling"/>1756      <xsd:enumeration value="preceding-sibling"/>
1740    </xsd:restriction>1757    </xsd:restriction>
1741  </xsd:simpleType>1758  </xsd:simpleType>
17421759
1743  <xsd:element name="xpathAxis" type="xpathAxis"/>1760  <xsd:element name="xpathAxis" type="xpathAxis"/>
17441761
17451762
1746<!-- filter expressions                                                                 -->1763<!-- filter expressions                                                                 -->
1747<!-- 2014-07-13/JM added mapConstructor, arrayConstructor, and unaryLookup              -->1764<!-- 2014-07-13/JM added mapConstructor, arrayConstructor, and unaryLookup              -->
1765<!-- 2015-11-05/JS added stringConstructor                                              -->
1748  <xsd:group name="filterExpr">1766  <xsd:group name="filterExpr">
1749    <xsd:choice>1767    <xsd:choice>
1750      <xsd:element ref="constantExpr"/>1768      <xsd:element ref="constantExpr"/>
1751      <xsd:element ref="varRef"/>1769      <xsd:element ref="varRef"/>
1752      <xsd:element ref="contextItemExpr"/>1770      <xsd:element ref="contextItemExpr"/>
1753      <xsd:element ref="functionCallExpr"/>1771      <xsd:element ref="functionCallExpr"/>
1754      <xsd:element ref="sequenceExpr"/>1772      <xsd:element ref="sequenceExpr"/>
1755      <xsd:element ref="elementConstructor"/>1773      <xsd:element ref="elementConstructor"/>
1756      <xsd:element ref="computedElementConstructor"/>1774      <xsd:element ref="computedElementConstructor"/>
1757      <xsd:element ref="computedAttributeConstructor"/>1775      <xsd:element ref="computedAttributeConstructor"/>
1758      <xsd:element ref="computedDocumentConstructor"/>1776      <xsd:element ref="computedDocumentConstructor"/>
1759      <xsd:element ref="computedTextConstructor"/>1777      <xsd:element ref="computedTextConstructor"/>
1760      <xsd:element ref="computedCommentConstructor"/>1778      <xsd:element ref="computedCommentConstructor"/>
1761      <xsd:element ref="computedNamespaceConstructor"/>1779      <xsd:element ref="computedNamespaceConstructor"/>
1762      <xsd:element ref="computedPIConstructor"/>1780      <xsd:element ref="computedPIConstructor"/>
1763      <xsd:element ref="orderedExpr"/>1781      <xsd:element ref="orderedExpr"/>
1764      <xsd:element ref="unorderedExpr"/>1782      <xsd:element ref="unorderedExpr"/>
1765      <xsd:element ref="namedFunctionRef"/>1783      <xsd:element ref="namedFunctionRef"/>
1766      <xsd:element ref="inlineFunctionExpr"/>1784      <xsd:element ref="inlineFunctionExpr"/>
1767      <xsd:element ref="dynamicFunctionInvocationExpr"/>1785      <xsd:element ref="dynamicFunctionInvocationExpr"/>
1768      <xsd:element ref="mapConstructor"/>1786      <xsd:element ref="mapConstructor"/>
1769      <xsd:element ref="arrayConstructor"/>1787      <xsd:element ref="arrayConstructor"/>
1788      <xsd:element ref="stringConstructor"/>
1770      <xsd:element ref="unaryLookup"/>1789      <xsd:element ref="unaryLookup"/>
1771    </xsd:choice>1790    </xsd:choice>
1772  </xsd:group>1791  </xsd:group>
17731792
17741793
1775<!-- step expression                                                                    -->1794<!-- step expression                                                                    -->
1776<!-- 2014-07-13/JM Added alts to predicates to support lookup (formerly mapLookup)      -->1795<!-- 2014-07-13/JM Added alts to predicates to support lookup (formerly mapLookup)      -->
1777  <xsd:complexType name="stepExpr">1796  <xsd:complexType name="stepExpr">
1778    <xsd:sequence>1797    <xsd:sequence>
1779      <xsd:choice>1798      <xsd:choice>
1780        <xsd:sequence>1799        <xsd:sequence>
1781          <xsd:element ref="xpathAxis"/>1800          <xsd:element ref="xpathAxis"/>
1782          <xsd:choice>1801          <xsd:choice>
1783            <xsd:element ref="kindTest"/>1802            <xsd:element ref="kindTest"/>
1784            <xsd:element ref="nameTest"/>1803            <xsd:element ref="nameTest"/>
1785            <xsd:element ref="Wildcard"/>1804            <xsd:element ref="Wildcard"/>
1786          </xsd:choice>1805          </xsd:choice>
1787          <xsd:element name="predicates" type="exprList" minOccurs="0"/>1806          <xsd:element name="predicates" type="exprList" minOccurs="0"/>
1788        </xsd:sequence>1807        </xsd:sequence>
1789        <xsd:sequence>1808        <xsd:sequence>
1790          <xsd:element name="filterExpr">1809          <xsd:element name="filterExpr">
1791            <xsd:complexType>1810            <xsd:complexType>
1792              <xsd:sequence>1811              <xsd:sequence>
1793                <xsd:group ref="filterExpr"/>1812                <xsd:group ref="filterExpr"/>
1794              </xsd:sequence>1813              </xsd:sequence>
1795            </xsd:complexType>1814            </xsd:complexType>
1796          </xsd:element>1815          </xsd:element>
1797          <xsd:choice>1816          <xsd:choice>
1798            <xsd:element name="predicates" type="exprList" minOccurs="0"/>1817            <xsd:element name="predicates" type="exprList" minOccurs="0"/>
1799            <xsd:choice minOccurs="0" maxOccurs="unbounded">1818            <xsd:choice minOccurs="0" maxOccurs="unbounded">
1800              <xsd:element name="predicate">1819              <xsd:element name="predicate">
1801                <xsd:complexType>1820                <xsd:complexType>
1802                  <xsd:sequence>1821                  <xsd:sequence>
1803                    <xsd:element ref="expr"/>1822                    <xsd:element ref="expr"/>
1804                  </xsd:sequence>1823                  </xsd:sequence>
1805                </xsd:complexType>1824                </xsd:complexType>
1806              </xsd:element>1825              </xsd:element>
1807              <xsd:element ref="lookup"/>1826              <xsd:element ref="lookup"/>
1808            </xsd:choice>1827            </xsd:choice>
1809          </xsd:choice>1828          </xsd:choice>
1810        </xsd:sequence>1829        </xsd:sequence>
1811      </xsd:choice>1830      </xsd:choice>
1812    </xsd:sequence>1831    </xsd:sequence>
1813  </xsd:complexType>1832  </xsd:complexType>
18141833
1815  <xsd:element name="stepExpr" type="stepExpr"/>1834  <xsd:element name="stepExpr" type="stepExpr"/>
18161835
18171836
1818<!-- path expression                                                                    -->1837<!-- path expression                                                                    -->
1819  <xsd:complexType name="pathExpr">1838  <xsd:complexType name="pathExpr">
1820    <xsd:complexContent>1839    <xsd:complexContent>
1821      <xsd:extension base="expr">1840      <xsd:extension base="expr">
1822        <xsd:choice>1841        <xsd:choice>
1823          <xsd:sequence>1842          <xsd:sequence>
1824            <xsd:element name="rootExpr" type="emptyContent"/>1843            <xsd:element name="rootExpr" type="emptyContent"/>
1825            <xsd:element ref="stepExpr" minOccurs="0" maxOccurs="unbounded"/>1844            <xsd:element ref="stepExpr" minOccurs="0" maxOccurs="unbounded"/>
1826          </xsd:sequence>1845          </xsd:sequence>
1827          <xsd:element ref="stepExpr" maxOccurs="unbounded"/>1846          <xsd:element ref="stepExpr" maxOccurs="unbounded"/>
1828        </xsd:choice>1847        </xsd:choice>
1829      </xsd:extension>1848      </xsd:extension>
1830    </xsd:complexContent>1849    </xsd:complexContent>
1831  </xsd:complexType>1850  </xsd:complexType>
18321851
1833  <xsd:element name="pathExpr" type="pathExpr" substitutionGroup="expr"/>1852  <xsd:element name="pathExpr" type="pathExpr" substitutionGroup="expr"/>
18341853
18351854
1836<!-- The following constructs deal with the query prolog                                -->1855<!-- The following constructs deal with the query prolog                                -->
1837  <xsd:complexType name="module">1856  <xsd:complexType name="module">
1838    <xsd:sequence>1857    <xsd:sequence>
1839      <xsd:element ref="versionDecl" minOccurs="0"/>1858      <xsd:element ref="versionDecl" minOccurs="0"/>
1840      <xsd:choice>1859      <xsd:choice>
1841        <xsd:element ref="mainModule"/>1860        <xsd:element ref="mainModule"/>
1842        <xsd:element ref="libraryModule"/>1861        <xsd:element ref="libraryModule"/>
1843      </xsd:choice>1862      </xsd:choice>
1844    </xsd:sequence>1863    </xsd:sequence>
1845  </xsd:complexType>1864  </xsd:complexType>
18461865
1847  <xsd:element name="module" type="module"/>1866  <xsd:element name="module" type="module"/>
18481867
18491868
1850  <xsd:complexType name="mainModule">1869  <xsd:complexType name="mainModule">
1851    <xsd:sequence>1870    <xsd:sequence>
1852      <xsd:element ref="prolog" minOccurs="0"/>1871      <xsd:element ref="prolog" minOccurs="0"/>
1853      <xsd:element name="queryBody" type="exprWrapper"/>1872      <xsd:element name="queryBody" type="exprWrapper"/>
1854    </xsd:sequence>1873    </xsd:sequence>
1855  </xsd:complexType>1874  </xsd:complexType>
18561875
1857  <xsd:element name="mainModule" type="mainModule"/>1876  <xsd:element name="mainModule" type="mainModule"/>
18581877
18591878
1860  <xsd:complexType name="libraryModule">1879  <xsd:complexType name="libraryModule">
1861    <xsd:sequence>1880    <xsd:sequence>
1862      <xsd:element ref="moduleDecl"/>1881      <xsd:element ref="moduleDecl"/>
1863      <xsd:element ref="prolog" minOccurs="0"/>1882      <xsd:element ref="prolog" minOccurs="0"/>
1864    </xsd:sequence>1883    </xsd:sequence>
1865  </xsd:complexType>1884  </xsd:complexType>
18661885
1867  <xsd:element name="libraryModule" type="libraryModule"/>1886  <xsd:element name="libraryModule" type="libraryModule"/>
18681887
18691888
1870<!-- Corrected versionDecl element to require at least one of version or encoding -->1889<!-- Corrected versionDecl element to require at least one of version or encoding -->
1871  <xsd:complexType name="versionDecl">1890  <xsd:complexType name="versionDecl">
1872    <xsd:choice>1891    <xsd:choice>
1873      <xsd:sequence>1892      <xsd:sequence>
1874        <xsd:element name="version" type="xsd:string"/>1893        <xsd:element name="version" type="xsd:string"/>
1875        <xsd:element name="encoding" type="xsd:string" minOccurs="0"/>1894        <xsd:element name="encoding" type="xsd:string" minOccurs="0"/>
1876      </xsd:sequence>1895      </xsd:sequence>
1877      <xsd:element name="encoding" type="xsd:string"/>1896      <xsd:element name="encoding" type="xsd:string"/>
1878    </xsd:choice>1897    </xsd:choice>
1879  </xsd:complexType>1898  </xsd:complexType>
18801899
1881  <xsd:element name="versionDecl" type="versionDecl"/>1900  <xsd:element name="versionDecl" type="versionDecl"/>
18821901
18831902
1884  <xsd:complexType name="prolog">1903  <xsd:complexType name="prolog">
1885    <xsd:sequence>1904    <xsd:sequence>
1886        <xsd:element ref="prologPartOneItem" minOccurs="0" maxOccurs="unbounded"/>1905        <xsd:element ref="prologPartOneItem" minOccurs="0" maxOccurs="unbounded"/>
1887        <xsd:element ref="prologPartTwoItem" minOccurs="0" maxOccurs="unbounded"/>1906        <xsd:element ref="prologPartTwoItem" minOccurs="0" maxOccurs="unbounded"/>
1888      </xsd:sequence>1907      </xsd:sequence>
1889    </xsd:complexType>1908    </xsd:complexType>
18901909
1891  <xsd:element name="prolog" type="prolog"/>1910  <xsd:element name="prolog" type="prolog"/>
18921911
18931912
1894  <xsd:element name="prologPartOneItem" abstract="true"/>1913  <xsd:element name="prologPartOneItem" abstract="true"/>
18951914
18961915
1897  <xsd:element name="prologPartTwoItem" abstract="true"/>1916  <xsd:element name="prologPartTwoItem" abstract="true"/>
18981917
18991918
1900  <xsd:simpleType name="boundarySpaceDecl">1919  <xsd:simpleType name="boundarySpaceDecl">
1901    <xsd:restriction base="xsd:NMTOKEN">1920    <xsd:restriction base="xsd:NMTOKEN">
1902      <xsd:enumeration value="strip"/>1921      <xsd:enumeration value="strip"/>
1903      <xsd:enumeration value="preserve"/>1922      <xsd:enumeration value="preserve"/>
1904    </xsd:restriction>1923    </xsd:restriction>
1905  </xsd:simpleType>1924  </xsd:simpleType>
19061925
1907  <xsd:element name="boundarySpaceDecl" type="boundarySpaceDecl"1926  <xsd:element name="boundarySpaceDecl" type="boundarySpaceDecl"
1908               substitutionGroup="prologPartOneItem"/>1927               substitutionGroup="prologPartOneItem"/>
19091928
19101929
1911  <xsd:element name="defaultCollationDecl" type="xsd:string"1930  <xsd:element name="defaultCollationDecl" type="xsd:string"
1912               substitutionGroup="prologPartOneItem"/>1931               substitutionGroup="prologPartOneItem"/>
19131932
19141933
1915  <xsd:element name="baseUriDecl" type="xsd:string"1934  <xsd:element name="baseUriDecl" type="xsd:string"
1916               substitutionGroup="prologPartOneItem"/>1935               substitutionGroup="prologPartOneItem"/>
19171936
19181937
1919  <xsd:simpleType name="constructionDecl">1938  <xsd:simpleType name="constructionDecl">
1920    <xsd:restriction base="xsd:NMTOKEN">1939    <xsd:restriction base="xsd:NMTOKEN">
1921      <xsd:enumeration value="strip"/>1940      <xsd:enumeration value="strip"/>
1922      <xsd:enumeration value="preserve"/>1941      <xsd:enumeration value="preserve"/>
1923    </xsd:restriction>1942    </xsd:restriction>
1924  </xsd:simpleType>1943  </xsd:simpleType>
19251944
1926  <xsd:element name="constructionDecl" type="constructionDecl"1945  <xsd:element name="constructionDecl" type="constructionDecl"
1927               substitutionGroup="prologPartOneItem"/>1946               substitutionGroup="prologPartOneItem"/>
19281947
19291948
1930  <xsd:simpleType name="orderingModeDecl">1949  <xsd:simpleType name="orderingModeDecl">
1931    <xsd:restriction base="xsd:NMTOKEN">1950    <xsd:restriction base="xsd:NMTOKEN">
1932      <xsd:enumeration value="ordered"/>1951      <xsd:enumeration value="ordered"/>
1933      <xsd:enumeration value="unordered"/>1952      <xsd:enumeration value="unordered"/>
1934    </xsd:restriction>1953    </xsd:restriction>
1935  </xsd:simpleType>1954  </xsd:simpleType>
19361955
1937  <xsd:element name="orderingModeDecl" type="orderingModeDecl"1956  <xsd:element name="orderingModeDecl" type="orderingModeDecl"
1938               substitutionGroup="prologPartOneItem"/>1957               substitutionGroup="prologPartOneItem"/>
19391958
19401959
1941  <xsd:element name="emptyOrderingDecl" type="emptyOrderingMode"1960  <xsd:element name="emptyOrderingDecl" type="emptyOrderingMode"
1942               substitutionGroup="prologPartOneItem"/>1961               substitutionGroup="prologPartOneItem"/>
19431962
19441963
1945  <xsd:complexType name="copyNamespacesDecl">1964  <xsd:complexType name="copyNamespacesDecl">
1946    <xsd:sequence>1965    <xsd:sequence>
1947      <xsd:element name="preserveMode">1966      <xsd:element name="preserveMode">
1948        <xsd:simpleType>1967        <xsd:simpleType>
1949          <xsd:restriction base="xsd:NMTOKEN">1968          <xsd:restriction base="xsd:NMTOKEN">
1950            <xsd:enumeration value="preserve"/>1969            <xsd:enumeration value="preserve"/>
1951            <xsd:enumeration value="no-preserve"/>1970            <xsd:enumeration value="no-preserve"/>
1952          </xsd:restriction>1971          </xsd:restriction>
1953        </xsd:simpleType>1972        </xsd:simpleType>
1954      </xsd:element>1973      </xsd:element>
1955      <xsd:element name="inheritMode">1974      <xsd:element name="inheritMode">
1956        <xsd:simpleType>1975        <xsd:simpleType>
1957          <xsd:restriction base="xsd:NMTOKEN">1976          <xsd:restriction base="xsd:NMTOKEN">
1958            <xsd:enumeration value="inherit"/>1977            <xsd:enumeration value="inherit"/>
1959            <xsd:enumeration value="no-inherit"/>1978            <xsd:enumeration value="no-inherit"/>
1960          </xsd:restriction>1979          </xsd:restriction>
1961        </xsd:simpleType>1980        </xsd:simpleType>
1962      </xsd:element>1981      </xsd:element>
1963    </xsd:sequence>1982    </xsd:sequence>
1964  </xsd:complexType>1983  </xsd:complexType>
19651984
1966  <xsd:element name="copyNamespacesDecl" type="copyNamespacesDecl"1985  <xsd:element name="copyNamespacesDecl" type="copyNamespacesDecl"
1967               substitutionGroup="prologPartOneItem"/>1986               substitutionGroup="prologPartOneItem"/>
19681987
19691988
1970  <xsd:simpleType name="defaultNamespaceCategory">1989  <xsd:simpleType name="defaultNamespaceCategory">
1971    <xsd:restriction base="xsd:NMTOKEN">1990    <xsd:restriction base="xsd:NMTOKEN">
1972      <xsd:enumeration value="function"/>1991      <xsd:enumeration value="function"/>
1973      <xsd:enumeration value="element"/>1992      <xsd:enumeration value="element"/>
1974    </xsd:restriction>1993    </xsd:restriction>
1975  </xsd:simpleType>1994  </xsd:simpleType>
19761995
1977  <xsd:complexType name="defaultNamespaceDecl">1996  <xsd:complexType name="defaultNamespaceDecl">
1978    <xsd:sequence>1997    <xsd:sequence>
1979      <xsd:element name="defaultNamespaceCategory" type="defaultNamespaceCategory"/>1998      <xsd:element name="defaultNamespaceCategory" type="defaultNamespaceCategory"/>
1980      <xsd:element name="uri" type="xsd:string"/>1999      <xsd:element name="uri" type="xsd:string"/>
1981    </xsd:sequence>2000    </xsd:sequence>
1982  </xsd:complexType>2001  </xsd:complexType>
19832002
1984  <xsd:element name="defaultNamespaceDecl" type="defaultNamespaceDecl"2003  <xsd:element name="defaultNamespaceDecl" type="defaultNamespaceDecl"
1985               substitutionGroup="prologPartOneItem"/>2004               substitutionGroup="prologPartOneItem"/>
19862005
19872006
1988  <xsd:complexType name="namespaceDeclType">2007  <xsd:complexType name="namespaceDeclType">
1989    <xsd:sequence>2008    <xsd:sequence>
1990      <xsd:element name="prefix" type="xsd:NCName"/>2009      <xsd:element name="prefix" type="xsd:NCName"/>
1991      <xsd:element name="uri" type="xsd:string"/>2010      <xsd:element name="uri" type="xsd:string"/>
1992    </xsd:sequence>2011    </xsd:sequence>
1993  </xsd:complexType>2012  </xsd:complexType>
19942013
1995  <xsd:element name="namespaceDecl" type="namespaceDeclType"2014  <xsd:element name="namespaceDecl" type="namespaceDeclType"
1996               substitutionGroup="prologPartOneItem"/>2015               substitutionGroup="prologPartOneItem"/>
19972016
19982017
1999  <xsd:element name="moduleDecl" type="namespaceDeclType"/>2018  <xsd:element name="moduleDecl" type="namespaceDeclType"/>
20002019
20012020
2002  <xsd:complexType name="decimalFormatDeclType">2021  <xsd:complexType name="decimalFormatDeclType">
2003        <xsd:sequence>2022        <xsd:sequence>
2004          <xsd:element name="decimalFormatName" type="EQName" minOccurs="0"/>2023          <xsd:element name="decimalFormatName" type="EQName" minOccurs="0"/>
2005          <xsd:element name="decimalFormatParam" minOccurs="0" maxOccurs="unbounded">2024          <xsd:element name="decimalFormatParam" minOccurs="0" maxOccurs="unbounded">
2006            <xsd:complexType>2025            <xsd:complexType>
2007              <xsd:sequence>2026              <xsd:sequence>
2008                <xsd:element name="decimalFormatParamName">2027                <xsd:element name="decimalFormatParamName">
2009                  <xsd:simpleType>2028                  <xsd:simpleType>
2010                    <xsd:restriction base="xsd:NMTOKEN">2029                    <xsd:restriction base="xsd:NMTOKEN">
2011                      <xsd:enumeration value="decimal-separator"/>2030                      <xsd:enumeration value="decimal-separator"/>
2012                      <xsd:enumeration value="grouping-separator"/>2031                      <xsd:enumeration value="grouping-separator"/>
2013                      <xsd:enumeration value="infinity"/>2032                      <xsd:enumeration value="infinity"/>
2014                      <xsd:enumeration value="minus-sign"/>2033                      <xsd:enumeration value="minus-sign"/>
2015                      <xsd:enumeration value="NaN"/>2034                      <xsd:enumeration value="NaN"/>
2016                      <xsd:enumeration value="percent"/>2035                      <xsd:enumeration value="percent"/>
2017                      <xsd:enumeration value="per-mille"/>2036                      <xsd:enumeration value="per-mille"/>
2018                      <xsd:enumeration value="zero-digit"/>2037                      <xsd:enumeration value="zero-digit"/>
2019                      <xsd:enumeration value="digit"/>2038                      <xsd:enumeration value="digit"/>
2020                      <xsd:enumeration value="pattern-separator"/>2039                      <xsd:enumeration value="pattern-separator"/>
2021                      <xsd:enumeration value="exponent-separator"/>2040                      <xsd:enumeration value="exponent-separator"/>
2022                    </xsd:restriction>2041                    </xsd:restriction>
2023                  </xsd:simpleType>2042                  </xsd:simpleType>
2024                </xsd:element>2043                </xsd:element>
2025                <xsd:element name="decimalFormatParamValue" type="xsd:string"/>2044                <xsd:element name="decimalFormatParamValue" type="xsd:string"/>
2026              </xsd:sequence>2045              </xsd:sequence>
2027            </xsd:complexType>2046            </xsd:complexType>
2028          </xsd:element>2047          </xsd:element>
2029        </xsd:sequence>2048        </xsd:sequence>
2030  </xsd:complexType>2049  </xsd:complexType>
20312050
2032  <xsd:element name="decimalFormatDecl" type="decimalFormatDeclType"2051  <xsd:element name="decimalFormatDecl" type="decimalFormatDeclType"
2033               substitutionGroup="prologPartOneItem"/>2052               substitutionGroup="prologPartOneItem"/>
20342053
20352054
2036  <xsd:complexType name="schemaImport">2055  <xsd:complexType name="schemaImport">
2037    <xsd:sequence>2056    <xsd:sequence>
2038      <xsd:choice minOccurs="0">2057      <xsd:choice minOccurs="0">
2039        <xsd:element name="namespacePrefix" type="xsd:NCName"/>2058        <xsd:element name="namespacePrefix" type="xsd:NCName"/>
2040        <xsd:element name="defaultElementNamespace" type="emptyContent"/>2059        <xsd:element name="defaultElementNamespace" type="emptyContent"/>
2041      </xsd:choice>2060      </xsd:choice>
2042      <xsd:element name="targetNamespace" type="xsd:string"/>2061      <xsd:element name="targetNamespace" type="xsd:string"/>
2043      <xsd:element name="targetLocation" type="xsd:string"2062      <xsd:element name="targetLocation" type="xsd:string"
2044                   minOccurs="0" maxOccurs="unbounded"/>2063                   minOccurs="0" maxOccurs="unbounded"/>
2045    </xsd:sequence>2064    </xsd:sequence>
2046  </xsd:complexType>2065  </xsd:complexType>
20472066
2048  <xsd:element name="schemaImport" type="schemaImport"2067  <xsd:element name="schemaImport" type="schemaImport"
2049               substitutionGroup="prologPartOneItem"/>2068               substitutionGroup="prologPartOneItem"/>
20502069
20512070
2052  <xsd:complexType name="moduleImport">2071  <xsd:complexType name="moduleImport">
2053    <xsd:sequence>2072    <xsd:sequence>
2054      <xsd:element name="namespacePrefix" type="xsd:NCName" minOccurs="0"/>2073      <xsd:element name="namespacePrefix" type="xsd:NCName" minOccurs="0"/>
2055      <xsd:element name="targetNamespace" type="xsd:string"/>2074      <xsd:element name="targetNamespace" type="xsd:string"/>
2056      <xsd:element name="targetLocation" type="xsd:string"2075      <xsd:element name="targetLocation" type="xsd:string"
2057                   minOccurs="0" maxOccurs="unbounded"/>2076                   minOccurs="0" maxOccurs="unbounded"/>
2058    </xsd:sequence>2077    </xsd:sequence>
2059  </xsd:complexType>2078  </xsd:complexType>
20602079
2061  <xsd:element name="moduleImport" type="moduleImport"2080  <xsd:element name="moduleImport" type="moduleImport"
2062               substitutionGroup="prologPartOneItem"/>2081               substitutionGroup="prologPartOneItem"/>
20632082
20642083
2065  <xsd:complexType name="contextItemDecl">2084  <xsd:complexType name="contextItemDecl">
2066    <xsd:sequence>2085    <xsd:sequence>
2067      <xsd:element ref="contextItemType" minOccurs="0"/>2086      <xsd:element ref="contextItemType" minOccurs="0"/>
2068      <xsd:choice>2087      <xsd:choice>
2069        <xsd:element name="varValue" type="exprWrapper"/>2088        <xsd:element name="varValue" type="exprWrapper"/>
2070        <xsd:sequence>2089        <xsd:sequence>
2071          <xsd:element name="external">2090          <xsd:element name="external">
2072            <xsd:complexType>2091            <xsd:complexType>
2073              <xsd:sequence>2092              <xsd:sequence>
2074                <xsd:element name="varValue" type="exprWrapper" minOccurs="0"/>2093                <xsd:element name="varValue" type="exprWrapper" minOccurs="0"/>
2075              </xsd:sequence>2094              </xsd:sequence>
2076            </xsd:complexType>2095            </xsd:complexType>
2077          </xsd:element>2096          </xsd:element>
2078        </xsd:sequence>2097        </xsd:sequence>
2079      </xsd:choice>2098      </xsd:choice>
2080    </xsd:sequence>2099    </xsd:sequence>
2081  </xsd:complexType>2100  </xsd:complexType>
20822101
2083  <xsd:element name="contextItemDecl" type="contextItemDecl"2102  <xsd:element name="contextItemDecl" type="contextItemDecl"
2084               substitutionGroup="prologPartTwoItem"/>2103               substitutionGroup="prologPartTwoItem"/>
20852104
20862105
2087<!-- For %-annotations                                                                  -->2106<!-- For %-annotations                                                                  -->
2088  <xsd:complexType name="annotation">2107  <xsd:complexType name="annotation">
2089    <xsd:sequence>2108    <xsd:sequence>
2090      <xsd:element name="annotationName" type="EQName"/>2109      <xsd:element name="annotationName" type="EQName"/>
2091      <xsd:element name="arguments" type="literalList" minOccurs="0"/>2110      <xsd:element name="arguments" type="literalList" minOccurs="0"/>
2092    </xsd:sequence>2111    </xsd:sequence>
2093  </xsd:complexType>2112  </xsd:complexType>
20942113
20952114
2096  <xsd:complexType name="varDecl">2115  <xsd:complexType name="varDecl">
2097    <xsd:sequence>2116    <xsd:sequence>
2098      <xsd:element name="annotation" type="annotation"2117      <xsd:element name="annotation" type="annotation"
2099                   minOccurs="0" maxOccurs="unbounded"/>2118                   minOccurs="0" maxOccurs="unbounded"/>
2100      <xsd:element name="varName" type="EQName"/>2119      <xsd:element name="varName" type="EQName"/>
2101      <xsd:element ref="typeDeclaration" minOccurs="0"/>2120      <xsd:element ref="typeDeclaration" minOccurs="0"/>
2102      <xsd:choice>2121      <xsd:choice>
2103        <xsd:element name="varValue" type="exprWrapper"/>2122        <xsd:element name="varValue" type="exprWrapper"/>
2104        <xsd:sequence>2123        <xsd:sequence>
2105          <xsd:element name="external">2124          <xsd:element name="external">
2106            <xsd:complexType>2125            <xsd:complexType>
2107              <xsd:sequence>2126              <xsd:sequence>
2108                <xsd:element name="varValue" type="exprWrapper" minOccurs="0"/>2127                <xsd:element name="varValue" type="exprWrapper" minOccurs="0"/>
2109              </xsd:sequence>2128              </xsd:sequence>
2110            </xsd:complexType>2129            </xsd:complexType>
2111          </xsd:element>2130          </xsd:element>
2112        </xsd:sequence>2131        </xsd:sequence>
2113      </xsd:choice>2132      </xsd:choice>
2114    </xsd:sequence>2133    </xsd:sequence>
2115  </xsd:complexType>2134  </xsd:complexType>
21162135
2117  <xsd:element name="varDecl" type="varDecl"2136  <xsd:element name="varDecl" type="varDecl"
2118               substitutionGroup="prologPartTwoItem"/>2137               substitutionGroup="prologPartTwoItem"/>
21192138
21202139
2121  <xsd:complexType name="optionDecl">2140  <xsd:complexType name="optionDecl">
2122    <xsd:sequence>2141    <xsd:sequence>
2123      <xsd:element name="optionName" type="EQName"/>2142      <xsd:element name="optionName" type="EQName"/>
2124      <xsd:element name="optionContents" type="xsd:string"/>2143      <xsd:element name="optionContents" type="xsd:string"/>
2125    </xsd:sequence>2144    </xsd:sequence>
2126  </xsd:complexType>2145  </xsd:complexType>
21272146
2128  <xsd:element name="optionDecl" type="optionDecl"2147  <xsd:element name="optionDecl" type="optionDecl"
2129               substitutionGroup="prologPartTwoItem"/>2148               substitutionGroup="prologPartTwoItem"/>
21302149
21312150
2132<!-- function declarations can no longer specify "nondeterministic" or "private"              -->2151<!-- function declarations can no longer specify "nondeterministic" or "private"              -->
2133  <xsd:complexType name="functionDecl">2152  <xsd:complexType name="functionDecl">
2134    <xsd:sequence>2153    <xsd:sequence>
2135      <xsd:element name="annotation" type="annotation"2154      <xsd:element name="annotation" type="annotation"
2136                   minOccurs="0" maxOccurs="unbounded"/>2155                   minOccurs="0" maxOccurs="unbounded"/>
2137      <xsd:element name="functionName" type="EQName"/>2156      <xsd:element name="functionName" type="EQName"/>
2138      <xsd:element ref="paramList"/>2157      <xsd:element ref="paramList"/>
2139      <xsd:element ref="typeDeclaration" minOccurs="0"/>2158      <xsd:element ref="typeDeclaration" minOccurs="0"/>
2140      <xsd:choice>2159      <xsd:choice>
2141        <xsd:element name="functionBody" type="exprWrapper"/>2160        <xsd:element name="functionBody" type="exprWrapper"/>
2142        <xsd:element name="externalDefinition" type="emptyContent"/>2161        <xsd:element name="externalDefinition" type="emptyContent"/>
2143      </xsd:choice>2162      </xsd:choice>
2144    </xsd:sequence>2163    </xsd:sequence>
2145  </xsd:complexType>2164  </xsd:complexType>
21462165
2147  <xsd:element name="functionDecl" type="functionDecl"2166  <xsd:element name="functionDecl" type="functionDecl"
2148               substitutionGroup="prologPartTwoItem"/>2167               substitutionGroup="prologPartTwoItem"/>
21492168
21502169
2151  <xsd:complexType name="param">2170  <xsd:complexType name="param">
2152    <xsd:sequence>2171    <xsd:sequence>
2153      <xsd:element name="varName" type="EQName"/>2172      <xsd:element name="varName" type="EQName"/>
2154      <xsd:element ref="typeDeclaration" minOccurs="0"/>2173      <xsd:element ref="typeDeclaration" minOccurs="0"/>
2155    </xsd:sequence>2174    </xsd:sequence>
2156  </xsd:complexType>2175  </xsd:complexType>
21572176
2158  <xsd:element name="param" type="param"/>2177  <xsd:element name="param" type="param"/>
21592178
21602179
2161  <xsd:complexType name="paramList">2180  <xsd:complexType name="paramList">
2162    <xsd:sequence>2181    <xsd:sequence>
2163      <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/>2182      <xsd:element ref="param" minOccurs="0" maxOccurs="unbounded"/>
2164    </xsd:sequence>2183    </xsd:sequence>
2165  </xsd:complexType>2184  </xsd:complexType>
21662185
2167  <xsd:element name="paramList" type="paramList"/>2186  <xsd:element name="paramList" type="paramList"/>
21682187
21692188
2170</xsd:schema>2189</xsd:schema>
2190