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