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