Normalize line endings.
[mono.git] / mcs / tools / mdoc / Resources / monodoc-ecma.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 Author: John Luke <john.luke@gmail.com>
4 This is a (not very strict) schema for the monodoc
5 ecma-provider format.
6 TODO:
7 make base type for summary, remarks, returns, etc
8 alias duplicate attributes
9 make stricter in order and occurance
10 add masterdoc support?
11 -->
12 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
13
14   <!-- define attributes -->
15   <xs:attribute name="argnames" type="xs:string" />
16   <xs:attribute name="cref" type="xs:string" />
17   <xs:attribute name="Deprecated" type="xs:boolean" />
18   <xs:attribute name="FullName" type="xs:string" />
19   <xs:attribute name="FullNameSP" type="xs:string" />
20   <xs:attribute name="inherited" type="xs:string" />
21   <xs:attribute name="language" type="xs:string" />
22   <xs:attribute name="Language" type="xs:string" />
23   <xs:attribute name="lang" type="xs:string" />
24   <xs:attribute name="langword" type="xs:string" />
25   <xs:attribute name="Library" type="xs:string" />
26   <xs:attribute name="location" type="xs:string" />
27   <xs:attribute name="Maintainer" type="xs:string" />
28   <xs:attribute name="MemberName" type="xs:string" />
29   <xs:attribute name="name" type="xs:string" />
30   <xs:attribute name="Name" type="xs:string" />
31   <xs:attribute name="namespace" type="xs:string" />
32   <xs:attribute name="propertytype" type="xs:string" />
33   <xs:attribute name="qualify" type="xs:boolean" />
34   <xs:attribute name="RefType" type="xs:string" />
35   <xs:attribute name="returntype" type="xs:string" />
36   <xs:attribute name="source" type="xs:string" />
37   <xs:attribute name="src" type="xs:string" />
38   <xs:attribute name="subset" type="xs:string" />
39   <xs:attribute name="Value" type="xs:string" />
40   <xs:attribute name="version" type="xs:string" />
41   <xs:attribute name="type" type="xs:string" />
42   <xs:attribute name="Type" type="xs:string" />
43   <xs:attribute name="TypeParamName" type="xs:string" />
44
45   <!-- define simple elements -->
46   <xs:element name="AssemblyName" type="xs:string" />
47   <xs:element name="AssemblyPublicKey" type="xs:string" />
48   <xs:element name="AssemblyVersion" type="xs:string" />
49   <xs:element name="AssemblyCulture" type="xs:string" />
50   <xs:element name="AttributeName" type="xs:string" />
51   <xs:element name="BaseTypeName" type="xs:string" />
52   <xs:element name="Excluded" type="xs:string" />
53   <xs:element name="ExcludedBaseTypeName" type="xs:string" />
54   <xs:element name="ExcludedLibrary" type="xs:string" />
55   <xs:element name="ExcludedLibraryName" type="xs:string" />
56   <xs:element name="ExcludedTypeName" type="xs:string" />
57   <xs:element name="i" type="xs:string" />
58   <xs:element name="InterfaceName" type="xs:string" />
59   <xs:element name="li" type="xs:string" />
60   <xs:element name="MemberOfLibrary" type="xs:string" />
61   <xs:element name="MemberType" type="xs:string" />
62   <xs:element name="MemberValue" type="xs:string" />
63   <xs:element name="onequarter" type="xs:string" />
64   <xs:element name="ReturnType" type="xs:string" />
65   <xs:element name="TypeExcluded" type="xs:string" />
66
67   <!-- define complex elements -->
68   <xs:element name="altcompliant">
69     <xs:complexType>
70       <xs:attribute ref="cref" />
71     </xs:complexType>
72   </xs:element>
73
74   <xs:element name="altmember">
75     <xs:complexType>
76       <xs:simpleContent>
77         <xs:extension base="xs:string">
78           <xs:attribute ref="cref" />
79         </xs:extension>
80       </xs:simpleContent>
81     </xs:complexType>
82   </xs:element>
83
84   <xs:element name="AssemblyInfo">
85     <xs:complexType>
86       <xs:sequence>
87         <xs:element ref="AssemblyName" minOccurs="0" />
88         <xs:element ref="AssemblyPublicKey" minOccurs="0" />
89         <xs:element ref="AssemblyVersion" minOccurs="0" maxOccurs="unbounded" />
90         <xs:element ref="AssemblyCulture" minOccurs="0" />
91         <xs:element ref="Attributes" minOccurs="0" />
92       </xs:sequence>
93     </xs:complexType>
94   </xs:element>
95
96   <xs:element name="Attribute">
97     <xs:complexType>
98       <xs:sequence>
99         <xs:element ref="AttributeName" />
100         <xs:element ref="Excluded" minOccurs="0" />
101         <xs:element ref="ExcludedTypeName" minOccurs="0" />
102         <xs:element ref="ExcludedLibraryName" minOccurs="0" />
103       </xs:sequence>
104     </xs:complexType>
105   </xs:element>
106
107   <xs:element name="Attributes">
108     <xs:complexType>
109       <xs:sequence>
110         <xs:element ref="Attribute" minOccurs="0" maxOccurs="unbounded" />
111       </xs:sequence>
112     </xs:complexType>
113   </xs:element>
114
115   <xs:element name="Base">
116     <xs:complexType>
117       <xs:sequence>
118         <xs:element ref="BaseTypeName" minOccurs="0" />
119         <xs:element ref="BaseTypeArguments" minOccurs="0" />
120         <xs:element ref="ExcludedBaseTypeName" minOccurs="0" />
121         <xs:element ref="ExcludedLibraryName" minOccurs="0" />
122       </xs:sequence>
123     </xs:complexType>
124   </xs:element>
125
126   <xs:element name="BaseTypeArgument">
127     <xs:complexType mixed="true">
128       <xs:attribute ref="TypeParamName" />
129     </xs:complexType>
130   </xs:element>
131
132   <xs:element name="BaseTypeArguments">
133     <xs:complexType>
134       <xs:sequence>
135         <xs:element ref="BaseTypeArgument" minOccurs="0" />
136       </xs:sequence>
137     </xs:complexType>
138   </xs:element>
139
140   <xs:element name="block">
141     <xs:complexType mixed="true">
142       <xs:choice minOccurs="0" maxOccurs="unbounded">
143         <xs:element ref="block" />
144         <xs:element ref="c" />
145         <xs:element ref="code" />
146         <xs:element ref="format" />
147         <xs:element ref="list" />
148         <xs:element ref="para" />
149         <xs:element ref="paramref" />
150         <xs:element ref="see" />
151         <xs:element ref="subscript" />
152         <xs:element ref="sup" />
153         <xs:element ref="typeparamref" />
154       </xs:choice>
155       <xs:attribute ref="subset" />
156       <xs:attribute ref="type" />
157     </xs:complexType>
158   </xs:element>
159
160   <xs:element name="c">
161     <xs:complexType mixed="true">
162       <xs:choice minOccurs="0" maxOccurs="unbounded">
163         <xs:element ref="code" />
164         <xs:element ref="para" />
165         <xs:element ref="paramref" />
166         <xs:element ref="see" />
167         <xs:element ref="typeparamref" />
168       </xs:choice>
169     </xs:complexType>
170   </xs:element>
171
172   <xs:element name="class">
173     <xs:complexType>
174       <xs:choice minOccurs="0" maxOccurs="unbounded">
175         <xs:element ref="constructor" />
176         <xs:element ref="property" />
177         <xs:element ref="method" />
178         <xs:element ref="field" />
179         <xs:element ref="operator" />
180         <xs:element ref="event" />
181         <xs:element ref="enum" />
182         <xs:element ref="class" />
183         <xs:element ref="struct" />
184         <xs:element ref="interface" />
185         <xs:element ref="delegate" />
186       </xs:choice>
187       <xs:attribute ref="name" />
188       <xs:attribute ref="namespace" />
189     </xs:complexType>
190   </xs:element>
191
192   <xs:element name="code">
193     <xs:complexType>
194       <xs:simpleContent>
195         <xs:extension base="xs:string">
196           <xs:attribute ref="lang" />
197           <xs:attribute ref="language" />
198           <xs:attribute ref="source" />
199           <xs:attribute ref="src" />
200         </xs:extension>
201       </xs:simpleContent>
202     </xs:complexType>
203   </xs:element>
204
205   <xs:element name="constructor">
206     <xs:complexType>
207           <xs:attribute ref="name" />
208           <xs:attribute ref="argnames" />
209     </xs:complexType>
210   </xs:element>
211
212   <xs:element name="delegate">
213     <xs:complexType>
214       <xs:choice maxOccurs="unbounded">
215         <xs:element ref="constructor" />
216         <xs:element ref="method" />
217         <xs:element ref="property" />
218         <xs:element ref="operator" />
219       </xs:choice>
220       <xs:attribute ref="name" />
221       <xs:attribute ref="namespace" />
222     </xs:complexType>
223   </xs:element>
224
225   <xs:element name="description">
226     <xs:complexType mixed="true">
227       <xs:choice minOccurs="0" maxOccurs="unbounded">
228         <xs:element ref="c" />
229         <xs:element ref="block" />
230         <xs:element ref="paramref" />
231         <xs:element ref="para" />
232         <xs:element ref="SPAN" />
233         <xs:element ref="see" />
234         <xs:element ref="sub" />
235         <xs:element ref="typeparamref" />
236       </xs:choice>
237     </xs:complexType>
238   </xs:element>
239
240   <xs:element name="Docs">
241     <xs:complexType>
242       <xs:choice minOccurs="0" maxOccurs="unbounded">
243         <xs:element ref="summary" />
244         <xs:element ref="param" />
245         <xs:element ref="exception" />
246         <xs:element ref="returns" />
247         <xs:element ref="remarks" />
248         <xs:element ref="example" />
249         <xs:element ref="value" />
250         <xs:element ref="permission" />
251         <xs:element ref="altmember" />
252         <xs:element ref="altcompliant" />
253         <xs:element ref="since" />
254         <xs:element ref="threadsafe" />
255         <xs:element ref="typeparam" />
256       </xs:choice>
257     </xs:complexType>
258   </xs:element>
259
260   <xs:element name="enum">
261     <xs:complexType>
262       <xs:choice minOccurs="0" maxOccurs="unbounded">
263         <xs:element ref="field" />
264         <xs:element ref="method" />
265       </xs:choice>
266       <xs:attribute ref="name" />
267       <xs:attribute ref="namespace" />
268     </xs:complexType>
269   </xs:element>
270
271   <xs:element name="event">
272     <xs:complexType>
273           <xs:attribute ref="name" />
274           <xs:attribute ref="inherited" />
275     </xs:complexType>
276   </xs:element>
277
278   <xs:element name="example">
279     <xs:complexType mixed="true">
280       <xs:choice maxOccurs="unbounded">
281         <xs:element ref="format" />
282         <xs:element ref="para" />
283         <xs:element ref="code" />
284         <xs:element ref="c" />
285         <xs:element ref="list" />
286         <xs:element ref="see" />
287       </xs:choice>
288     </xs:complexType>
289   </xs:element>
290
291   <xs:element name="exception">
292     <xs:complexType mixed="true">
293       <xs:choice minOccurs="0" maxOccurs="unbounded">
294         <xs:element ref="block" />
295         <xs:element ref="format" />
296         <xs:element ref="para" />
297         <xs:element ref="paramref" />
298         <xs:element ref="see" />
299         <xs:element ref="SPAN" />
300         <xs:element ref="typeparamref" />
301       </xs:choice>
302       <xs:attribute ref="cref" />
303     </xs:complexType>
304   </xs:element>
305
306   <xs:element name="field">
307     <xs:complexType>
308       <xs:attribute ref="name" />
309       <xs:attribute ref="inherited" />
310     </xs:complexType>
311   </xs:element>
312
313   <xs:element name="format">
314     <xs:complexType>
315       <xs:sequence>
316         <xs:any minOccurs="0" processContents="lax" />
317       </xs:sequence>
318       <xs:attribute ref="type" />
319     </xs:complexType>
320   </xs:element>
321
322   <xs:element name="interface">
323     <xs:complexType>
324       <xs:choice minOccurs="0" maxOccurs="unbounded">
325         <xs:element ref="constructor" />
326         <xs:element ref="property" />
327         <xs:element ref="method" />
328         <xs:element ref="field" />
329         <xs:element ref="event" />
330       </xs:choice>
331       <xs:attribute ref="name" />
332       <xs:attribute ref="namespace" />
333     </xs:complexType>
334   </xs:element>
335
336   <xs:element name="Interface">
337     <xs:complexType>
338       <xs:sequence>
339         <xs:element ref="InterfaceName" />
340         <xs:element ref="Excluded" minOccurs="0" />
341       </xs:sequence>
342     </xs:complexType>
343   </xs:element>
344
345   <xs:element name="Interfaces">
346     <xs:complexType>
347       <xs:sequence>
348         <xs:element ref="Interface" minOccurs="0" maxOccurs="unbounded" />
349       </xs:sequence>
350     </xs:complexType>
351   </xs:element>
352
353   <xs:element name="item">
354     <xs:complexType>
355         <xs:sequence>
356           <xs:element ref="term" minOccurs="1" maxOccurs="1" />
357           <xs:element ref="description" minOccurs="0" maxOccurs="unbounded" />
358         </xs:sequence>
359     </xs:complexType>
360   </xs:element>
361
362   <xs:element name="Libraries">
363     <xs:complexType>
364       <xs:choice minOccurs="0" maxOccurs="unbounded">
365         <xs:element ref="Type" minOccurs = "1" maxOccurs="unbounded" />
366       </xs:choice>
367     </xs:complexType>
368   </xs:element>
369
370   <xs:element name="link">
371     <xs:complexType>
372       <xs:simpleContent>
373         <xs:extension base="xs:string">
374           <xs:attribute ref="location" />
375         </xs:extension>
376       </xs:simpleContent>
377     </xs:complexType>
378   </xs:element>
379
380   <xs:element name="list">
381     <xs:complexType>
382         <xs:sequence>
383           <xs:element ref="listheader" minOccurs="0" maxOccurs="1" />
384           <xs:element ref="item" minOccurs="0" maxOccurs="unbounded" />
385         </xs:sequence>
386         <xs:attribute name="type" type="xs:string" />
387     </xs:complexType>
388   </xs:element>
389
390   <xs:element name="listheader">
391     <xs:complexType>
392       <xs:sequence>
393           <xs:element ref="term" />
394           <xs:element ref="description" maxOccurs="unbounded" />
395       </xs:sequence>
396     </xs:complexType>
397   </xs:element>
398
399   <xs:element name="masterdoc">
400     <xs:complexType>
401        <xs:choice minOccurs="0" maxOccurs="unbounded">
402          <xs:element ref="class" />
403          <xs:element ref="delegate" />
404          <xs:element ref="interface" />
405          <xs:element ref="struct" />
406          <xs:element ref="enum" />
407        </xs:choice>
408        <xs:attribute name="assembly" type="xs:string" />
409     </xs:complexType>
410   </xs:element>
411
412   <xs:element name="MemberSignature">
413     <xs:complexType>
414       <xs:attribute ref="Language" />
415       <xs:attribute ref="Value" />
416     </xs:complexType>
417   </xs:element>
418
419   <xs:element name="Link">
420     <xs:complexType>
421       <xs:attribute ref="Type" use="required" />
422       <xs:attribute name="Member" type="xs:string" use="required" />
423     </xs:complexType>
424   </xs:element>
425
426   <xs:element name="Member">
427     <xs:complexType>
428       <xs:sequence>
429         <xs:element ref="MemberSignature" minOccurs="1" maxOccurs="unbounded" />
430         <xs:element ref="MemberType" maxOccurs="1" />
431         <xs:element ref="AssemblyInfo" minOccurs="0" maxOccurs="1" />
432         <xs:element ref="Attributes" minOccurs="0" maxOccurs="1" />
433         <xs:element ref="ReturnValue" minOccurs="0" maxOccurs="1" />
434         <xs:element ref="TypeParameters" minOccurs="0" maxOccurs="1" />
435         <xs:element ref="Parameters" minOccurs="0" maxOccurs="1" />
436         <xs:element ref="MemberValue" minOccurs="0" maxOccurs="1" />
437         <xs:element ref="Docs" maxOccurs="1" />
438         <xs:element ref="Excluded" minOccurs="0" maxOccurs="1" />
439         <xs:element ref="ExcludedLibrary" minOccurs="0" maxOccurs="unbounded" />
440         <xs:element ref="Link" minOccurs="0" maxOccurs="1" />
441       </xs:sequence>
442       <xs:attribute ref="MemberName" />
443       <xs:attribute ref="Deprecated" />
444     </xs:complexType>
445   </xs:element>
446
447   <xs:element name="Members">
448     <xs:complexType>
449       <xs:sequence>
450         <xs:element ref="Member" minOccurs="0" maxOccurs="unbounded" />
451       </xs:sequence>
452     </xs:complexType>
453   </xs:element>
454
455   <xs:element name="method">
456     <xs:complexType>
457       <xs:attribute ref="name" />
458       <xs:attribute ref="argnames" />
459       <xs:attribute ref="inherited" />
460       <xs:attribute ref="returntype" />
461     </xs:complexType>
462   </xs:element>
463
464   <xs:element name="Namespace">
465     <xs:complexType>
466       <xs:sequence>
467         <xs:element ref="Docs" maxOccurs="1" />
468       </xs:sequence>
469       <xs:attribute ref="Name" />
470       <xs:attribute ref="FullName" />
471       <xs:attribute ref="FullNameSP" />
472       <xs:attribute ref="Maintainer" />
473     </xs:complexType>
474   </xs:element>
475
476   <xs:element name="operator">
477     <xs:complexType>
478       <xs:attribute ref="name" />
479       <xs:attribute ref="argnames" />
480     </xs:complexType>
481   </xs:element>
482
483   <xs:element name="para">
484     <xs:complexType mixed="true">
485       <xs:choice minOccurs="0" maxOccurs="unbounded">
486         <xs:element ref="block" />
487         <xs:element ref="format" />
488         <xs:element ref="see" />
489         <xs:element ref="list" />
490         <xs:element ref="link" />
491         <xs:element ref="ul" />
492         <xs:element ref="paramref" />
493         <xs:element ref="c" />
494         <xs:element ref="onequarter" />
495         <xs:element ref="sub" />
496         <xs:element ref="sup" />
497         <xs:element ref="SPAN" />
498         <xs:element ref="typeparamref" />
499       </xs:choice>
500     </xs:complexType>
501   </xs:element>
502
503   <xs:element name="param">
504     <xs:complexType mixed="true">
505       <xs:choice minOccurs="0" maxOccurs="unbounded">
506         <xs:element ref="c" />
507         <xs:element ref="format" />
508         <xs:element ref="see" />
509         <xs:element ref="block" />
510         <xs:element ref="paramref" />
511         <xs:element ref="para" />
512         <xs:element ref="SPAN" />
513         <xs:element ref="typeparamref" />
514       </xs:choice>
515       <xs:attribute ref="name" use="required" />
516     </xs:complexType>
517   </xs:element>
518
519   <xs:element name="paramref">
520     <xs:complexType>
521       <xs:attribute ref="name" use="required" />
522     </xs:complexType>
523   </xs:element>
524
525   <xs:element name="Parameter">
526     <xs:complexType>
527       <xs:sequence>
528         <xs:element ref="Attributes" minOccurs="0" maxOccurs="1" />
529       </xs:sequence>
530       <xs:attribute ref="Name" />
531       <xs:attribute ref="Type" />
532       <xs:attribute ref="RefType" />
533     </xs:complexType>
534   </xs:element>
535
536   <xs:element name="Parameters">
537     <xs:complexType>
538       <xs:sequence>
539         <xs:element ref="Parameter" minOccurs="0" maxOccurs="unbounded" />
540       </xs:sequence>
541     </xs:complexType>
542   </xs:element>
543
544   <xs:element name="permission">
545     <xs:complexType mixed="true">
546       <xs:choice minOccurs="0" maxOccurs="unbounded">
547         <xs:element ref="block" />
548         <xs:element ref="format" />
549         <xs:element ref="para" />
550         <xs:element ref="paramref" />
551         <xs:element ref="see" />
552         <xs:element ref="typeparamref" />
553       </xs:choice>
554       <xs:attribute ref="cref" />
555     </xs:complexType>
556   </xs:element>
557
558   <xs:element name="property">
559     <xs:complexType>
560       <xs:attribute ref="name" />
561       <xs:attribute ref="inherited" />
562       <xs:attribute ref="propertytype" />
563     </xs:complexType>
564   </xs:element>
565
566   <xs:element name="remarks">
567     <xs:complexType mixed="true">
568       <xs:choice minOccurs="0" maxOccurs="unbounded">
569         <xs:element ref="block" />
570         <xs:element ref="c" />
571         <xs:element ref="code" />
572         <xs:element ref="format" />
573         <xs:element ref="para" />
574         <xs:element ref="paramref" />
575         <xs:element ref="see" />
576         <xs:element ref="ul" />
577         <xs:element ref="example" />
578         <xs:element ref="list" />
579         <xs:element ref="SPAN" />
580         <xs:element ref="typeparamref" />
581       </xs:choice>
582     </xs:complexType>
583   </xs:element>
584
585   <xs:element name="returns">
586     <xs:complexType mixed="true">
587       <xs:choice minOccurs="0" maxOccurs="unbounded">
588         <xs:element ref="format" />
589         <xs:element ref="list" />
590         <xs:element ref="para" />
591         <xs:element ref="paramref" />
592         <xs:element ref="see" />
593         <xs:element ref="typeparamref" />
594         <xs:element ref="ul" />
595       </xs:choice>
596     </xs:complexType>
597   </xs:element>
598
599   <xs:element name="ReturnValue">
600     <xs:complexType>
601       <xs:sequence>
602         <xs:element ref="ReturnType" minOccurs="0" maxOccurs="1" />
603         <xs:element ref="Attributes" minOccurs="0" />
604       </xs:sequence>
605     </xs:complexType>
606   </xs:element>
607
608   <xs:element name="see">
609     <xs:complexType>
610       <xs:attribute ref="cref" />
611       <xs:attribute ref="langword"  />
612       <xs:attribute ref="qualify"  />
613     </xs:complexType>
614   </xs:element>
615
616   <xs:element name="since">
617     <xs:complexType>
618       <xs:attribute ref="version" />
619     </xs:complexType>
620   </xs:element>
621
622   <xs:element name="SPAN">
623     <xs:complexType mixed="true">
624       <xs:choice minOccurs="0" maxOccurs="unbounded">
625         <xs:element ref="block" />
626         <xs:element ref="format" />
627         <xs:element ref="para" />
628         <xs:element ref="paramref" />
629         <xs:element ref="see" />
630         <xs:element ref="SPAN" />
631         <xs:element ref="typeparamref" />
632       </xs:choice>
633       <xs:attribute ref="version" />
634     </xs:complexType>
635   </xs:element>
636
637   <xs:element name="struct">
638     <xs:complexType>
639       <xs:choice minOccurs="0" maxOccurs="unbounded">
640         <xs:element ref="constructor" />
641         <xs:element ref="property" />
642         <xs:element ref="method" />
643         <xs:element ref="field" />
644         <xs:element ref="operator" />
645         <xs:element ref="struct" />
646         <xs:element ref="class" />
647       </xs:choice>
648       <xs:attribute ref="name" />
649       <xs:attribute ref="namespace" />
650     </xs:complexType>
651   </xs:element>
652
653   <xs:element name="sub">
654     <xs:complexType mixed="true">
655       <xs:choice minOccurs="0" maxOccurs="unbounded">
656         <xs:element ref="paramref" />
657         <xs:element ref="typeparamref" />
658       </xs:choice>
659     </xs:complexType>
660   </xs:element>
661
662   <xs:element name="subscript">
663     <xs:complexType mixed="true">
664       <xs:attribute name="term" type="xs:string" use="required" />
665     </xs:complexType>
666   </xs:element>
667
668   <xs:element name="summary">
669     <xs:complexType mixed="true">
670       <xs:choice minOccurs="0" maxOccurs="unbounded">
671         <xs:element ref="block" />
672         <xs:element ref="c" />
673         <xs:element ref="format" />
674         <xs:element ref="para" />
675         <xs:element ref="paramref" />
676         <xs:element ref="see" />
677         <xs:element ref="typeparamref" />
678         <xs:element ref="ul" />
679         <xs:element ref="list" />
680       </xs:choice>
681     </xs:complexType>
682   </xs:element>
683
684   <xs:element name="sup">
685     <xs:complexType mixed="true">
686       <xs:choice minOccurs="0" maxOccurs="unbounded">
687         <xs:element ref="paramref" />
688         <xs:element ref="typeparamref" />
689       </xs:choice>
690     </xs:complexType>
691   </xs:element>
692
693   <xs:element name="term">
694     <xs:complexType mixed="true">
695         <xs:choice minOccurs="0" maxOccurs="unbounded">
696           <xs:element ref="block" />
697           <xs:element ref="c" />
698           <xs:element ref="format" />
699           <xs:element ref="see" />
700           <xs:element ref="para"  />
701           <xs:element ref="paramref" />
702           <xs:element ref="sup" />
703           <xs:element ref="typeparamref" />
704         </xs:choice>
705     </xs:complexType>
706   </xs:element>
707
708   <xs:element name="threadsafe">
709     <xs:complexType>
710      <xs:sequence>
711        <xs:element ref="para" minOccurs="1" />
712      </xs:sequence>
713     </xs:complexType>
714   </xs:element>
715
716   <xs:element name="ThreadingSafetyStatement">
717     <xs:complexType mixed="true">
718      <xs:sequence>
719        <xs:element ref="link" minOccurs="0" />
720      </xs:sequence>
721     </xs:complexType>
722   </xs:element>
723
724   <xs:element name="ThreadSafetyStatement">
725     <xs:complexType mixed="true">
726      <xs:sequence>
727        <xs:element ref="link" minOccurs="0" />
728      </xs:sequence>
729     </xs:complexType>
730   </xs:element>
731
732   <xs:element name="Type">
733     <xs:complexType>
734       <xs:choice maxOccurs="unbounded">
735         <xs:element ref="TypeSignature" minOccurs="1" />
736         <xs:element ref="MemberOfLibrary" minOccurs="0" />
737         <xs:element ref="AssemblyInfo" minOccurs="1" />
738         <xs:element ref="TypeParameters" minOccurs="0" maxOccurs="1" />
739         <xs:element ref="ThreadingSafetyStatement" minOccurs="0" />
740         <xs:element ref="ThreadSafetyStatement" minOccurs="0" />
741         <xs:element ref="Docs" minOccurs="1" />
742         <xs:element ref="Base" minOccurs="1" />
743         <xs:element ref="Interfaces" minOccurs="1" />
744         <xs:element ref="Attributes" minOccurs="1" />
745         <xs:element ref="Members" minOccurs="1" />
746         <xs:element ref="Parameters" minOccurs="0" />
747         <xs:element ref="ReturnValue" minOccurs="0" />
748         <xs:element ref="TypeExcluded" minOccurs="0" />
749       </xs:choice>
750       <xs:attribute ref="Name" use="required" />
751       <xs:attribute ref="FullName" use="required" />
752       <xs:attribute ref="FullNameSP" />
753       <xs:attribute ref="Maintainer" />
754     </xs:complexType>
755   </xs:element>
756
757   <xs:element name="Types">
758     <xs:complexType>
759       <xs:choice minOccurs="1" maxOccurs="unbounded">
760         <xs:element ref="Type" />
761       </xs:choice>
762       <xs:attribute ref="Library" use="required" />
763     </xs:complexType>
764   </xs:element>
765
766   <xs:element name="typeparam">
767     <xs:complexType mixed="true">
768       <xs:choice minOccurs="0" maxOccurs="unbounded">
769         <xs:element ref="block" />
770         <xs:element ref="c" />
771         <xs:element ref="format" />
772         <xs:element ref="para" />
773         <xs:element ref="paramref" />
774         <xs:element ref="see" />
775         <xs:element ref="typeparamref" />
776       </xs:choice>
777       <xs:attribute ref="name" use="required" />
778     </xs:complexType>
779   </xs:element>
780
781   <xs:element name="typeparamref">
782     <xs:complexType>
783       <xs:attribute ref="name" use="required" />
784     </xs:complexType>
785   </xs:element>
786
787   <xs:element name="TypeParameters">
788     <xs:complexType>
789       <xs:choice maxOccurs="unbounded">
790         <xs:element ref="TypeParameter" />
791       </xs:choice>
792     </xs:complexType>
793   </xs:element>
794
795   <xs:element name="TypeParameter">
796     <xs:complexType mixed="true">
797       <xs:choice minOccurs="0" maxOccurs="unbounded">
798         <xs:element ref="Attributes" />
799         <xs:element ref="Constraints" />
800       </xs:choice>
801       <xs:attribute ref="Name" use="required" />
802     </xs:complexType>
803   </xs:element>
804
805   <xs:element name="Constraints">
806     <xs:complexType mixed="true">
807       <xs:choice minOccurs="0" maxOccurs="unbounded">
808         <xs:element name="ParameterAttribute" type="xs:string" />
809         <xs:element ref="BaseTypeName" />
810         <xs:element ref="InterfaceName" />
811       </xs:choice>
812     </xs:complexType>
813   </xs:element>
814
815   <xs:element name="TypeSignature">
816     <xs:complexType>
817       <xs:attribute ref="Language" use="required" />
818       <xs:attribute ref="Value" use="required" />
819       <xs:attribute ref="Maintainer" />
820     </xs:complexType>
821   </xs:element>
822
823   <xs:element name="ul">
824     <xs:complexType>
825       <xs:sequence>
826         <xs:element ref="li" minOccurs="1" maxOccurs="unbounded" />
827       </xs:sequence>
828     </xs:complexType>
829   </xs:element>
830
831   <xs:element name="value">
832     <xs:complexType mixed="true">
833       <xs:choice minOccurs="0" maxOccurs="unbounded">
834         <xs:element ref="block" />
835         <xs:element ref="c" />
836         <xs:element ref="para" />
837         <xs:element ref="paramref" />
838         <xs:element ref="see" />
839         <xs:element ref="typeparamref" />
840         <xs:element ref="ul" />
841         <xs:element ref="example" />
842         <xs:element ref="list" />
843       </xs:choice>
844     </xs:complexType>
845   </xs:element>
846
847   <!-- 
848     index.xml & namespace-name.xml support 
849     -->
850
851   <!-- define attributes -->
852   <xs:attribute name="Version" type="xs:string" />
853   <xs:attribute name="DisplayName" type="xs:string" />
854   <xs:attribute name="Kind" type="xs:string" />
855
856   <!-- define simple elements -->
857   <xs:element name="Title" type="xs:string" />
858
859   <!-- define complex elements -->
860   <xs:element name="Assemblies">
861     <xs:complexType>
862       <xs:choice minOccurs="0" maxOccurs="unbounded">
863         <xs:element ref="Assembly" />
864       </xs:choice>
865     </xs:complexType>
866   </xs:element>
867
868   <xs:element name="Assembly">
869     <xs:complexType>
870       <xs:choice minOccurs="0" maxOccurs="unbounded">
871         <xs:element ref="Attributes" />
872       </xs:choice>
873       <xs:attribute ref="Name" />
874       <xs:attribute ref="Version" />
875     </xs:complexType>
876   </xs:element>
877
878   <xs:element name="Copyright">
879     <xs:complexType mixed="true">
880       <xs:choice minOccurs="0" maxOccurs="unbounded">
881         <xs:element ref="block" />
882         <xs:element ref="code" />
883         <xs:element ref="example" />
884         <xs:element ref="list" />
885         <xs:element ref="para" />
886         <xs:element ref="paramref" />
887         <xs:element ref="see" />
888         <xs:element ref="typeparamref" />
889         <xs:element ref="ul" />
890       </xs:choice>
891     </xs:complexType>
892   </xs:element>
893
894   <xs:element name="ExtensionMethods">
895     <xs:complexType>
896       <xs:sequence>
897         <xs:element ref="ExtensionMethod" minOccurs="0" maxOccurs="unbounded" />
898       </xs:sequence>
899     </xs:complexType>
900   </xs:element>
901
902   <xs:element name="ExtensionMethod">
903     <xs:complexType>
904       <xs:sequence>
905         <xs:element name="Targets" minOccurs="1" maxOccurs="1">
906           <xs:complexType>
907             <xs:choice minOccurs="1" maxOccurs="unbounded">
908               <xs:element name="Target">
909                 <xs:complexType>
910                   <xs:attribute ref="Type" use="required" />
911                 </xs:complexType>
912               </xs:element>
913             </xs:choice>
914           </xs:complexType>
915         </xs:element>
916         <xs:element ref="Member" minOccurs="1" maxOccurs="1" />
917       </xs:sequence>
918     </xs:complexType>
919   </xs:element>
920
921   <xs:element name="Overview">
922     <xs:complexType>
923       <xs:choice minOccurs="0" maxOccurs="unbounded">
924         <xs:element ref="Assemblies" />
925         <xs:element ref="Copyright" />
926         <xs:element ref="Remarks" />
927         <xs:element ref="Title" />
928         <xs:element name="Types">
929           <xs:complexType>
930             <xs:choice minOccurs="0" maxOccurs="unbounded">
931               <xs:element name="Namespace">
932                 <xs:complexType>
933                   <xs:choice minOccurs="0" maxOccurs="unbounded">
934                     <xs:element name="Type">
935                       <xs:complexType>
936                         <xs:attribute ref="Name" use="required" />
937                         <xs:attribute ref="DisplayName" />
938                         <xs:attribute ref="Kind" />
939                       </xs:complexType>
940                     </xs:element>
941                   </xs:choice>
942                   <xs:attribute ref="Name" />
943                 </xs:complexType>
944               </xs:element>
945             </xs:choice>
946           </xs:complexType>
947         </xs:element>
948         <xs:element ref="ExtensionMethods" />
949       </xs:choice>
950     </xs:complexType>
951   </xs:element>
952
953   <xs:element name="Remarks">
954     <xs:complexType mixed="true">
955       <xs:choice minOccurs="0" maxOccurs="unbounded">
956         <xs:element ref="block" />
957         <xs:element ref="code" />
958         <xs:element ref="example" />
959         <xs:element ref="list" />
960         <xs:element ref="para" />
961         <xs:element ref="paramref" />
962         <xs:element ref="typeparamref" />
963         <xs:element ref="see" />
964         <xs:element ref="ul" />
965       </xs:choice>
966     </xs:complexType>
967   </xs:element>
968
969 </xs:schema>
970