Applied Mike's nice -d option thing.
[irspy-moved-to-github.git] / zebra / zeerex-2.0.xsd
1 <schema
2   xmlns='http://www.w3.org/2001/XMLSchema'
3   targetNamespace='http://explain.z3950.org/dtd/2.0/'
4   xmlns:explain='http://explain.z3950.org/dtd/2.0/'>
5
6  <element name='explain'>
7   <complexType>
8    <sequence>
9     <element ref='explain:serverInfo'/>
10     <element ref='explain:databaseInfo' minOccurs='0' maxOccurs='1'/>
11     <element ref='explain:metaInfo' minOccurs='0' maxOccurs='1'/>
12     <element ref='explain:indexInfo' minOccurs='0' maxOccurs='1'/>
13     <choice minOccurs='0' maxOccurs='1'>
14      <element ref='explain:recordInfo'/>
15      <element ref='explain:schemaInfo'/>
16     </choice>
17     <element ref='explain:configInfo' minOccurs='0' maxOccurs='1'/>
18    </sequence>
19    <attribute name='authoritative' use='optional' default='false'>
20     <simpleType>
21      <restriction base='string'>
22       <enumeration value='true'/>
23       <enumeration value='false'/>
24      </restriction>
25     </simpleType>
26    </attribute>
27    <attribute name='id' type='string' use='optional'/>
28   </complexType>
29  </element>
30
31  <element name='serverInfo'>
32   <complexType>
33    <sequence>
34     <element ref='explain:host'/>
35     <element ref='explain:port'/>
36     <element ref='explain:database'/>
37     <element ref='explain:authentication' minOccurs='0' maxOccurs='1'/>
38    </sequence>
39    <attribute name='protocol' type='string' use='optional' default='Z39.50'/>
40    <attribute name='version' type='string' use='optional' default='3'/>
41    <attribute name='transport' type='string' use='optional' default='http'/>
42    <!-- ### The next line is not in the official schema.  I need 2.1 -->
43    <attribute name='method' type='string' use='optional' default='get'/>
44    <attribute name='wsdl' type='string' use='optional'/>
45   </complexType>
46  </element>
47
48  <element name='host'>
49   <complexType mixed='true'>
50   </complexType>
51  </element>
52
53  <element name='port'>
54   <complexType mixed='true'>
55   </complexType>
56  </element>
57
58  <element name='database'>
59   <complexType mixed='true'>
60    <attribute name='numRecs' type='string' use='optional'/>
61    <attribute name='lastUpdate' type='string' use='optional'/>
62   </complexType>
63  </element>
64
65  <element name='authentication'>
66   <complexType>
67    <choice>
68     <element ref='explain:open'/>
69     <sequence>
70      <element ref='explain:user' minOccurs='0' maxOccurs='1'/>
71      <element ref='explain:group' minOccurs='0' maxOccurs='1'/>
72      <element ref='explain:password' minOccurs='0' maxOccurs='1'/>
73     </sequence>
74    </choice>
75    <attribute name='required' use='optional' default='true'>
76     <simpleType>
77      <restriction base='string'>
78       <enumeration value='true'/>
79       <enumeration value='false'/>
80      </restriction>
81     </simpleType>
82    </attribute>
83   </complexType>
84  </element>
85
86  <element name='open'>
87   <complexType mixed='true'>
88   </complexType>
89  </element>
90
91  <element name='user'>
92   <complexType mixed='true'>
93   </complexType>
94  </element>
95
96  <element name='group'>
97   <complexType mixed='true'>
98   </complexType>
99  </element>
100
101  <element name='password'>
102   <complexType mixed='true'>
103   </complexType>
104  </element>
105
106  <element name='databaseInfo'>
107   <complexType>
108    <sequence>
109     <element ref='explain:title' minOccurs='0' maxOccurs='unbounded'/>
110     <element ref='explain:description' minOccurs='0' maxOccurs='unbounded'/>
111     <choice minOccurs='0' maxOccurs='unbounded'>
112      <element ref='explain:author'/>
113      <element ref='explain:contact'/>
114      <element ref='explain:extent'/>
115      <element ref='explain:history'/>
116      <element ref='explain:langUsage'/>
117      <element ref='explain:restrictions'/>
118      <element ref='explain:subjects'/>
119      <element ref='explain:links'/>
120      <element ref='explain:implementation'/>
121     </choice>
122    </sequence>
123   </complexType>
124  </element>
125
126  <element name='title'>
127   <complexType mixed='true'>
128    <attribute name='primary' use='optional'>
129     <simpleType>
130      <restriction base='string'>
131       <enumeration value='true'/>
132       <enumeration value='false'/>
133      </restriction>
134     </simpleType>
135    </attribute>
136    <attribute name='lang' type='string' use='optional'/>
137   </complexType>
138  </element>
139
140  <element name='description'>
141   <complexType mixed='true'>
142    <attribute name='primary' use='optional'>
143     <simpleType>
144      <restriction base='string'>
145       <enumeration value='true'/>
146       <enumeration value='false'/>
147      </restriction>
148     </simpleType>
149    </attribute>
150    <attribute name='lang' type='string' use='optional'/>
151   </complexType>
152  </element>
153
154  <element name='author'>
155   <complexType mixed='true'>
156    <attribute name='primary' use='optional'>
157     <simpleType>
158      <restriction base='string'>
159       <enumeration value='true'/>
160       <enumeration value='false'/>
161      </restriction>
162     </simpleType>
163    </attribute>
164    <attribute name='lang' type='string' use='optional'/>
165   </complexType>
166  </element>
167
168  <element name='contact'>
169   <complexType mixed='true'>
170    <attribute name='primary' use='optional'>
171     <simpleType>
172      <restriction base='string'>
173       <enumeration value='true'/>
174       <enumeration value='false'/>
175      </restriction>
176     </simpleType>
177    </attribute>
178    <attribute name='lang' type='string' use='optional'/>
179   </complexType>
180  </element>
181
182  <element name='extent'>
183   <complexType mixed='true'>
184    <attribute name='primary' use='optional'>
185     <simpleType>
186      <restriction base='string'>
187       <enumeration value='true'/>
188       <enumeration value='false'/>
189      </restriction>
190     </simpleType>
191    </attribute>
192    <attribute name='lang' type='string' use='optional'/>
193   </complexType>
194  </element>
195
196  <element name='history'>
197   <complexType mixed='true'>
198    <attribute name='primary' use='optional'>
199     <simpleType>
200      <restriction base='string'>
201       <enumeration value='true'/>
202       <enumeration value='false'/>
203      </restriction>
204     </simpleType>
205    </attribute>
206    <attribute name='lang' type='string' use='optional'/>
207   </complexType>
208  </element>
209
210  <element name='langUsage'>
211   <complexType mixed='true'>
212    <attribute name='codes' type='string' use='optional'/>
213    <attribute name='primary' use='optional'>
214     <simpleType>
215      <restriction base='string'>
216       <enumeration value='true'/>
217       <enumeration value='false'/>
218      </restriction>
219     </simpleType>
220    </attribute>
221    <attribute name='lang' type='string' use='optional'/>
222   </complexType>
223  </element>
224
225  <element name='restrictions'>
226   <complexType mixed='true'>
227    <attribute name='primary' use='optional'>
228     <simpleType>
229      <restriction base='string'>
230       <enumeration value='true'/>
231       <enumeration value='false'/>
232      </restriction>
233     </simpleType>
234    </attribute>
235    <attribute name='lang' type='string' use='optional'/>
236   </complexType>
237  </element>
238
239  <element name='subjects'>
240   <complexType>
241    <sequence>
242     <element ref='explain:subject' maxOccurs='unbounded'/>
243    </sequence>
244   </complexType>
245  </element>
246
247  <element name='subject'>
248   <complexType mixed='true'>
249   </complexType>
250  </element>
251
252  <element name='links'>
253   <complexType>
254    <sequence>
255     <element ref='explain:link' maxOccurs='unbounded'/>
256    </sequence>
257   </complexType>
258  </element>
259
260  <element name='link'>
261   <complexType mixed='true'>
262    <attribute name='type' type='string' use='optional'/>
263   </complexType>
264  </element>
265
266  <element name='implementation'>
267   <complexType>
268    <sequence>
269     <element ref='explain:title' minOccurs='0' maxOccurs='unbounded'/>
270    </sequence>
271    <attribute name='identifier' type='string' use='optional'/>
272    <attribute name='version' type='string' use='optional'/>
273   </complexType>
274  </element>
275
276  <element name='metaInfo'>
277   <complexType>
278    <sequence>
279     <element ref='explain:dateModified'/>
280     <sequence minOccurs='0' maxOccurs='1'>
281      <element ref='explain:aggregatedFrom'/>
282      <element ref='explain:dateAggregated'/>
283     </sequence>
284    </sequence>
285   </complexType>
286  </element>
287
288  <element name='dateModified'>
289   <complexType mixed='true'>
290   </complexType>
291  </element>
292
293  <element name='aggregatedFrom'>
294   <complexType mixed='true'>
295   </complexType>
296  </element>
297
298  <element name='dateAggregated'>
299   <complexType mixed='true'>
300   </complexType>
301  </element>
302
303  <element name='indexInfo'>
304   <complexType>
305    <choice maxOccurs='unbounded'>
306     <element ref='explain:set'/>
307     <element ref='explain:index'/>
308     <element ref='explain:sortKeyword'/>
309    </choice>
310   </complexType>
311  </element>
312
313  <element name='set'>
314   <complexType>
315    <sequence>
316     <element ref='explain:title' minOccurs='0' maxOccurs='unbounded'/>
317    </sequence>
318    <attribute name='name' type='string' use='required'/>
319    <attribute name='identifier' type='string' use='required'/>
320   </complexType>
321  </element>
322
323  <element name='index'>
324   <complexType>
325    <sequence>
326     <element ref='explain:title' minOccurs='0' maxOccurs='unbounded'/>
327     <element ref='explain:map' maxOccurs='unbounded'/>
328     <element ref='explain:configInfo' minOccurs='0' maxOccurs='1'/>
329    </sequence>
330    <attribute name='id' type='string' use='optional'/>
331    <attribute name='search' use='optional'>
332     <simpleType>
333      <restriction base='string'>
334       <enumeration value='true'/>
335       <enumeration value='false'/>
336      </restriction>
337     </simpleType>
338    </attribute>
339    <attribute name='scan' use='optional'>
340     <simpleType>
341      <restriction base='string'>
342       <enumeration value='true'/>
343       <enumeration value='false'/>
344      </restriction>
345     </simpleType>
346    </attribute>
347    <attribute name='sort' use='optional'>
348     <simpleType>
349      <restriction base='string'>
350       <enumeration value='true'/>
351       <enumeration value='false'/>
352      </restriction>
353     </simpleType>
354    </attribute>
355   </complexType>
356  </element>
357
358  <element name='sortKeyword'>
359   <complexType mixed='true'>
360   </complexType>
361  </element>
362
363  <element name='map'>
364   <complexType>
365    <choice>
366     <sequence>
367      <element ref='explain:attr' maxOccurs='unbounded'/>
368     </sequence>
369     <element ref='explain:name'/>
370    </choice>
371    <attribute name='primary' use='optional' default='false'>
372     <simpleType>
373      <restriction base='string'>
374       <enumeration value='true'/>
375       <enumeration value='false'/>
376      </restriction>
377     </simpleType>
378    </attribute>
379   </complexType>
380  </element>
381
382  <element name='name'>
383   <complexType mixed='true'>
384    <attribute name='set' type='string' use='optional'/>
385   </complexType>
386  </element>
387
388  <element name='attr'>
389   <complexType mixed='true'>
390    <attribute name='type' type='string' use='required'/>
391    <attribute name='set' type='string' use='optional' default='1.2.840.10003.3.1'/>
392   </complexType>
393  </element>
394
395  <element name='recordInfo'>
396   <complexType>
397    <sequence>
398     <element ref='explain:recordSyntax' maxOccurs='unbounded'/>
399    </sequence>
400   </complexType>
401  </element>
402
403  <element name='recordSyntax'>
404   <complexType>
405    <sequence>
406     <element ref='explain:elementSet' maxOccurs='unbounded'/>
407    </sequence>
408    <attribute name='name' type='string' use='optional'/>
409    <attribute name='identifier' type='string' use='optional'/>
410   </complexType>
411  </element>
412
413  <element name='elementSet'>
414   <complexType>
415    <sequence>
416     <element ref='explain:title' minOccurs='0' maxOccurs='unbounded'/>
417    </sequence>
418    <attribute name='name' type='string' use='required'/>
419   </complexType>
420  </element>
421
422  <element name='schemaInfo'>
423   <complexType>
424    <sequence>
425     <element ref='explain:schema' maxOccurs='unbounded'/>
426    </sequence>
427   </complexType>
428  </element>
429
430  <element name='schema'>
431   <complexType>
432    <sequence>
433     <element ref='explain:title' minOccurs='0' maxOccurs='unbounded'/>
434    </sequence>
435    <attribute name='identifier' type='string' use='required'/>
436    <attribute name='name' type='string' use='required'/>
437    <attribute name='location' type='string' use='optional'/>
438    <attribute name='sort' use='optional' default='false'>
439     <simpleType>
440      <restriction base='string'>
441       <enumeration value='true'/>
442       <enumeration value='false'/>
443      </restriction>
444     </simpleType>
445    </attribute>
446    <attribute name='retrieve' use='optional' default='true'>
447     <simpleType>
448      <restriction base='string'>
449       <enumeration value='true'/>
450       <enumeration value='false'/>
451      </restriction>
452     </simpleType>
453    </attribute>
454   </complexType>
455  </element>
456
457  <element name='configInfo'>
458   <complexType>
459    <choice minOccurs='0' maxOccurs='unbounded'>
460     <element ref='explain:default'/>
461     <element ref='explain:setting'/>
462     <element ref='explain:supports'/>
463    </choice>
464   </complexType>
465  </element>
466
467  <element name='default'>
468   <complexType mixed='true'>
469    <attribute name='type' type='string' use='required'/>
470   </complexType>
471  </element>
472
473  <element name='setting'>
474   <complexType mixed='true'>
475    <attribute name='type' type='string' use='required'/>
476   </complexType>
477  </element>
478
479  <element name='supports'>
480   <complexType mixed='true'>
481    <attribute name='type' type='string' use='required'/>
482   </complexType>
483  </element>
484 </schema>