xref: /openbsd-src/gnu/llvm/clang/bindings/xml/comment-xml-schema.rng (revision e5dd70708596ae51455a0ffa086a00c5b29f8583)
1*e5dd7070Spatrick<?xml version="1.0" encoding="UTF-8"?>
2*e5dd7070Spatrick
3*e5dd7070Spatrick<grammar xmlns="http://relaxng.org/ns/structure/1.0"
4*e5dd7070Spatrick         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5*e5dd7070Spatrick
6*e5dd7070Spatrick  <start>
7*e5dd7070Spatrick    <choice>
8*e5dd7070Spatrick      <!-- Everything else not explicitly mentioned below. -->
9*e5dd7070Spatrick      <ref name="Other" />
10*e5dd7070Spatrick
11*e5dd7070Spatrick      <ref name="Function" />
12*e5dd7070Spatrick      <ref name="Class" />
13*e5dd7070Spatrick      <ref name="Variable" />
14*e5dd7070Spatrick      <ref name="Namespace" />
15*e5dd7070Spatrick      <ref name="Typedef" />
16*e5dd7070Spatrick      <ref name="Enum" />
17*e5dd7070Spatrick    </choice>
18*e5dd7070Spatrick  </start>
19*e5dd7070Spatrick
20*e5dd7070Spatrick  <define name="Other">
21*e5dd7070Spatrick    <element name="Other">
22*e5dd7070Spatrick      <ref name="attrSourceLocation" />
23*e5dd7070Spatrick      <ref name="Name" />
24*e5dd7070Spatrick      <optional>
25*e5dd7070Spatrick        <ref name="USR" />
26*e5dd7070Spatrick      </optional>
27*e5dd7070Spatrick      <optional>
28*e5dd7070Spatrick        <ref name="Headerfile" />
29*e5dd7070Spatrick      </optional>
30*e5dd7070Spatrick      <optional>
31*e5dd7070Spatrick        <ref name="Declaration" />
32*e5dd7070Spatrick      </optional>
33*e5dd7070Spatrick      <optional>
34*e5dd7070Spatrick        <ref name="Abstract" />
35*e5dd7070Spatrick      </optional>
36*e5dd7070Spatrick      <optional>
37*e5dd7070Spatrick        <ref name="TemplateParameters" />
38*e5dd7070Spatrick      </optional>
39*e5dd7070Spatrick      <optional>
40*e5dd7070Spatrick        <ref name="Parameters" />
41*e5dd7070Spatrick      </optional>
42*e5dd7070Spatrick      <optional>
43*e5dd7070Spatrick        <ref name="ResultDiscussion" />
44*e5dd7070Spatrick      </optional>
45*e5dd7070Spatrick      <optional>
46*e5dd7070Spatrick        <ref name="Discussion" />
47*e5dd7070Spatrick      </optional>
48*e5dd7070Spatrick    </element>
49*e5dd7070Spatrick  </define>
50*e5dd7070Spatrick
51*e5dd7070Spatrick  <define name="Function">
52*e5dd7070Spatrick    <element name="Function">
53*e5dd7070Spatrick      <optional>
54*e5dd7070Spatrick        <attribute name="templateKind">
55*e5dd7070Spatrick          <choice>
56*e5dd7070Spatrick            <value>template</value>
57*e5dd7070Spatrick            <value>specialization</value>
58*e5dd7070Spatrick          </choice>
59*e5dd7070Spatrick        </attribute>
60*e5dd7070Spatrick      </optional>
61*e5dd7070Spatrick      <ref name="attrSourceLocation" />
62*e5dd7070Spatrick
63*e5dd7070Spatrick      <optional>
64*e5dd7070Spatrick        <attribute name="isInstanceMethod">
65*e5dd7070Spatrick          <data type="boolean" />
66*e5dd7070Spatrick        </attribute>
67*e5dd7070Spatrick      </optional>
68*e5dd7070Spatrick      <optional>
69*e5dd7070Spatrick        <attribute name="isClassMethod">
70*e5dd7070Spatrick          <data type="boolean" />
71*e5dd7070Spatrick        </attribute>
72*e5dd7070Spatrick      </optional>
73*e5dd7070Spatrick
74*e5dd7070Spatrick      <ref name="Name" />
75*e5dd7070Spatrick      <optional>
76*e5dd7070Spatrick        <ref name="USR" />
77*e5dd7070Spatrick      </optional>
78*e5dd7070Spatrick      <optional>
79*e5dd7070Spatrick        <ref name="Headerfile" />
80*e5dd7070Spatrick      </optional>
81*e5dd7070Spatrick      <optional>
82*e5dd7070Spatrick        <ref name="Declaration" />
83*e5dd7070Spatrick      </optional>
84*e5dd7070Spatrick      <optional>
85*e5dd7070Spatrick        <ref name="Abstract" />
86*e5dd7070Spatrick      </optional>
87*e5dd7070Spatrick      <optional>
88*e5dd7070Spatrick        <ref name="TemplateParameters" />
89*e5dd7070Spatrick      </optional>
90*e5dd7070Spatrick      <optional>
91*e5dd7070Spatrick        <ref name="Parameters" />
92*e5dd7070Spatrick      </optional>
93*e5dd7070Spatrick      <optional>
94*e5dd7070Spatrick        <ref name="Exceptions" />
95*e5dd7070Spatrick      </optional>
96*e5dd7070Spatrick      <zeroOrMore>
97*e5dd7070Spatrick        <ref name="Availability" />
98*e5dd7070Spatrick      </zeroOrMore>
99*e5dd7070Spatrick      <zeroOrMore>
100*e5dd7070Spatrick        <ref name="Deprecated" />
101*e5dd7070Spatrick      </zeroOrMore>
102*e5dd7070Spatrick      <zeroOrMore>
103*e5dd7070Spatrick        <ref name="Unavailable" />
104*e5dd7070Spatrick      </zeroOrMore>
105*e5dd7070Spatrick      <optional>
106*e5dd7070Spatrick        <ref name="ResultDiscussion" />
107*e5dd7070Spatrick      </optional>
108*e5dd7070Spatrick      <optional>
109*e5dd7070Spatrick        <ref name="Discussion" />
110*e5dd7070Spatrick      </optional>
111*e5dd7070Spatrick    </element>
112*e5dd7070Spatrick  </define>
113*e5dd7070Spatrick
114*e5dd7070Spatrick  <define name="Class">
115*e5dd7070Spatrick    <element name="Class">
116*e5dd7070Spatrick      <optional>
117*e5dd7070Spatrick        <attribute name="templateKind">
118*e5dd7070Spatrick          <choice>
119*e5dd7070Spatrick            <value>template</value>
120*e5dd7070Spatrick            <value>specialization</value>
121*e5dd7070Spatrick            <value>partialSpecialization</value>
122*e5dd7070Spatrick          </choice>
123*e5dd7070Spatrick        </attribute>
124*e5dd7070Spatrick      </optional>
125*e5dd7070Spatrick      <ref name="attrSourceLocation" />
126*e5dd7070Spatrick
127*e5dd7070Spatrick      <ref name="Name" />
128*e5dd7070Spatrick      <optional>
129*e5dd7070Spatrick        <ref name="USR" />
130*e5dd7070Spatrick      </optional>
131*e5dd7070Spatrick      <optional>
132*e5dd7070Spatrick        <ref name="Headerfile" />
133*e5dd7070Spatrick      </optional>
134*e5dd7070Spatrick      <optional>
135*e5dd7070Spatrick        <ref name="Declaration" />
136*e5dd7070Spatrick      </optional>
137*e5dd7070Spatrick      <optional>
138*e5dd7070Spatrick        <ref name="Abstract" />
139*e5dd7070Spatrick      </optional>
140*e5dd7070Spatrick      <optional>
141*e5dd7070Spatrick        <ref name="TemplateParameters" />
142*e5dd7070Spatrick      </optional>
143*e5dd7070Spatrick
144*e5dd7070Spatrick      <!-- Parameters and results don't make sense for classes, but the user
145*e5dd7070Spatrick           can specify \param or \returns in a comment anyway. -->
146*e5dd7070Spatrick      <optional>
147*e5dd7070Spatrick        <ref name="Parameters" />
148*e5dd7070Spatrick      </optional>
149*e5dd7070Spatrick      <optional>
150*e5dd7070Spatrick        <ref name="ResultDiscussion" />
151*e5dd7070Spatrick      </optional>
152*e5dd7070Spatrick
153*e5dd7070Spatrick      <optional>
154*e5dd7070Spatrick        <ref name="Discussion" />
155*e5dd7070Spatrick      </optional>
156*e5dd7070Spatrick    </element>
157*e5dd7070Spatrick  </define>
158*e5dd7070Spatrick
159*e5dd7070Spatrick  <define name="Variable">
160*e5dd7070Spatrick    <element name="Variable">
161*e5dd7070Spatrick      <ref name="attrSourceLocation" />
162*e5dd7070Spatrick      <ref name="Name" />
163*e5dd7070Spatrick      <optional>
164*e5dd7070Spatrick        <ref name="USR" />
165*e5dd7070Spatrick      </optional>
166*e5dd7070Spatrick      <optional>
167*e5dd7070Spatrick        <ref name="Headerfile" />
168*e5dd7070Spatrick      </optional>
169*e5dd7070Spatrick      <optional>
170*e5dd7070Spatrick        <ref name="Declaration" />
171*e5dd7070Spatrick      </optional>
172*e5dd7070Spatrick      <optional>
173*e5dd7070Spatrick        <ref name="Abstract" />
174*e5dd7070Spatrick      </optional>
175*e5dd7070Spatrick
176*e5dd7070Spatrick      <!-- Template parameters, parameters and results don't make sense for
177*e5dd7070Spatrick            variables, but the user can specify \tparam \param or \returns
178*e5dd7070Spatrick            in a comment anyway. -->
179*e5dd7070Spatrick      <optional>
180*e5dd7070Spatrick        <ref name="TemplateParameters" />
181*e5dd7070Spatrick      </optional>
182*e5dd7070Spatrick      <optional>
183*e5dd7070Spatrick        <ref name="Parameters" />
184*e5dd7070Spatrick      </optional>
185*e5dd7070Spatrick      <optional>
186*e5dd7070Spatrick        <ref name="ResultDiscussion" />
187*e5dd7070Spatrick      </optional>
188*e5dd7070Spatrick
189*e5dd7070Spatrick      <optional>
190*e5dd7070Spatrick        <ref name="Discussion" />
191*e5dd7070Spatrick      </optional>
192*e5dd7070Spatrick    </element>
193*e5dd7070Spatrick  </define>
194*e5dd7070Spatrick
195*e5dd7070Spatrick  <define name="Namespace">
196*e5dd7070Spatrick    <element name="Namespace">
197*e5dd7070Spatrick      <ref name="attrSourceLocation" />
198*e5dd7070Spatrick      <ref name="Name" />
199*e5dd7070Spatrick      <optional>
200*e5dd7070Spatrick        <ref name="USR" />
201*e5dd7070Spatrick      </optional>
202*e5dd7070Spatrick      <optional>
203*e5dd7070Spatrick        <ref name="Headerfile" />
204*e5dd7070Spatrick      </optional>
205*e5dd7070Spatrick      <optional>
206*e5dd7070Spatrick        <ref name="Declaration" />
207*e5dd7070Spatrick      </optional>
208*e5dd7070Spatrick      <optional>
209*e5dd7070Spatrick        <ref name="Abstract" />
210*e5dd7070Spatrick      </optional>
211*e5dd7070Spatrick
212*e5dd7070Spatrick      <!-- Template parameters, parameters and results don't make sense for
213*e5dd7070Spatrick           namespaces, but the user can specify \tparam, \param or \returns
214*e5dd7070Spatrick           in a comment anyway. -->
215*e5dd7070Spatrick      <optional>
216*e5dd7070Spatrick        <ref name="TemplateParameters" />
217*e5dd7070Spatrick      </optional>
218*e5dd7070Spatrick      <optional>
219*e5dd7070Spatrick        <ref name="Parameters" />
220*e5dd7070Spatrick      </optional>
221*e5dd7070Spatrick      <optional>
222*e5dd7070Spatrick        <ref name="ResultDiscussion" />
223*e5dd7070Spatrick      </optional>
224*e5dd7070Spatrick
225*e5dd7070Spatrick      <optional>
226*e5dd7070Spatrick        <ref name="Discussion" />
227*e5dd7070Spatrick      </optional>
228*e5dd7070Spatrick    </element>
229*e5dd7070Spatrick  </define>
230*e5dd7070Spatrick
231*e5dd7070Spatrick  <define name="Typedef">
232*e5dd7070Spatrick    <element name="Typedef">
233*e5dd7070Spatrick      <ref name="attrSourceLocation" />
234*e5dd7070Spatrick      <ref name="Name" />
235*e5dd7070Spatrick      <optional>
236*e5dd7070Spatrick        <ref name="USR" />
237*e5dd7070Spatrick      </optional>
238*e5dd7070Spatrick      <optional>
239*e5dd7070Spatrick        <ref name="Headerfile" />
240*e5dd7070Spatrick      </optional>
241*e5dd7070Spatrick      <optional>
242*e5dd7070Spatrick        <ref name="Declaration" />
243*e5dd7070Spatrick      </optional>
244*e5dd7070Spatrick      <optional>
245*e5dd7070Spatrick        <ref name="Abstract" />
246*e5dd7070Spatrick      </optional>
247*e5dd7070Spatrick
248*e5dd7070Spatrick      <optional>
249*e5dd7070Spatrick        <ref name="TemplateParameters" />
250*e5dd7070Spatrick      </optional>
251*e5dd7070Spatrick
252*e5dd7070Spatrick      <!-- Parameters and results might make sense for typedefs if the type is
253*e5dd7070Spatrick           a function pointer type. -->
254*e5dd7070Spatrick      <optional>
255*e5dd7070Spatrick        <ref name="Parameters" />
256*e5dd7070Spatrick      </optional>
257*e5dd7070Spatrick      <optional>
258*e5dd7070Spatrick        <ref name="ResultDiscussion" />
259*e5dd7070Spatrick      </optional>
260*e5dd7070Spatrick
261*e5dd7070Spatrick      <optional>
262*e5dd7070Spatrick        <ref name="Discussion" />
263*e5dd7070Spatrick      </optional>
264*e5dd7070Spatrick    </element>
265*e5dd7070Spatrick  </define>
266*e5dd7070Spatrick
267*e5dd7070Spatrick  <define name="Enum">
268*e5dd7070Spatrick    <element name="Enum">
269*e5dd7070Spatrick      <ref name="attrSourceLocation" />
270*e5dd7070Spatrick      <ref name="Name" />
271*e5dd7070Spatrick      <optional>
272*e5dd7070Spatrick        <ref name="USR" />
273*e5dd7070Spatrick      </optional>
274*e5dd7070Spatrick      <optional>
275*e5dd7070Spatrick        <ref name="Headerfile" />
276*e5dd7070Spatrick      </optional>
277*e5dd7070Spatrick      <optional>
278*e5dd7070Spatrick        <ref name="Declaration" />
279*e5dd7070Spatrick      </optional>
280*e5dd7070Spatrick      <optional>
281*e5dd7070Spatrick        <ref name="Abstract" />
282*e5dd7070Spatrick      </optional>
283*e5dd7070Spatrick
284*e5dd7070Spatrick      <!-- Template parameters, parameters and results don't make sense for
285*e5dd7070Spatrick            enums, but the user can specify \tparam \param or \returns in a
286*e5dd7070Spatrick            comment anyway. -->
287*e5dd7070Spatrick      <optional>
288*e5dd7070Spatrick        <ref name="TemplateParameters" />
289*e5dd7070Spatrick      </optional>
290*e5dd7070Spatrick      <optional>
291*e5dd7070Spatrick        <ref name="Parameters" />
292*e5dd7070Spatrick      </optional>
293*e5dd7070Spatrick      <optional>
294*e5dd7070Spatrick        <ref name="ResultDiscussion" />
295*e5dd7070Spatrick      </optional>
296*e5dd7070Spatrick
297*e5dd7070Spatrick      <optional>
298*e5dd7070Spatrick        <ref name="Discussion" />
299*e5dd7070Spatrick      </optional>
300*e5dd7070Spatrick    </element>
301*e5dd7070Spatrick  </define>
302*e5dd7070Spatrick
303*e5dd7070Spatrick  <define name="attrSourceLocation">
304*e5dd7070Spatrick    <optional>
305*e5dd7070Spatrick      <attribute name="file">
306*e5dd7070Spatrick        <!-- Non-empty text content. -->
307*e5dd7070Spatrick        <data type="string">
308*e5dd7070Spatrick          <param name="pattern">.*\S.*</param>
309*e5dd7070Spatrick        </data>
310*e5dd7070Spatrick      </attribute>
311*e5dd7070Spatrick    </optional>
312*e5dd7070Spatrick    <optional>
313*e5dd7070Spatrick      <attribute name="line">
314*e5dd7070Spatrick        <data type="positiveInteger" />
315*e5dd7070Spatrick      </attribute>
316*e5dd7070Spatrick      <attribute name="column">
317*e5dd7070Spatrick        <data type="positiveInteger" />
318*e5dd7070Spatrick      </attribute>
319*e5dd7070Spatrick    </optional>
320*e5dd7070Spatrick  </define>
321*e5dd7070Spatrick
322*e5dd7070Spatrick  <define name="Name">
323*e5dd7070Spatrick    <element name="Name">
324*e5dd7070Spatrick      <!-- Non-empty text content. -->
325*e5dd7070Spatrick      <data type="string">
326*e5dd7070Spatrick        <param name="pattern">.*\S.*</param>
327*e5dd7070Spatrick      </data>
328*e5dd7070Spatrick    </element>
329*e5dd7070Spatrick  </define>
330*e5dd7070Spatrick
331*e5dd7070Spatrick  <define name="USR">
332*e5dd7070Spatrick    <element name="USR">
333*e5dd7070Spatrick      <!-- Non-empty text content. -->
334*e5dd7070Spatrick      <data type="string">
335*e5dd7070Spatrick        <param name="pattern">.*\S.*</param>
336*e5dd7070Spatrick      </data>
337*e5dd7070Spatrick    </element>
338*e5dd7070Spatrick  </define>
339*e5dd7070Spatrick
340*e5dd7070Spatrick  <define name="Abstract">
341*e5dd7070Spatrick    <element name="Abstract">
342*e5dd7070Spatrick      <zeroOrMore>
343*e5dd7070Spatrick        <ref name="TextBlockContent" />
344*e5dd7070Spatrick      </zeroOrMore>
345*e5dd7070Spatrick    </element>
346*e5dd7070Spatrick  </define>
347*e5dd7070Spatrick
348*e5dd7070Spatrick  <define name="Declaration">
349*e5dd7070Spatrick    <element name="Declaration">
350*e5dd7070Spatrick      <!-- Non-empty text content. -->
351*e5dd7070Spatrick      <data type="string"/>
352*e5dd7070Spatrick    </element>
353*e5dd7070Spatrick  </define>
354*e5dd7070Spatrick
355*e5dd7070Spatrick  <define name="Headerfile">
356*e5dd7070Spatrick    <element name="Headerfile">
357*e5dd7070Spatrick      <oneOrMore>
358*e5dd7070Spatrick        <ref name="TextBlockContent" />
359*e5dd7070Spatrick      </oneOrMore>
360*e5dd7070Spatrick    </element>
361*e5dd7070Spatrick  </define>
362*e5dd7070Spatrick
363*e5dd7070Spatrick  <define name="Discussion">
364*e5dd7070Spatrick    <element name="Discussion">
365*e5dd7070Spatrick      <zeroOrMore>
366*e5dd7070Spatrick        <ref name="TextBlockContent" />
367*e5dd7070Spatrick      </zeroOrMore>
368*e5dd7070Spatrick    </element>
369*e5dd7070Spatrick  </define>
370*e5dd7070Spatrick
371*e5dd7070Spatrick  <define name="TemplateParameters">
372*e5dd7070Spatrick    <element name="TemplateParameters">
373*e5dd7070Spatrick      <!-- Parameter elements should be sorted according to position. -->
374*e5dd7070Spatrick      <oneOrMore>
375*e5dd7070Spatrick        <element name="Parameter">
376*e5dd7070Spatrick          <element name="Name">
377*e5dd7070Spatrick            <!-- Non-empty text content. -->
378*e5dd7070Spatrick            <data type="string">
379*e5dd7070Spatrick              <param name="pattern">.*\S.*</param>
380*e5dd7070Spatrick            </data>
381*e5dd7070Spatrick          </element>
382*e5dd7070Spatrick          <optional>
383*e5dd7070Spatrick            <!-- This is index at depth 0.  libclang API can return more
384*e5dd7070Spatrick                 information about position, but we expose only essential
385*e5dd7070Spatrick                 information here, since "Parameter" elements are already
386*e5dd7070Spatrick                 sorted.
387*e5dd7070Spatrick
388*e5dd7070Spatrick                 "Position" element could be added in future if needed.  -->
389*e5dd7070Spatrick            <element name="Index">
390*e5dd7070Spatrick              <data type="nonNegativeInteger" />
391*e5dd7070Spatrick            </element>
392*e5dd7070Spatrick          </optional>
393*e5dd7070Spatrick          <!-- In general, template parameters with whitespace discussion
394*e5dd7070Spatrick               should not be emitted.  Schema might be more strict here. -->
395*e5dd7070Spatrick          <element name="Discussion">
396*e5dd7070Spatrick            <ref name="TextBlockContent" />
397*e5dd7070Spatrick          </element>
398*e5dd7070Spatrick        </element>
399*e5dd7070Spatrick      </oneOrMore>
400*e5dd7070Spatrick    </element>
401*e5dd7070Spatrick  </define>
402*e5dd7070Spatrick
403*e5dd7070Spatrick  <define name="Parameters">
404*e5dd7070Spatrick    <element name="Parameters">
405*e5dd7070Spatrick      <!-- Parameter elements should be sorted according to index. -->
406*e5dd7070Spatrick      <oneOrMore>
407*e5dd7070Spatrick        <element name="Parameter">
408*e5dd7070Spatrick          <element name="Name">
409*e5dd7070Spatrick            <!-- Non-empty text content. -->
410*e5dd7070Spatrick            <data type="string">
411*e5dd7070Spatrick              <param name="pattern">.*\S.*</param>
412*e5dd7070Spatrick            </data>
413*e5dd7070Spatrick          </element>
414*e5dd7070Spatrick          <optional>
415*e5dd7070Spatrick            <choice>
416*e5dd7070Spatrick              <element name="Index">
417*e5dd7070Spatrick                <data type="nonNegativeInteger" />
418*e5dd7070Spatrick              </element>
419*e5dd7070Spatrick              <element name="IsVarArg">
420*e5dd7070Spatrick                <empty />
421*e5dd7070Spatrick              </element>
422*e5dd7070Spatrick            </choice>
423*e5dd7070Spatrick          </optional>
424*e5dd7070Spatrick          <element name="Direction">
425*e5dd7070Spatrick            <attribute name="isExplicit">
426*e5dd7070Spatrick              <data type="boolean" />
427*e5dd7070Spatrick            </attribute>
428*e5dd7070Spatrick            <choice>
429*e5dd7070Spatrick              <value>in</value>
430*e5dd7070Spatrick              <value>out</value>
431*e5dd7070Spatrick              <value>in,out</value>
432*e5dd7070Spatrick            </choice>
433*e5dd7070Spatrick          </element>
434*e5dd7070Spatrick          <!-- In general, template parameters with whitespace discussion
435*e5dd7070Spatrick               should not be emitted, unless direction is explicitly specified.
436*e5dd7070Spatrick               Schema might be more strict here. -->
437*e5dd7070Spatrick          <element name="Discussion">
438*e5dd7070Spatrick            <ref name="TextBlockContent" />
439*e5dd7070Spatrick          </element>
440*e5dd7070Spatrick        </element>
441*e5dd7070Spatrick      </oneOrMore>
442*e5dd7070Spatrick    </element>
443*e5dd7070Spatrick  </define>
444*e5dd7070Spatrick
445*e5dd7070Spatrick  <define name="Exceptions">
446*e5dd7070Spatrick    <element name="Exceptions">
447*e5dd7070Spatrick      <oneOrMore>
448*e5dd7070Spatrick        <ref name="TextBlockContent" />
449*e5dd7070Spatrick      </oneOrMore>
450*e5dd7070Spatrick    </element>
451*e5dd7070Spatrick  </define>
452*e5dd7070Spatrick
453*e5dd7070Spatrick  <define name="Availability">
454*e5dd7070Spatrick    <element name="Availability">
455*e5dd7070Spatrick      <attribute name="distribution">
456*e5dd7070Spatrick        <data type="string" />
457*e5dd7070Spatrick      </attribute>
458*e5dd7070Spatrick      <optional>
459*e5dd7070Spatrick        <element name="IntroducedInVersion">
460*e5dd7070Spatrick          <data type="string">
461*e5dd7070Spatrick            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
462*e5dd7070Spatrick          </data>
463*e5dd7070Spatrick        </element>
464*e5dd7070Spatrick      </optional>
465*e5dd7070Spatrick      <optional>
466*e5dd7070Spatrick        <element name="DeprecatedInVersion">
467*e5dd7070Spatrick          <data type="string">
468*e5dd7070Spatrick            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
469*e5dd7070Spatrick          </data>
470*e5dd7070Spatrick        </element>
471*e5dd7070Spatrick      </optional>
472*e5dd7070Spatrick      <optional>
473*e5dd7070Spatrick        <element name="RemovedAfterVersion">
474*e5dd7070Spatrick          <data type="string">
475*e5dd7070Spatrick            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
476*e5dd7070Spatrick          </data>
477*e5dd7070Spatrick        </element>
478*e5dd7070Spatrick      </optional>
479*e5dd7070Spatrick      <optional>
480*e5dd7070Spatrick        <element name="DeprecationSummary">
481*e5dd7070Spatrick          <data type="string" />
482*e5dd7070Spatrick        </element>
483*e5dd7070Spatrick      </optional>
484*e5dd7070Spatrick      <optional>
485*e5dd7070Spatrick        <ref name="Unavailable" />
486*e5dd7070Spatrick      </optional>
487*e5dd7070Spatrick    </element>
488*e5dd7070Spatrick  </define>
489*e5dd7070Spatrick
490*e5dd7070Spatrick  <define name="Deprecated">
491*e5dd7070Spatrick    <element name="Deprecated">
492*e5dd7070Spatrick      <optional>
493*e5dd7070Spatrick        <data type="string" />
494*e5dd7070Spatrick      </optional>
495*e5dd7070Spatrick    </element>
496*e5dd7070Spatrick  </define>
497*e5dd7070Spatrick
498*e5dd7070Spatrick  <define name="Unavailable">
499*e5dd7070Spatrick    <element name="Unavailable">
500*e5dd7070Spatrick      <optional>
501*e5dd7070Spatrick        <data type="string" />
502*e5dd7070Spatrick      </optional>
503*e5dd7070Spatrick    </element>
504*e5dd7070Spatrick  </define>
505*e5dd7070Spatrick
506*e5dd7070Spatrick  <define name="ResultDiscussion">
507*e5dd7070Spatrick    <element name="ResultDiscussion">
508*e5dd7070Spatrick      <zeroOrMore>
509*e5dd7070Spatrick        <ref name="TextBlockContent" />
510*e5dd7070Spatrick      </zeroOrMore>
511*e5dd7070Spatrick    </element>
512*e5dd7070Spatrick  </define>
513*e5dd7070Spatrick
514*e5dd7070Spatrick  <define name="TextBlockContent">
515*e5dd7070Spatrick    <choice>
516*e5dd7070Spatrick      <element name="Para">
517*e5dd7070Spatrick        <optional>
518*e5dd7070Spatrick          <attribute name="kind">
519*e5dd7070Spatrick            <choice>
520*e5dd7070Spatrick              <value>attention</value>
521*e5dd7070Spatrick              <value>author</value>
522*e5dd7070Spatrick              <value>authors</value>
523*e5dd7070Spatrick              <value>bug</value>
524*e5dd7070Spatrick              <value>copyright</value>
525*e5dd7070Spatrick              <value>date</value>
526*e5dd7070Spatrick              <value>invariant</value>
527*e5dd7070Spatrick              <value>note</value>
528*e5dd7070Spatrick              <value>post</value>
529*e5dd7070Spatrick              <value>pre</value>
530*e5dd7070Spatrick              <value>remark</value>
531*e5dd7070Spatrick              <value>remarks</value>
532*e5dd7070Spatrick              <value>sa</value>
533*e5dd7070Spatrick              <value>see</value>
534*e5dd7070Spatrick              <value>since</value>
535*e5dd7070Spatrick              <value>todo</value>
536*e5dd7070Spatrick              <value>version</value>
537*e5dd7070Spatrick              <value>warning</value>
538*e5dd7070Spatrick            </choice>
539*e5dd7070Spatrick          </attribute>
540*e5dd7070Spatrick        </optional>
541*e5dd7070Spatrick        <zeroOrMore>
542*e5dd7070Spatrick          <ref name="TextInlineContent" />
543*e5dd7070Spatrick        </zeroOrMore>
544*e5dd7070Spatrick      </element>
545*e5dd7070Spatrick      <element name="Verbatim">
546*e5dd7070Spatrick        <attribute name="xml:space">
547*e5dd7070Spatrick          <value>preserve</value>
548*e5dd7070Spatrick        </attribute>
549*e5dd7070Spatrick        <attribute name="kind">
550*e5dd7070Spatrick          <!-- TODO: add all Doxygen verbatim kinds -->
551*e5dd7070Spatrick          <choice>
552*e5dd7070Spatrick            <value>code</value>
553*e5dd7070Spatrick            <value>verbatim</value>
554*e5dd7070Spatrick          </choice>
555*e5dd7070Spatrick        </attribute>
556*e5dd7070Spatrick        <text />
557*e5dd7070Spatrick      </element>
558*e5dd7070Spatrick    </choice>
559*e5dd7070Spatrick  </define>
560*e5dd7070Spatrick
561*e5dd7070Spatrick  <define name="TextInlineContent">
562*e5dd7070Spatrick    <choice>
563*e5dd7070Spatrick      <text />
564*e5dd7070Spatrick      <element name="bold">
565*e5dd7070Spatrick        <!-- Non-empty text content. -->
566*e5dd7070Spatrick        <data type="string">
567*e5dd7070Spatrick          <param name="pattern">.*\S.*</param>
568*e5dd7070Spatrick        </data>
569*e5dd7070Spatrick      </element>
570*e5dd7070Spatrick      <element name="monospaced">
571*e5dd7070Spatrick        <!-- Non-empty text content. -->
572*e5dd7070Spatrick        <data type="string">
573*e5dd7070Spatrick          <param name="pattern">.*\S.*</param>
574*e5dd7070Spatrick        </data>
575*e5dd7070Spatrick      </element>
576*e5dd7070Spatrick      <element name="emphasized">
577*e5dd7070Spatrick        <!-- Non-empty text content. -->
578*e5dd7070Spatrick        <data type="string">
579*e5dd7070Spatrick          <param name="pattern">.*\S.*</param>
580*e5dd7070Spatrick        </data>
581*e5dd7070Spatrick      </element>
582*e5dd7070Spatrick      <element name="anchor">
583*e5dd7070Spatrick        <attribute name="id">
584*e5dd7070Spatrick          <data type="string">
585*e5dd7070Spatrick            <!-- Non-empty text content without whitespace. -->
586*e5dd7070Spatrick            <param name="pattern">\S+</param>
587*e5dd7070Spatrick          </data>
588*e5dd7070Spatrick        </attribute>
589*e5dd7070Spatrick      </element>
590*e5dd7070Spatrick      <element name="rawHTML">
591*e5dd7070Spatrick        <optional>
592*e5dd7070Spatrick          <!-- If not specified, the default value is 'false'. -->
593*e5dd7070Spatrick          <!-- The value 'false' or absence of the attribute does not imply
594*e5dd7070Spatrick               that the HTML is actually well-formed. -->
595*e5dd7070Spatrick          <attribute name="isMalformed">
596*e5dd7070Spatrick            <data type="boolean" />
597*e5dd7070Spatrick          </attribute>
598*e5dd7070Spatrick        </optional>
599*e5dd7070Spatrick        <!-- Non-empty text content. -->
600*e5dd7070Spatrick        <data type="string">
601*e5dd7070Spatrick          <param name="pattern">.*\S.*</param>
602*e5dd7070Spatrick        </data>
603*e5dd7070Spatrick      </element>
604*e5dd7070Spatrick    </choice>
605*e5dd7070Spatrick  </define>
606*e5dd7070Spatrick
607*e5dd7070Spatrick</grammar>
608*e5dd7070Spatrick
609