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