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