2008-12-08 Atsushi Enomoto <atsushi@ximian.com>
[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="list" />
147         <xs:element ref="para" />
148         <xs:element ref="paramref" />
149         <xs:element ref="see" />
150         <xs:element ref="subscript" />
151         <xs:element ref="sup" />
152         <xs:element ref="typeparamref" />
153       </xs:choice>
154       <xs:attribute ref="subset" />
155       <xs:attribute ref="type" />
156     </xs:complexType>
157   </xs:element>
158
159   <xs:element name="c">
160     <xs:complexType mixed="true">
161       <xs:choice minOccurs="0" maxOccurs="unbounded">
162         <xs:element ref="code" />
163         <xs:element ref="para" />
164         <xs:element ref="paramref" />
165         <xs:element ref="see" />
166         <xs:element ref="typeparamref" />
167       </xs:choice>
168     </xs:complexType>
169   </xs:element>
170
171   <xs:element name="class">
172     <xs:complexType>
173       <xs:choice minOccurs="0" maxOccurs="unbounded">
174         <xs:element ref="constructor" />
175         <xs:element ref="property" />
176         <xs:element ref="method" />
177         <xs:element ref="field" />
178         <xs:element ref="operator" />
179         <xs:element ref="event" />
180         <xs:element ref="enum" />
181         <xs:element ref="class" />
182         <xs:element ref="struct" />
183         <xs:element ref="interface" />
184         <xs:element ref="delegate" />
185       </xs:choice>
186       <xs:attribute ref="name" />
187       <xs:attribute ref="namespace" />
188     </xs:complexType>
189   </xs:element>
190
191   <xs:element name="code">
192     <xs:complexType>
193       <xs:simpleContent>
194         <xs:extension base="xs:string">
195           <xs:attribute ref="lang" />
196           <xs:attribute ref="language" />
197           <xs:attribute ref="source" />
198           <xs:attribute ref="src" />
199         </xs:extension>
200       </xs:simpleContent>
201     </xs:complexType>
202   </xs:element>
203
204   <xs:element name="constructor">
205     <xs:complexType>
206           <xs:attribute ref="name" />
207           <xs:attribute ref="argnames" />
208     </xs:complexType>
209   </xs:element>
210
211   <xs:element name="delegate">
212     <xs:complexType>
213       <xs:choice maxOccurs="unbounded">
214         <xs:element ref="constructor" />
215         <xs:element ref="method" />
216         <xs:element ref="property" />
217         <xs:element ref="operator" />
218       </xs:choice>
219       <xs:attribute ref="name" />
220       <xs:attribute ref="namespace" />
221     </xs:complexType>
222   </xs:element>
223
224   <xs:element name="description">
225     <xs:complexType mixed="true">
226       <xs:choice minOccurs="0" maxOccurs="unbounded">
227         <xs:element ref="c" />
228         <xs:element ref="block" />
229         <xs:element ref="paramref" />
230         <xs:element ref="para" />
231         <xs:element ref="SPAN" />
232         <xs:element ref="see" />
233         <xs:element ref="sub" />
234         <xs:element ref="typeparamref" />
235       </xs:choice>
236     </xs:complexType>
237   </xs:element>
238
239   <xs:element name="Docs">
240     <xs:complexType>
241       <xs:choice minOccurs="0" maxOccurs="unbounded">
242         <xs:element ref="summary" />
243         <xs:element ref="param" />
244         <xs:element ref="exception" />
245         <xs:element ref="returns" />
246         <xs:element ref="remarks" />
247         <xs:element ref="example" />
248         <xs:element ref="value" />
249         <xs:element ref="permission" />
250         <xs:element ref="altmember" />
251         <xs:element ref="altcompliant" />
252         <xs:element ref="since" />
253         <xs:element ref="threadsafe" />
254         <xs:element ref="typeparam" />
255       </xs:choice>
256     </xs:complexType>
257   </xs:element>
258
259   <xs:element name="enum">
260     <xs:complexType>
261       <xs:choice minOccurs="0" maxOccurs="unbounded">
262         <xs:element ref="field" />
263         <xs:element ref="method" />
264       </xs:choice>
265       <xs:attribute ref="name" />
266       <xs:attribute ref="namespace" />
267     </xs:complexType>
268   </xs:element>
269
270   <xs:element name="event">
271     <xs:complexType>
272           <xs:attribute ref="name" />
273           <xs:attribute ref="inherited" />
274     </xs:complexType>
275   </xs:element>
276
277   <xs:element name="example">
278     <xs:complexType mixed="true">
279       <xs:choice maxOccurs="unbounded">
280         <xs:element ref="para" />
281         <xs:element ref="code" />
282         <xs:element ref="c" />
283         <xs:element ref="list" />
284         <xs:element ref="see" />
285       </xs:choice>
286     </xs:complexType>
287   </xs:element>
288
289   <xs:element name="exception">
290     <xs:complexType mixed="true">
291       <xs:choice minOccurs="0" maxOccurs="unbounded">
292         <xs:element ref="block" />
293         <xs:element ref="para" />
294         <xs:element ref="paramref" />
295         <xs:element ref="see" />
296         <xs:element ref="SPAN" />
297         <xs:element ref="typeparamref" />
298       </xs:choice>
299       <xs:attribute ref="cref" />
300     </xs:complexType>
301   </xs:element>
302
303   <xs:element name="field">
304     <xs:complexType>
305       <xs:attribute ref="name" />
306       <xs:attribute ref="inherited" />
307     </xs:complexType>
308   </xs:element>
309
310   <xs:element name="interface">
311     <xs:complexType>
312       <xs:choice minOccurs="0" maxOccurs="unbounded">
313         <xs:element ref="constructor" />
314         <xs:element ref="property" />
315         <xs:element ref="method" />
316         <xs:element ref="field" />
317         <xs:element ref="event" />
318       </xs:choice>
319       <xs:attribute ref="name" />
320       <xs:attribute ref="namespace" />
321     </xs:complexType>
322   </xs:element>
323
324   <xs:element name="Interface">
325     <xs:complexType>
326       <xs:sequence>
327         <xs:element ref="InterfaceName" />
328         <xs:element ref="Excluded" minOccurs="0" />
329       </xs:sequence>
330     </xs:complexType>
331   </xs:element>
332
333   <xs:element name="Interfaces">
334     <xs:complexType>
335       <xs:sequence>
336         <xs:element ref="Interface" minOccurs="0" maxOccurs="unbounded" />
337       </xs:sequence>
338     </xs:complexType>
339   </xs:element>
340
341   <xs:element name="item">
342     <xs:complexType>
343         <xs:sequence>
344           <xs:element ref="term" minOccurs="1" maxOccurs="1" />
345           <xs:element ref="description" minOccurs="0" maxOccurs="unbounded" />
346         </xs:sequence>
347     </xs:complexType>
348   </xs:element>
349
350   <xs:element name="Libraries">
351     <xs:complexType>
352       <xs:choice minOccurs="0" maxOccurs="unbounded">
353         <xs:element ref="Type" minOccurs = "1" maxOccurs="unbounded" />
354       </xs:choice>
355     </xs:complexType>
356   </xs:element>
357
358   <xs:element name="link">
359     <xs:complexType>
360       <xs:simpleContent>
361         <xs:extension base="xs:string">
362           <xs:attribute ref="location" />
363         </xs:extension>
364       </xs:simpleContent>
365     </xs:complexType>
366   </xs:element>
367
368   <xs:element name="list">
369     <xs:complexType>
370         <xs:sequence>
371           <xs:element ref="listheader" minOccurs="0" maxOccurs="1" />
372           <xs:element ref="item" minOccurs="0" maxOccurs="unbounded" />
373         </xs:sequence>
374         <xs:attribute name="type" type="xs:string" />
375     </xs:complexType>
376   </xs:element>
377
378   <xs:element name="listheader">
379     <xs:complexType>
380       <xs:sequence>
381           <xs:element ref="term" />
382           <xs:element ref="description" maxOccurs="unbounded" />
383       </xs:sequence>
384     </xs:complexType>
385   </xs:element>
386
387   <xs:element name="masterdoc">
388     <xs:complexType>
389        <xs:choice minOccurs="0" maxOccurs="unbounded">
390          <xs:element ref="class" />
391          <xs:element ref="delegate" />
392          <xs:element ref="interface" />
393          <xs:element ref="struct" />
394          <xs:element ref="enum" />
395        </xs:choice>
396        <xs:attribute name="assembly" type="xs:string" />
397     </xs:complexType>
398   </xs:element>
399
400   <xs:element name="MemberSignature">
401     <xs:complexType>
402       <xs:attribute ref="Language" />
403       <xs:attribute ref="Value" />
404     </xs:complexType>
405   </xs:element>
406
407   <xs:element name="Link">
408     <xs:complexType>
409       <xs:attribute ref="Type" use="required" />
410       <xs:attribute name="Member" type="xs:string" use="required" />
411     </xs:complexType>
412   </xs:element>
413
414   <xs:element name="Member">
415     <xs:complexType>
416       <xs:sequence>
417         <xs:element ref="MemberSignature" minOccurs="1" maxOccurs="unbounded" />
418         <xs:element ref="MemberType" maxOccurs="1" />
419         <xs:element ref="AssemblyInfo" minOccurs="0" maxOccurs="1" />
420         <xs:element ref="Attributes" minOccurs="0" maxOccurs="1" />
421         <xs:element ref="ReturnValue" minOccurs="0" maxOccurs="1" />
422         <xs:element ref="TypeParameters" minOccurs="0" maxOccurs="1" />
423         <xs:element ref="Parameters" minOccurs="0" maxOccurs="1" />
424         <xs:element ref="MemberValue" minOccurs="0" maxOccurs="1" />
425         <xs:element ref="Docs" maxOccurs="1" />
426         <xs:element ref="Excluded" minOccurs="0" maxOccurs="1" />
427         <xs:element ref="ExcludedLibrary" minOccurs="0" maxOccurs="unbounded" />
428         <xs:element ref="Link" minOccurs="0" maxOccurs="1" />
429       </xs:sequence>
430       <xs:attribute ref="MemberName" />
431       <xs:attribute ref="Deprecated" />
432     </xs:complexType>
433   </xs:element>
434
435   <xs:element name="Members">
436     <xs:complexType>
437       <xs:sequence>
438         <xs:element ref="Member" minOccurs="0" maxOccurs="unbounded" />
439       </xs:sequence>
440     </xs:complexType>
441   </xs:element>
442
443   <xs:element name="method">
444     <xs:complexType>
445       <xs:attribute ref="name" />
446       <xs:attribute ref="argnames" />
447       <xs:attribute ref="inherited" />
448       <xs:attribute ref="returntype" />
449     </xs:complexType>
450   </xs:element>
451
452   <xs:element name="Namespace">
453     <xs:complexType>
454       <xs:sequence>
455         <xs:element ref="Docs" maxOccurs="1" />
456       </xs:sequence>
457       <xs:attribute ref="Name" />
458       <xs:attribute ref="FullName" />
459       <xs:attribute ref="FullNameSP" />
460       <xs:attribute ref="Maintainer" />
461     </xs:complexType>
462   </xs:element>
463
464   <xs:element name="operator">
465     <xs:complexType>
466       <xs:attribute ref="name" />
467       <xs:attribute ref="argnames" />
468     </xs:complexType>
469   </xs:element>
470
471   <xs:element name="para">
472     <xs:complexType mixed="true">
473       <xs:choice minOccurs="0" maxOccurs="unbounded">
474         <xs:element ref="block" />
475         <xs:element ref="see" />
476         <xs:element ref="list" />
477         <xs:element ref="link" />
478         <xs:element ref="ul" />
479         <xs:element ref="paramref" />
480         <xs:element ref="c" />
481         <xs:element ref="onequarter" />
482         <xs:element ref="sub" />
483         <xs:element ref="sup" />
484         <xs:element ref="SPAN" />
485         <xs:element ref="typeparamref" />
486       </xs:choice>
487     </xs:complexType>
488   </xs:element>
489
490   <xs:element name="param">
491     <xs:complexType mixed="true">
492       <xs:choice minOccurs="0" maxOccurs="unbounded">
493         <xs:element ref="c" />
494         <xs:element ref="see" />
495         <xs:element ref="block" />
496         <xs:element ref="paramref" />
497         <xs:element ref="para" />
498         <xs:element ref="SPAN" />
499         <xs:element ref="typeparamref" />
500       </xs:choice>
501       <xs:attribute ref="name" use="required" />
502     </xs:complexType>
503   </xs:element>
504
505   <xs:element name="paramref">
506     <xs:complexType>
507       <xs:attribute ref="name" use="required" />
508     </xs:complexType>
509   </xs:element>
510
511   <xs:element name="Parameter">
512     <xs:complexType>
513       <xs:sequence>
514         <xs:element ref="Attributes" minOccurs="0" maxOccurs="1" />
515       </xs:sequence>
516       <xs:attribute ref="Name" />
517       <xs:attribute ref="Type" />
518       <xs:attribute ref="RefType" />
519     </xs:complexType>
520   </xs:element>
521
522   <xs:element name="Parameters">
523     <xs:complexType>
524       <xs:sequence>
525         <xs:element ref="Parameter" minOccurs="0" maxOccurs="unbounded" />
526       </xs:sequence>
527     </xs:complexType>
528   </xs:element>
529
530   <xs:element name="permission">
531     <xs:complexType mixed="true">
532       <xs:choice minOccurs="0" maxOccurs="unbounded">
533         <xs:element ref="block" />
534         <xs:element ref="para" />
535         <xs:element ref="paramref" />
536         <xs:element ref="see" />
537         <xs:element ref="typeparamref" />
538       </xs:choice>
539       <xs:attribute ref="cref" />
540     </xs:complexType>
541   </xs:element>
542
543   <xs:element name="property">
544     <xs:complexType>
545       <xs:attribute ref="name" />
546       <xs:attribute ref="inherited" />
547       <xs:attribute ref="propertytype" />
548     </xs:complexType>
549   </xs:element>
550
551   <xs:element name="remarks">
552     <xs:complexType mixed="true">
553       <xs:choice minOccurs="0" maxOccurs="unbounded">
554         <xs:element ref="block" />
555         <xs:element ref="c" />
556         <xs:element ref="code" />
557         <xs:element ref="para" />
558         <xs:element ref="paramref" />
559         <xs:element ref="see" />
560         <xs:element ref="ul" />
561         <xs:element ref="example" />
562         <xs:element ref="list" />
563         <xs:element ref="SPAN" />
564         <xs:element ref="typeparamref" />
565       </xs:choice>
566     </xs:complexType>
567   </xs:element>
568
569   <xs:element name="returns">
570     <xs:complexType mixed="true">
571       <xs:choice minOccurs="0" maxOccurs="unbounded">
572         <xs:element ref="list" />
573         <xs:element ref="para" />
574         <xs:element ref="paramref" />
575         <xs:element ref="see" />
576         <xs:element ref="typeparamref" />
577         <xs:element ref="ul" />
578       </xs:choice>
579     </xs:complexType>
580   </xs:element>
581
582   <xs:element name="ReturnValue">
583     <xs:complexType>
584       <xs:sequence>
585         <xs:element ref="ReturnType" minOccurs="0" maxOccurs="1" />
586         <xs:element ref="Attributes" minOccurs="0" />
587       </xs:sequence>
588     </xs:complexType>
589   </xs:element>
590
591   <xs:element name="see">
592     <xs:complexType>
593       <xs:attribute ref="cref" />
594       <xs:attribute ref="langword"  />
595       <xs:attribute ref="qualify"  />
596     </xs:complexType>
597   </xs:element>
598
599   <xs:element name="since">
600     <xs:complexType>
601       <xs:attribute ref="version" />
602     </xs:complexType>
603   </xs:element>
604
605   <xs:element name="SPAN">
606     <xs:complexType mixed="true">
607       <xs:choice minOccurs="0" maxOccurs="unbounded">
608         <xs:element ref="block" />
609         <xs:element ref="para" />
610         <xs:element ref="paramref" />
611         <xs:element ref="see" />
612         <xs:element ref="SPAN" />
613         <xs:element ref="typeparamref" />
614       </xs:choice>
615       <xs:attribute ref="version" />
616     </xs:complexType>
617   </xs:element>
618
619   <xs:element name="struct">
620     <xs:complexType>
621       <xs:choice minOccurs="0" maxOccurs="unbounded">
622         <xs:element ref="constructor" />
623         <xs:element ref="property" />
624         <xs:element ref="method" />
625         <xs:element ref="field" />
626         <xs:element ref="operator" />
627         <xs:element ref="struct" />
628         <xs:element ref="class" />
629       </xs:choice>
630       <xs:attribute ref="name" />
631       <xs:attribute ref="namespace" />
632     </xs:complexType>
633   </xs:element>
634
635   <xs:element name="sub">
636     <xs:complexType mixed="true">
637       <xs:choice minOccurs="0" maxOccurs="unbounded">
638         <xs:element ref="paramref" />
639         <xs:element ref="typeparamref" />
640       </xs:choice>
641     </xs:complexType>
642   </xs:element>
643
644   <xs:element name="subscript">
645     <xs:complexType mixed="true">
646       <xs:attribute name="term" type="xs:string" use="required" />
647     </xs:complexType>
648   </xs:element>
649
650   <xs:element name="summary">
651     <xs:complexType mixed="true">
652       <xs:choice minOccurs="0" maxOccurs="unbounded">
653         <xs:element ref="block" />
654         <xs:element ref="c" />
655         <xs:element ref="para" />
656         <xs:element ref="paramref" />
657         <xs:element ref="see" />
658         <xs:element ref="typeparamref" />
659         <xs:element ref="ul" />
660         <xs:element ref="list" />
661       </xs:choice>
662     </xs:complexType>
663   </xs:element>
664
665   <xs:element name="sup">
666     <xs:complexType mixed="true">
667       <xs:choice minOccurs="0" maxOccurs="unbounded">
668         <xs:element ref="paramref" />
669         <xs:element ref="typeparamref" />
670       </xs:choice>
671     </xs:complexType>
672   </xs:element>
673
674   <xs:element name="term">
675     <xs:complexType mixed="true">
676         <xs:choice minOccurs="0" maxOccurs="unbounded">
677           <xs:element ref="block" />
678           <xs:element ref="c" />
679           <xs:element ref="see" />
680           <xs:element ref="para"  />
681           <xs:element ref="paramref" />
682           <xs:element ref="sup" />
683           <xs:element ref="typeparamref" />
684         </xs:choice>
685     </xs:complexType>
686   </xs:element>
687
688   <xs:element name="threadsafe">
689     <xs:complexType>
690      <xs:sequence>
691        <xs:element ref="para" minOccurs="1" />
692      </xs:sequence>
693     </xs:complexType>
694   </xs:element>
695
696   <xs:element name="ThreadingSafetyStatement">
697     <xs:complexType mixed="true">
698      <xs:sequence>
699        <xs:element ref="link" minOccurs="0" />
700      </xs:sequence>
701     </xs:complexType>
702   </xs:element>
703
704   <xs:element name="ThreadSafetyStatement">
705     <xs:complexType mixed="true">
706      <xs:sequence>
707        <xs:element ref="link" minOccurs="0" />
708      </xs:sequence>
709     </xs:complexType>
710   </xs:element>
711
712   <xs:element name="Type">
713     <xs:complexType>
714       <xs:choice maxOccurs="unbounded">
715         <xs:element ref="TypeSignature" minOccurs="1" />
716         <xs:element ref="MemberOfLibrary" minOccurs="0" />
717         <xs:element ref="AssemblyInfo" minOccurs="1" />
718         <xs:element ref="TypeParameters" minOccurs="0" maxOccurs="1" />
719         <xs:element ref="ThreadingSafetyStatement" minOccurs="0" />
720         <xs:element ref="ThreadSafetyStatement" minOccurs="0" />
721         <xs:element ref="Docs" minOccurs="1" />
722         <xs:element ref="Base" minOccurs="1" />
723         <xs:element ref="Interfaces" minOccurs="1" />
724         <xs:element ref="Attributes" minOccurs="1" />
725         <xs:element ref="Members" minOccurs="1" />
726         <xs:element ref="Parameters" minOccurs="0" />
727         <xs:element ref="ReturnValue" minOccurs="0" />
728         <xs:element ref="TypeExcluded" minOccurs="0" />
729       </xs:choice>
730       <xs:attribute ref="Name" use="required" />
731       <xs:attribute ref="FullName" use="required" />
732       <xs:attribute ref="FullNameSP" />
733       <xs:attribute ref="Maintainer" />
734     </xs:complexType>
735   </xs:element>
736
737   <xs:element name="Types">
738     <xs:complexType>
739       <xs:choice minOccurs="1" maxOccurs="unbounded">
740         <xs:element ref="Type" />
741       </xs:choice>
742       <xs:attribute ref="Library" use="required" />
743     </xs:complexType>
744   </xs:element>
745
746   <xs:element name="typeparam">
747     <xs:complexType mixed="true">
748       <xs:choice minOccurs="0" maxOccurs="unbounded">
749         <xs:element ref="block" />
750         <xs:element ref="c" />
751         <xs:element ref="para" />
752         <xs:element ref="paramref" />
753         <xs:element ref="see" />
754         <xs:element ref="typeparamref" />
755       </xs:choice>
756       <xs:attribute ref="name" use="required" />
757     </xs:complexType>
758   </xs:element>
759
760   <xs:element name="typeparamref">
761     <xs:complexType>
762       <xs:attribute ref="name" use="required" />
763     </xs:complexType>
764   </xs:element>
765
766   <xs:element name="TypeParameters">
767     <xs:complexType>
768       <xs:choice maxOccurs="unbounded">
769         <xs:element ref="TypeParameter" />
770       </xs:choice>
771     </xs:complexType>
772   </xs:element>
773
774   <xs:element name="TypeParameter">
775     <xs:complexType mixed="true">
776       <xs:choice minOccurs="0" maxOccurs="unbounded">
777         <xs:element ref="Attributes" />
778         <xs:element ref="Constraints" />
779       </xs:choice>
780       <xs:attribute ref="Name" use="required" />
781     </xs:complexType>
782   </xs:element>
783
784   <xs:element name="Constraints">
785     <xs:complexType mixed="true">
786       <xs:choice minOccurs="0" maxOccurs="unbounded">
787         <xs:element name="ParameterAttribute" type="xs:string" />
788         <xs:element ref="BaseTypeName" />
789         <xs:element ref="InterfaceName" />
790       </xs:choice>
791     </xs:complexType>
792   </xs:element>
793
794   <xs:element name="TypeSignature">
795     <xs:complexType>
796       <xs:attribute ref="Language" use="required" />
797       <xs:attribute ref="Value" use="required" />
798       <xs:attribute ref="Maintainer" />
799     </xs:complexType>
800   </xs:element>
801
802   <xs:element name="ul">
803     <xs:complexType>
804       <xs:sequence>
805         <xs:element ref="li" minOccurs="1" maxOccurs="unbounded" />
806       </xs:sequence>
807     </xs:complexType>
808   </xs:element>
809
810   <xs:element name="value">
811     <xs:complexType mixed="true">
812       <xs:choice minOccurs="0" maxOccurs="unbounded">
813         <xs:element ref="block" />
814         <xs:element ref="c" />
815         <xs:element ref="para" />
816         <xs:element ref="paramref" />
817         <xs:element ref="see" />
818         <xs:element ref="typeparamref" />
819         <xs:element ref="ul" />
820         <xs:element ref="example" />
821         <xs:element ref="list" />
822       </xs:choice>
823     </xs:complexType>
824   </xs:element>
825
826   <!-- 
827     index.xml & namespace-name.xml support 
828     -->
829
830   <!-- define attributes -->
831   <xs:attribute name="Version" type="xs:string" />
832   <xs:attribute name="DisplayName" type="xs:string" />
833   <xs:attribute name="Kind" type="xs:string" />
834
835   <!-- define simple elements -->
836   <xs:element name="Title" type="xs:string" />
837
838   <!-- define complex elements -->
839   <xs:element name="Assemblies">
840     <xs:complexType>
841       <xs:choice minOccurs="0" maxOccurs="unbounded">
842         <xs:element ref="Assembly" />
843       </xs:choice>
844     </xs:complexType>
845   </xs:element>
846
847   <xs:element name="Assembly">
848     <xs:complexType>
849       <xs:choice minOccurs="0" maxOccurs="unbounded">
850         <xs:element ref="Attributes" />
851       </xs:choice>
852       <xs:attribute ref="Name" />
853       <xs:attribute ref="Version" />
854     </xs:complexType>
855   </xs:element>
856
857   <xs:element name="Copyright">
858     <xs:complexType mixed="true">
859       <xs:choice minOccurs="0" maxOccurs="unbounded">
860         <xs:element ref="block" />
861         <xs:element ref="code" />
862         <xs:element ref="example" />
863         <xs:element ref="list" />
864         <xs:element ref="para" />
865         <xs:element ref="paramref" />
866         <xs:element ref="see" />
867         <xs:element ref="typeparamref" />
868         <xs:element ref="ul" />
869       </xs:choice>
870     </xs:complexType>
871   </xs:element>
872
873   <xs:element name="ExtensionMethods">
874     <xs:complexType>
875       <xs:sequence>
876         <xs:element ref="ExtensionMethod" minOccurs="0" maxOccurs="unbounded" />
877       </xs:sequence>
878     </xs:complexType>
879   </xs:element>
880
881   <xs:element name="ExtensionMethod">
882     <xs:complexType>
883       <xs:sequence>
884         <xs:element name="Targets" minOccurs="1" maxOccurs="1">
885           <xs:complexType>
886             <xs:choice minOccurs="1" maxOccurs="unbounded">
887               <xs:element name="Target">
888                 <xs:complexType>
889                   <xs:attribute ref="Type" use="required" />
890                 </xs:complexType>
891               </xs:element>
892             </xs:choice>
893           </xs:complexType>
894         </xs:element>
895         <xs:element ref="Member" minOccurs="1" maxOccurs="1" />
896       </xs:sequence>
897     </xs:complexType>
898   </xs:element>
899
900   <xs:element name="Overview">
901     <xs:complexType>
902       <xs:choice minOccurs="0" maxOccurs="unbounded">
903         <xs:element ref="Assemblies" />
904         <xs:element ref="Copyright" />
905         <xs:element ref="Remarks" />
906         <xs:element ref="Title" />
907         <xs:element name="Types">
908           <xs:complexType>
909             <xs:choice minOccurs="0" maxOccurs="unbounded">
910               <xs:element name="Namespace">
911                 <xs:complexType>
912                   <xs:choice minOccurs="0" maxOccurs="unbounded">
913                     <xs:element name="Type">
914                       <xs:complexType>
915                         <xs:attribute ref="Name" use="required" />
916                         <xs:attribute ref="DisplayName" />
917                         <xs:attribute ref="Kind" />
918                       </xs:complexType>
919                     </xs:element>
920                   </xs:choice>
921                   <xs:attribute ref="Name" />
922                 </xs:complexType>
923               </xs:element>
924             </xs:choice>
925           </xs:complexType>
926         </xs:element>
927         <xs:element ref="ExtensionMethods" />
928       </xs:choice>
929     </xs:complexType>
930   </xs:element>
931
932   <xs:element name="Remarks">
933     <xs:complexType mixed="true">
934       <xs:choice minOccurs="0" maxOccurs="unbounded">
935         <xs:element ref="block" />
936         <xs:element ref="code" />
937         <xs:element ref="example" />
938         <xs:element ref="list" />
939         <xs:element ref="para" />
940         <xs:element ref="paramref" />
941         <xs:element ref="typeparamref" />
942         <xs:element ref="see" />
943         <xs:element ref="ul" />
944       </xs:choice>
945     </xs:complexType>
946   </xs:element>
947
948 </xs:schema>
949