Add support for embedding image files in ecma doc
[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="PermissionSet" />
261         <xs:element ref="altmember" />
262         <xs:element ref="altcompliant" />
263         <xs:element ref="since" />
264         <xs:element ref="threadsafe" />
265         <xs:element ref="typeparam" />
266         <xs:element ref="filterpriority" />
267       </xs:choice>
268     </xs:complexType>
269   </xs:element>
270
271   <xs:element name="enum">
272     <xs:complexType>
273       <xs:choice minOccurs="0" maxOccurs="unbounded">
274         <xs:element ref="field" />
275         <xs:element ref="method" />
276       </xs:choice>
277       <xs:attribute ref="name" />
278       <xs:attribute ref="namespace" />
279     </xs:complexType>
280   </xs:element>
281
282   <xs:element name="event">
283     <xs:complexType>
284           <xs:attribute ref="name" />
285           <xs:attribute ref="inherited" />
286     </xs:complexType>
287   </xs:element>
288
289   <xs:element name="example">
290     <xs:complexType mixed="true">
291       <xs:choice maxOccurs="unbounded">
292         <xs:element ref="format" />
293         <xs:element ref="para" />
294         <xs:element ref="code" />
295         <xs:element ref="codelink" />
296         <xs:element ref="c" />
297         <xs:element ref="list" />
298         <xs:element ref="see" />
299       </xs:choice>
300     </xs:complexType>
301   </xs:element>
302
303   <xs:element name="exception">
304     <xs:complexType mixed="true">
305       <xs:choice minOccurs="0" maxOccurs="unbounded">
306         <xs:element ref="block" />
307         <xs:element ref="format" />
308         <xs:element ref="para" />
309         <xs:element ref="paramref" />
310         <xs:element ref="see" />
311         <xs:element ref="SPAN" />
312         <xs:element ref="typeparamref" />
313       </xs:choice>
314       <xs:attribute ref="cref" />
315     </xs:complexType>
316   </xs:element>
317
318   <xs:element name="field">
319     <xs:complexType>
320       <xs:attribute ref="name" />
321       <xs:attribute ref="inherited" />
322     </xs:complexType>
323   </xs:element>
324
325   <xs:element name="format">
326     <xs:complexType>
327       <xs:sequence>
328         <xs:any minOccurs="0" processContents="lax" />
329       </xs:sequence>
330       <xs:attribute ref="type" />
331     </xs:complexType>
332   </xs:element>
333
334   <xs:element name="interface">
335     <xs:complexType>
336       <xs:choice minOccurs="0" maxOccurs="unbounded">
337         <xs:element ref="constructor" />
338         <xs:element ref="property" />
339         <xs:element ref="method" />
340         <xs:element ref="field" />
341         <xs:element ref="event" />
342       </xs:choice>
343       <xs:attribute ref="name" />
344       <xs:attribute ref="namespace" />
345     </xs:complexType>
346   </xs:element>
347
348   <xs:element name="Interface">
349     <xs:complexType>
350       <xs:sequence>
351         <xs:element ref="InterfaceName" />
352         <xs:element ref="Excluded" minOccurs="0" />
353       </xs:sequence>
354     </xs:complexType>
355   </xs:element>
356
357   <xs:element name="Interfaces">
358     <xs:complexType>
359       <xs:sequence>
360         <xs:element ref="Interface" minOccurs="0" maxOccurs="unbounded" />
361       </xs:sequence>
362     </xs:complexType>
363   </xs:element>
364
365   <xs:element name="item">
366     <xs:complexType>
367         <xs:sequence>
368           <xs:element ref="term" minOccurs="1" maxOccurs="1" />
369           <xs:element ref="description" minOccurs="0" maxOccurs="unbounded" />
370         </xs:sequence>
371     </xs:complexType>
372   </xs:element>
373
374   <xs:element name="link">
375     <xs:complexType>
376       <xs:simpleContent>
377         <xs:extension base="xs:string">
378           <xs:attribute ref="location" />
379         </xs:extension>
380       </xs:simpleContent>
381     </xs:complexType>
382   </xs:element>
383
384   <xs:element name="list">
385     <xs:complexType>
386         <xs:sequence>
387           <xs:element ref="listheader" minOccurs="0" maxOccurs="1" />
388           <xs:element ref="item" minOccurs="0" maxOccurs="unbounded" />
389         </xs:sequence>
390         <xs:attribute name="type" type="xs:string" />
391     </xs:complexType>
392   </xs:element>
393
394   <xs:element name="listheader">
395     <xs:complexType>
396       <xs:sequence>
397           <xs:element ref="term" />
398           <xs:element ref="description" maxOccurs="unbounded" />
399       </xs:sequence>
400     </xs:complexType>
401   </xs:element>
402
403   <xs:element name="masterdoc">
404     <xs:complexType>
405        <xs:choice minOccurs="0" maxOccurs="unbounded">
406          <xs:element ref="class" />
407          <xs:element ref="delegate" />
408          <xs:element ref="interface" />
409          <xs:element ref="struct" />
410          <xs:element ref="enum" />
411        </xs:choice>
412        <xs:attribute name="assembly" type="xs:string" />
413     </xs:complexType>
414   </xs:element>
415
416   <xs:element name="MemberSignature">
417     <xs:complexType>
418       <xs:attribute ref="Language" />
419       <xs:attribute ref="Value" />
420     </xs:complexType>
421   </xs:element>
422
423   <xs:element name="Link">
424     <xs:complexType>
425       <xs:attribute ref="Type" use="required" />
426       <xs:attribute name="Member" type="xs:string" use="required" />
427     </xs:complexType>
428   </xs:element>
429
430   <xs:element name="Member">
431     <xs:complexType>
432       <xs:sequence>
433         <xs:element ref="MemberSignature" minOccurs="1" maxOccurs="unbounded" />
434         <xs:element ref="MemberType" maxOccurs="1" />
435         <xs:element ref="AssemblyInfo" minOccurs="0" maxOccurs="1" />
436         <xs:element ref="Attributes" minOccurs="0" maxOccurs="1" />
437         <xs:element ref="ReturnValue" minOccurs="0" maxOccurs="1" />
438         <xs:element ref="TypeParameters" minOccurs="0" maxOccurs="1" />
439         <xs:element ref="Parameters" minOccurs="0" maxOccurs="1" />
440         <xs:element ref="MemberValue" minOccurs="0" maxOccurs="1" />
441         <xs:element ref="Docs" maxOccurs="1" />
442         <xs:element ref="Excluded" minOccurs="0" maxOccurs="1" />
443         <xs:element ref="ExcludedLibrary" minOccurs="0" maxOccurs="unbounded" />
444         <xs:element ref="Link" minOccurs="0" maxOccurs="1" />
445       </xs:sequence>
446       <xs:attribute ref="MemberName" />
447       <xs:attribute ref="Deprecated" />
448     </xs:complexType>
449   </xs:element>
450
451   <xs:element name="Members">
452     <xs:complexType>
453       <xs:sequence>
454         <xs:element ref="Member" minOccurs="0" maxOccurs="unbounded" />
455       </xs:sequence>
456     </xs:complexType>
457   </xs:element>
458
459   <xs:element name="method">
460     <xs:complexType>
461       <xs:attribute ref="name" />
462       <xs:attribute ref="argnames" />
463       <xs:attribute ref="inherited" />
464       <xs:attribute ref="returntype" />
465     </xs:complexType>
466   </xs:element>
467
468   <xs:element name="Namespace">
469     <xs:complexType>
470       <xs:sequence>
471         <xs:element ref="Docs" maxOccurs="1" />
472       </xs:sequence>
473       <xs:attribute ref="Name" />
474       <xs:attribute ref="FullName" />
475       <xs:attribute ref="FullNameSP" />
476       <xs:attribute ref="Maintainer" />
477     </xs:complexType>
478   </xs:element>
479
480   <xs:element name="operator">
481     <xs:complexType>
482       <xs:attribute ref="name" />
483       <xs:attribute ref="argnames" />
484     </xs:complexType>
485   </xs:element>
486
487   <xs:element name="para">
488     <xs:complexType mixed="true">
489       <xs:choice minOccurs="0" maxOccurs="unbounded">
490         <xs:element ref="block" />
491         <xs:element ref="i" />
492         <xs:element ref="format" />
493         <xs:element ref="see" />
494         <xs:element ref="geq" />
495         <xs:element ref="leq" />
496         <xs:element ref="list" />
497         <xs:element ref="link" />
498         <xs:element ref="ul" />
499         <xs:element ref="paramref" />
500         <xs:element ref="c" />
501         <xs:element ref="onequarter" />
502         <xs:element ref="sub" />
503         <xs:element ref="superscript" />
504         <xs:element ref="sup" />
505         <xs:element ref="permille" />
506         <xs:element ref="plusminus" />
507         <xs:element ref="SPAN" />
508         <xs:element ref="pi" />
509         <xs:element ref="theta" />
510         <xs:element ref="typeparamref" />
511         <xs:element ref="whitespace" />
512         <xs:element ref="img" />
513       </xs:choice>
514     </xs:complexType>
515   </xs:element>
516
517   <xs:element name="img">
518         <xs:complexType>
519           <xs:attribute name="href" type="xs:string" use="required" />
520           <xs:attribute name="class" type="xs:string" use="optional" />
521         </xs:complexType>
522   </xs:element>
523
524   <xs:element name="param">
525     <xs:complexType mixed="true">
526       <xs:choice minOccurs="0" maxOccurs="unbounded">
527         <xs:element ref="c" />
528         <xs:element ref="format" />
529         <xs:element ref="see" />
530         <xs:element ref="block" />
531         <xs:element ref="geq" />
532         <xs:element ref="leq" />
533         <xs:element ref="paramref" />
534         <xs:element ref="plusminus" />
535         <xs:element ref="para" />
536         <xs:element ref="SPAN" />
537         <xs:element ref="typeparamref" />
538         <xs:element ref="whitespace" />
539       </xs:choice>
540       <xs:attribute ref="name" use="required" />
541     </xs:complexType>
542   </xs:element>
543
544   <xs:element name="paramref">
545     <xs:complexType>
546       <xs:attribute ref="name" use="required" />
547     </xs:complexType>
548   </xs:element>
549
550   <xs:element name="Parameter">
551     <xs:complexType>
552       <xs:sequence>
553         <xs:element ref="Attributes" minOccurs="0" maxOccurs="1" />
554       </xs:sequence>
555       <xs:attribute ref="Name" />
556       <xs:attribute ref="Type" />
557       <xs:attribute ref="RefType" />
558     </xs:complexType>
559   </xs:element>
560
561   <xs:element name="Parameters">
562     <xs:complexType>
563       <xs:sequence>
564         <xs:element ref="Parameter" minOccurs="0" maxOccurs="unbounded" />
565       </xs:sequence>
566     </xs:complexType>
567   </xs:element>
568
569   <xs:element name="permission">
570     <xs:complexType mixed="true">
571       <xs:choice minOccurs="0" maxOccurs="unbounded">
572         <xs:element ref="block" />
573         <xs:element ref="format" />
574         <xs:element ref="para" />
575         <xs:element ref="paramref" />
576         <xs:element ref="see" />
577         <xs:element ref="typeparamref" />
578       </xs:choice>
579       <xs:attribute ref="cref" />
580     </xs:complexType>
581   </xs:element>
582
583   <xs:element name="property">
584     <xs:complexType>
585       <xs:attribute ref="name" />
586       <xs:attribute ref="inherited" />
587       <xs:attribute ref="propertytype" />
588     </xs:complexType>
589   </xs:element>
590
591   <xs:element name="remarks">
592     <xs:complexType mixed="true">
593       <xs:choice minOccurs="0" maxOccurs="unbounded">
594         <xs:element ref="block" />
595         <xs:element ref="c" />
596         <xs:element ref="code" />
597         <xs:element ref="format" />
598         <xs:element ref="para" />
599         <xs:element ref="paramref" />
600         <xs:element ref="PRE" />
601         <xs:element ref="pre" />
602         <xs:element ref="see" />
603         <xs:element ref="ul" />
604         <xs:element ref="example" />
605         <xs:element ref="list" />
606         <xs:element ref="SPAN" />
607         <xs:element ref="typeparamref" />
608       </xs:choice>
609     </xs:complexType>
610   </xs:element>
611
612   <xs:element name="returns">
613     <xs:complexType mixed="true">
614       <xs:choice minOccurs="0" maxOccurs="unbounded">
615         <xs:element ref="format" />
616         <xs:element ref="geq" />
617         <xs:element ref="leq" />
618         <xs:element ref="list" />
619         <xs:element ref="para" />
620         <xs:element ref="paramref" />
621         <xs:element ref="pi" />
622         <xs:element ref="see" />
623         <xs:element ref="theta" />
624         <xs:element ref="typeparamref" />
625         <xs:element ref="ul" />
626         <xs:element ref="whitespace" />
627       </xs:choice>
628     </xs:complexType>
629   </xs:element>
630
631   <xs:element name="ReturnValue">
632     <xs:complexType>
633       <xs:sequence>
634         <xs:element ref="ReturnType" minOccurs="0" maxOccurs="1" />
635         <xs:element ref="Attributes" minOccurs="0" />
636       </xs:sequence>
637     </xs:complexType>
638   </xs:element>
639
640   <xs:element name="see">
641     <xs:complexType>
642       <xs:attribute ref="cref" />
643       <xs:attribute ref="langword"  />
644       <xs:attribute ref="qualify"  />
645     </xs:complexType>
646   </xs:element>
647
648   <xs:element name="since">
649     <xs:complexType>
650       <xs:attribute ref="version" />
651     </xs:complexType>
652   </xs:element>
653
654   <xs:element name="SPAN">
655     <xs:complexType mixed="true">
656       <xs:choice minOccurs="0" maxOccurs="unbounded">
657         <xs:element ref="block" />
658         <xs:element ref="format" />
659         <xs:element ref="para" />
660         <xs:element ref="paramref" />
661         <xs:element ref="see" />
662         <xs:element ref="SPAN" />
663         <xs:element ref="typeparamref" />
664       </xs:choice>
665       <xs:attribute ref="version" />
666     </xs:complexType>
667   </xs:element>
668
669   <xs:element name="struct">
670     <xs:complexType>
671       <xs:choice minOccurs="0" maxOccurs="unbounded">
672         <xs:element ref="constructor" />
673         <xs:element ref="property" />
674         <xs:element ref="method" />
675         <xs:element ref="field" />
676         <xs:element ref="operator" />
677         <xs:element ref="struct" />
678         <xs:element ref="class" />
679       </xs:choice>
680       <xs:attribute ref="name" />
681       <xs:attribute ref="namespace" />
682     </xs:complexType>
683   </xs:element>
684
685   <xs:element name="sub">
686     <xs:complexType mixed="true">
687       <xs:choice minOccurs="0" maxOccurs="unbounded">
688         <xs:element ref="paramref" />
689         <xs:element ref="typeparamref" />
690       </xs:choice>
691     </xs:complexType>
692   </xs:element>
693
694   <xs:element name="subscript">
695     <xs:complexType>
696       <xs:attribute name="term" type="xs:string" use="required" />
697     </xs:complexType>
698   </xs:element>
699
700   <xs:element name="summary">
701     <xs:complexType mixed="true">
702       <xs:choice minOccurs="0" maxOccurs="unbounded">
703         <xs:element ref="block" />
704         <xs:element ref="c" />
705         <xs:element ref="format" />
706         <xs:element ref="para" />
707         <xs:element ref="paramref" />
708         <xs:element ref="see" />
709         <xs:element ref="typeparamref" />
710         <xs:element ref="ul" />
711         <xs:element ref="list" />
712       </xs:choice>
713     </xs:complexType>
714   </xs:element>
715
716   <xs:element name="sup">
717     <xs:complexType mixed="true">
718       <xs:choice minOccurs="0" maxOccurs="unbounded">
719         <xs:element ref="i" />
720         <xs:element ref="paramref" />
721         <xs:element ref="typeparamref" />
722       </xs:choice>
723     </xs:complexType>
724   </xs:element>
725
726   <xs:element name="superscript">
727     <xs:complexType>
728       <xs:attribute name="term" type="xs:string" use="required" />
729     </xs:complexType>
730   </xs:element>
731
732   <xs:element name="term">
733     <xs:complexType mixed="true">
734         <xs:choice minOccurs="0" maxOccurs="unbounded">
735           <xs:element ref="block" />
736           <xs:element ref="c" />
737           <xs:element ref="format" />
738           <xs:element ref="geq" />
739           <xs:element ref="leq" />
740           <xs:element ref="see" />
741           <xs:element ref="para"  />
742           <xs:element ref="paramref" />
743           <xs:element ref="pi" />
744           <xs:element ref="plusminus" />
745           <xs:element ref="sup" />
746           <xs:element ref="theta" />
747           <xs:element ref="typeparamref" />
748           <xs:element ref="whitespace" />
749         </xs:choice>
750     </xs:complexType>
751   </xs:element>
752
753   <xs:element name="theta" />
754
755   <xs:element name="threadsafe">
756     <xs:complexType>
757      <xs:sequence>
758        <xs:element ref="para" minOccurs="1" maxOccurs="unbounded" />
759      </xs:sequence>
760     </xs:complexType>
761   </xs:element>
762
763   <xs:element name="ThreadingSafetyStatement">
764     <xs:complexType mixed="true">
765      <xs:sequence>
766        <xs:element ref="link" minOccurs="0" />
767      </xs:sequence>
768     </xs:complexType>
769   </xs:element>
770
771   <xs:element name="ThreadSafetyStatement">
772     <xs:complexType mixed="true">
773      <xs:sequence>
774        <xs:element ref="link" minOccurs="0" />
775      </xs:sequence>
776     </xs:complexType>
777   </xs:element>
778
779   <xs:element name="Type">
780     <xs:complexType>
781       <xs:choice maxOccurs="unbounded">
782         <xs:element ref="TypeSignature" minOccurs="1" />
783         <xs:element ref="MemberOfLibrary" minOccurs="0" />
784         <xs:element ref="AssemblyInfo" minOccurs="1" />
785         <xs:element ref="TypeParameters" minOccurs="0" maxOccurs="1" />
786         <xs:element ref="ThreadingSafetyStatement" minOccurs="0" />
787         <xs:element ref="ThreadSafetyStatement" minOccurs="0" />
788         <xs:element ref="Docs" minOccurs="1" />
789         <xs:element ref="Base" minOccurs="1" />
790         <xs:element ref="Interfaces" minOccurs="1" />
791         <xs:element ref="Attributes" minOccurs="1" />
792         <xs:element ref="Members" minOccurs="1" />
793         <xs:element ref="Parameters" minOccurs="0" />
794         <xs:element ref="ReturnValue" minOccurs="0" />
795         <xs:element ref="TypeExcluded" minOccurs="0" />
796       </xs:choice>
797       <xs:attribute ref="Name" use="required" />
798       <xs:attribute ref="FullName" use="required" />
799       <xs:attribute ref="FullNameSP" />
800       <xs:attribute ref="Maintainer" />
801     </xs:complexType>
802   </xs:element>
803
804   <xs:element name="Types">
805     <xs:complexType>
806       <xs:choice minOccurs="1" maxOccurs="unbounded">
807         <xs:element ref="Type" />
808       </xs:choice>
809       <xs:attribute ref="Library" use="required" />
810     </xs:complexType>
811   </xs:element>
812
813   <xs:element name="typeparam">
814     <xs:complexType mixed="true">
815       <xs:choice minOccurs="0" maxOccurs="unbounded">
816         <xs:element ref="block" />
817         <xs:element ref="c" />
818         <xs:element ref="format" />
819         <xs:element ref="para" />
820         <xs:element ref="paramref" />
821         <xs:element ref="see" />
822         <xs:element ref="typeparamref" />
823       </xs:choice>
824       <xs:attribute ref="name" use="required" />
825     </xs:complexType>
826   </xs:element>
827
828   <xs:element name="typeparamref">
829     <xs:complexType>
830       <xs:attribute ref="name" use="required" />
831     </xs:complexType>
832   </xs:element>
833
834   <xs:element name="TypeParameters">
835     <xs:complexType>
836       <xs:choice maxOccurs="unbounded">
837         <xs:element ref="TypeParameter" />
838       </xs:choice>
839     </xs:complexType>
840   </xs:element>
841
842   <xs:element name="TypeParameter">
843     <xs:complexType mixed="true">
844       <xs:choice minOccurs="0" maxOccurs="unbounded">
845         <xs:element ref="Attributes" />
846         <xs:element ref="Constraints" />
847       </xs:choice>
848       <xs:attribute ref="Name" use="required" />
849     </xs:complexType>
850   </xs:element>
851
852   <xs:element name="Constraints">
853     <xs:complexType mixed="true">
854       <xs:choice minOccurs="0" maxOccurs="unbounded">
855         <xs:element name="ParameterAttribute" type="xs:string" />
856         <xs:element ref="BaseTypeName" />
857         <xs:element ref="InterfaceName" />
858       </xs:choice>
859     </xs:complexType>
860   </xs:element>
861
862   <xs:element name="TypeSignature">
863     <xs:complexType>
864       <xs:attribute ref="Language" use="required" />
865       <xs:attribute ref="Value" use="required" />
866       <xs:attribute ref="Maintainer" />
867     </xs:complexType>
868   </xs:element>
869
870   <xs:element name="ul">
871     <xs:complexType>
872       <xs:sequence>
873         <xs:element ref="li" minOccurs="1" maxOccurs="unbounded" />
874       </xs:sequence>
875     </xs:complexType>
876   </xs:element>
877
878   <xs:element name="value">
879     <xs:complexType mixed="true">
880       <xs:choice minOccurs="0" maxOccurs="unbounded">
881         <xs:element ref="block" />
882         <xs:element ref="c" />
883         <xs:element ref="para" />
884         <xs:element ref="paramref" />
885         <xs:element ref="see" />
886         <xs:element ref="typeparamref" />
887         <xs:element ref="ul" />
888         <xs:element ref="example" />
889         <xs:element ref="list" />
890       </xs:choice>
891     </xs:complexType>
892   </xs:element>
893
894   <!-- 
895     index.xml & namespace-name.xml support 
896     -->
897
898   <!-- define attributes -->
899   <xs:attribute name="Version" type="xs:string" />
900   <xs:attribute name="DisplayName" type="xs:string" />
901   <xs:attribute name="Kind" type="xs:string" />
902
903   <!-- define simple elements -->
904   <xs:element name="Title" type="xs:string" />
905
906   <!-- define complex elements -->
907   <xs:element name="Assemblies">
908     <xs:complexType>
909       <xs:choice minOccurs="0" maxOccurs="unbounded">
910         <xs:element ref="Assembly" />
911       </xs:choice>
912     </xs:complexType>
913   </xs:element>
914
915   <xs:element name="Assembly">
916     <xs:complexType>
917       <xs:choice minOccurs="0" maxOccurs="unbounded">
918         <xs:element ref="AssemblyPublicKey" />
919         <xs:element ref="AssemblyCulture" />
920         <xs:element ref="Attributes" />
921       </xs:choice>
922       <xs:attribute ref="Name" />
923       <xs:attribute ref="Version" />
924     </xs:complexType>
925   </xs:element>
926
927   <xs:element name="Copyright">
928     <xs:complexType mixed="true">
929       <xs:choice minOccurs="0" maxOccurs="unbounded">
930         <xs:element ref="block" />
931         <xs:element ref="code" />
932         <xs:element ref="example" />
933         <xs:element ref="list" />
934         <xs:element ref="para" />
935         <xs:element ref="paramref" />
936         <xs:element ref="see" />
937         <xs:element ref="typeparamref" />
938         <xs:element ref="ul" />
939       </xs:choice>
940     </xs:complexType>
941   </xs:element>
942
943   <xs:element name="ExtensionMethods">
944     <xs:complexType>
945       <xs:sequence>
946         <xs:element ref="ExtensionMethod" minOccurs="0" maxOccurs="unbounded" />
947       </xs:sequence>
948     </xs:complexType>
949   </xs:element>
950
951   <xs:element name="ExtensionMethod">
952     <xs:complexType>
953       <xs:sequence>
954         <xs:element name="Targets" minOccurs="1" maxOccurs="1">
955           <xs:complexType>
956             <xs:choice minOccurs="1" maxOccurs="unbounded">
957               <xs:element name="Target">
958                 <xs:complexType>
959                   <xs:attribute ref="Type" use="required" />
960                 </xs:complexType>
961               </xs:element>
962             </xs:choice>
963           </xs:complexType>
964         </xs:element>
965         <xs:element ref="Member" minOccurs="1" maxOccurs="1" />
966       </xs:sequence>
967     </xs:complexType>
968   </xs:element>
969
970   <xs:element name="Overview">
971     <xs:complexType>
972       <xs:choice minOccurs="0" maxOccurs="unbounded">
973         <xs:element ref="Assemblies" />
974         <xs:element ref="Copyright" />
975         <xs:element ref="Remarks" />
976         <xs:element ref="Title" />
977         <xs:element name="Types">
978           <xs:complexType>
979             <xs:choice minOccurs="0" maxOccurs="unbounded">
980               <xs:element name="Namespace">
981                 <xs:complexType>
982                   <xs:choice minOccurs="0" maxOccurs="unbounded">
983                     <xs:element name="Type">
984                       <xs:complexType>
985                         <xs:attribute ref="Name" use="required" />
986                         <xs:attribute ref="DisplayName" />
987                         <xs:attribute ref="Kind" />
988                       </xs:complexType>
989                     </xs:element>
990                   </xs:choice>
991                   <xs:attribute ref="Name" />
992                 </xs:complexType>
993               </xs:element>
994             </xs:choice>
995           </xs:complexType>
996         </xs:element>
997         <xs:element ref="ExtensionMethods" />
998       </xs:choice>
999     </xs:complexType>
1000   </xs:element>
1001
1002   <xs:element name="Remarks">
1003     <xs:complexType mixed="true">
1004       <xs:choice minOccurs="0" maxOccurs="unbounded">
1005         <xs:element ref="block" />
1006         <xs:element ref="code" />
1007         <xs:element ref="example" />
1008         <xs:element ref="list" />
1009         <xs:element ref="para" />
1010         <xs:element ref="paramref" />
1011         <xs:element ref="typeparamref" />
1012         <xs:element ref="see" />
1013         <xs:element ref="ul" />
1014       </xs:choice>
1015     </xs:complexType>
1016   </xs:element>
1017
1018   <!--
1019     ECMA 335 CLILibraryTypes.xml support
1020     -->
1021
1022   <xs:element name="Libraries">
1023     <xs:complexType>
1024       <xs:choice minOccurs="0" maxOccurs="unbounded">
1025         <xs:element ref="Types" minOccurs = "1" maxOccurs="unbounded" />
1026       </xs:choice>
1027     </xs:complexType>
1028   </xs:element>
1029
1030         <xs:element name="codelink">
1031     <xs:complexType>
1032       <xs:attribute name="SampleID" type="xs:string" />
1033       <xs:attribute name="SnippedID" type="xs:string" />
1034     </xs:complexType>
1035         </xs:element>
1036
1037   <xs:element name="filterpriority" type="xs:string" />
1038
1039   <xs:element name="geq" />
1040   <xs:element name="leq" />
1041   <xs:element name="plusminus" />
1042   <xs:element name="whitespace" />
1043
1044   <xs:element name="PermissionSet">
1045     <xs:complexType>
1046       <xs:choice minOccurs="0" maxOccurs="unbounded">
1047         <xs:element name="IPermission">
1048           <xs:complexType>
1049             <xs:attribute name="class" type="xs:string" />
1050             <xs:attribute name="Flags" type="xs:string" />
1051             <xs:attribute name="Name" type="xs:string" />
1052             <xs:attribute name="PathDiscovery" type="xs:string" />
1053             <xs:attribute name="PublicKeyBlob" type="xs:string" />
1054             <xs:attribute name="Read" type="xs:string" />
1055             <xs:attribute name="Unrestricted" type="xs:string" />
1056             <xs:attribute name="version" type="xs:string" />
1057             <xs:attribute name="Window" type="xs:string" />
1058           </xs:complexType>
1059         </xs:element>
1060       </xs:choice>
1061     </xs:complexType>
1062   </xs:element>
1063
1064   <!--
1065     ECMA 334 Annex E Documentation Comments support.
1066     -->
1067
1068   <xs:element name="seealso">
1069     <xs:complexType>
1070       <xs:simpleContent>
1071         <xs:extension base="xs:string">
1072           <xs:attribute ref="cref" />
1073         </xs:extension>
1074       </xs:simpleContent>
1075     </xs:complexType>
1076   </xs:element>
1077
1078   <xs:element name="doc">
1079     <xs:complexType>
1080       <xs:sequence>
1081         <xs:element name="assembly">
1082           <xs:complexType>
1083             <xs:choice>
1084               <xs:element name="name" type="xs:string" />
1085             </xs:choice>
1086           </xs:complexType>
1087         </xs:element>
1088         <xs:element name="members">
1089           <xs:complexType>
1090             <xs:choice minOccurs="0" maxOccurs="unbounded">>
1091               <xs:element name="member">
1092                 <xs:complexType>
1093                   <xs:choice minOccurs="0" maxOccurs="unbounded">
1094                     <xs:element ref="seealso" />
1095                     <xs:element ref="example" />
1096                     <xs:element ref="exception" />
1097                     <xs:element ref="param" />
1098                     <xs:element ref="permission" />
1099                     <xs:element ref="PermissionSet" />
1100                     <xs:element ref="remarks" />
1101                     <xs:element ref="returns" />
1102                     <xs:element ref="summary" />
1103                     <xs:element ref="threadsafe" />
1104                     <xs:element ref="typeparam" />
1105                     <xs:element ref="value" />
1106                   </xs:choice>
1107                   <xs:attribute name="name" type="xs:type" />
1108                 </xs:complexType>
1109               </xs:element>
1110             </xs:choice>
1111           </xs:complexType>
1112         </xs:element>
1113       </xs:sequence>
1114     </xs:complexType>
1115   </xs:element>
1116 </xs:schema>
1117