head	1.1;
branch	1.1.1;
access;
symbols
	perseant-exfatfs-base-20261102:1.1.1.3
	netbsd-11-1-RELEASE:1.1.1.3
	netbsd-10-2-RELEASE:1.1.1.3
	netbsd-9-5-RELEASE:1.1.1.2
	netbsd-11-0-RELEASE:1.1.1.3
	netbsd-11-0-RC7:1.1.1.3
	netbsd-11-0-RC6:1.1.1.3
	netbsd-11-0-RC5:1.1.1.3
	netbsd-11-0-RC4:1.1.1.3
	netbsd-11-0-RC3:1.1.1.3
	netbsd-11-0-RC2:1.1.1.3
	netbsd-11-0-RC1:1.1.1.3
	perseant-exfatfs-base-20250801:1.1.1.3
	netbsd-11:1.1.1.3.0.10
	netbsd-11-base:1.1.1.3
	netbsd-10-1-RELEASE:1.1.1.3
	perseant-exfatfs-base-20240630:1.1.1.3
	perseant-exfatfs:1.1.1.3.0.8
	perseant-exfatfs-base:1.1.1.3
	netbsd-8-3-RELEASE:1.1.1.2
	netbsd-9-4-RELEASE:1.1.1.2
	netbsd-10-0-RELEASE:1.1.1.3
	netbsd-10-0-RC6:1.1.1.3
	netbsd-10-0-RC5:1.1.1.3
	netbsd-10-0-RC4:1.1.1.3
	netbsd-10-0-RC3:1.1.1.3
	netbsd-10-0-RC2:1.1.1.3
	netbsd-10-0-RC1:1.1.1.3
	netbsd-10:1.1.1.3.0.6
	netbsd-10-base:1.1.1.3
	netbsd-9-3-RELEASE:1.1.1.2
	cjep_sun2x:1.1.1.3.0.4
	cjep_sun2x-base:1.1.1.3
	cjep_staticlib_x-base1:1.1.1.3
	netbsd-9-2-RELEASE:1.1.1.2
	cjep_staticlib_x:1.1.1.3.0.2
	cjep_staticlib_x-base:1.1.1.3
	netbsd-9-1-RELEASE:1.1.1.2
	phil-wifi-20200421:1.1.1.3
	phil-wifi-20200411:1.1.1.3
	phil-wifi-20200406:1.1.1.3
	netbsd-8-2-RELEASE:1.1.1.2
	netbsd-9-0-RELEASE:1.1.1.2
	netbsd-9-0-RC2:1.1.1.2
	netbsd-9-0-RC1:1.1.1.2
	netbsd-9:1.1.1.2.0.28
	netbsd-9-base:1.1.1.2
	phil-wifi-20190609:1.1.1.2
	netbsd-8-1-RELEASE:1.1.1.2
	netbsd-8-1-RC1:1.1.1.2
	pgoyette-compat-merge-20190127:1.1.1.2
	pgoyette-compat-20190127:1.1.1.2
	pgoyette-compat-20190118:1.1.1.2
	pgoyette-compat-1226:1.1.1.2
	pgoyette-compat-1126:1.1.1.2
	pgoyette-compat-1020:1.1.1.2
	pgoyette-compat-0930:1.1.1.2
	pgoyette-compat-0906:1.1.1.2
	netbsd-7-2-RELEASE:1.1.1.2
	pgoyette-compat-0728:1.1.1.2
	clang-337282:1.1.1.2
	netbsd-8-0-RELEASE:1.1.1.2
	phil-wifi:1.1.1.2.0.26
	phil-wifi-base:1.1.1.2
	pgoyette-compat-0625:1.1.1.2
	netbsd-8-0-RC2:1.1.1.2
	pgoyette-compat-0521:1.1.1.2
	pgoyette-compat-0502:1.1.1.2
	pgoyette-compat-0422:1.1.1.2
	netbsd-8-0-RC1:1.1.1.2
	pgoyette-compat-0415:1.1.1.2
	pgoyette-compat-0407:1.1.1.2
	pgoyette-compat-0330:1.1.1.2
	pgoyette-compat-0322:1.1.1.2
	pgoyette-compat-0315:1.1.1.2
	netbsd-7-1-2-RELEASE:1.1.1.2
	pgoyette-compat:1.1.1.2.0.24
	pgoyette-compat-base:1.1.1.2
	netbsd-7-1-1-RELEASE:1.1.1.2
	clang-319952:1.1.1.2
	matt-nb8-mediatek:1.1.1.2.0.22
	matt-nb8-mediatek-base:1.1.1.2
	clang-309604:1.1.1.2
	perseant-stdc-iso10646:1.1.1.2.0.20
	perseant-stdc-iso10646-base:1.1.1.2
	netbsd-8:1.1.1.2.0.18
	netbsd-8-base:1.1.1.2
	prg-localcount2-base3:1.1.1.2
	prg-localcount2-base2:1.1.1.2
	prg-localcount2-base1:1.1.1.2
	prg-localcount2:1.1.1.2.0.16
	prg-localcount2-base:1.1.1.2
	pgoyette-localcount-20170426:1.1.1.2
	bouyer-socketcan-base1:1.1.1.2
	pgoyette-localcount-20170320:1.1.1.2
	netbsd-7-1:1.1.1.2.0.14
	netbsd-7-1-RELEASE:1.1.1.2
	netbsd-7-1-RC2:1.1.1.2
	clang-294123:1.1.1.2
	netbsd-7-nhusb-base-20170116:1.1.1.2
	bouyer-socketcan:1.1.1.2.0.12
	bouyer-socketcan-base:1.1.1.2
	clang-291444:1.1.1.2
	pgoyette-localcount-20170107:1.1.1.2
	netbsd-7-1-RC1:1.1.1.2
	pgoyette-localcount-20161104:1.1.1.2
	netbsd-7-0-2-RELEASE:1.1.1.2
	localcount-20160914:1.1.1.2
	netbsd-7-nhusb:1.1.1.2.0.10
	netbsd-7-nhusb-base:1.1.1.2
	clang-280599:1.1.1.2
	pgoyette-localcount-20160806:1.1.1.2
	pgoyette-localcount-20160726:1.1.1.2
	pgoyette-localcount:1.1.1.2.0.8
	pgoyette-localcount-base:1.1.1.2
	netbsd-7-0-1-RELEASE:1.1.1.2
	clang-261930:1.1.1.2
	netbsd-7-0:1.1.1.2.0.6
	netbsd-7-0-RELEASE:1.1.1.2
	netbsd-7-0-RC3:1.1.1.2
	netbsd-7-0-RC2:1.1.1.2
	netbsd-7-0-RC1:1.1.1.2
	clang-237755:1.1.1.2
	clang-232565:1.1.1.2
	clang-227398:1.1.1.2
	tls-maxphys-base:1.1.1.2
	tls-maxphys:1.1.1.2.0.4
	netbsd-7:1.1.1.2.0.2
	netbsd-7-base:1.1.1.2
	clang-215315:1.1.1.2
	clang-209886:1.1.1.2
	yamt-pagecache:1.1.1.1.0.4
	yamt-pagecache-base9:1.1.1.1
	tls-earlyentropy:1.1.1.1.0.2
	tls-earlyentropy-base:1.1.1.2
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1.1.1
	riastradh-drm2-base3:1.1.1.1
	clang-202566:1.1.1.1
	clang-201163:1.1.1.1
	clang-199312:1.1.1.1
	clang-198450:1.1.1.1
	clang-196603:1.1.1.1
	clang-195771:1.1.1.1
	LLVM:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2013.11.28.14.14.47;	author joerg;	state Exp;
branches
	1.1.1.1;
next	;
commitid	ow8OybrawrB1f3fx;

1.1.1.1
date	2013.11.28.14.14.47;	author joerg;	state Exp;
branches
	1.1.1.1.2.1
	1.1.1.1.4.1;
next	1.1.1.2;
commitid	ow8OybrawrB1f3fx;

1.1.1.2
date	2014.05.30.18.14.37;	author joerg;	state Exp;
branches
	1.1.1.2.4.1
	1.1.1.2.26.1;
next	1.1.1.3;
commitid	8q0kdlBlCn09GACx;

1.1.1.3
date	2019.11.13.22.19.10;	author joerg;	state dead;
branches;
next	;
commitid	QD8YATxuNG34YJKB;

1.1.1.1.2.1
date	2014.08.10.07.08.03;	author tls;	state Exp;
branches;
next	;
commitid	t01A1TLTYxkpGMLx;

1.1.1.1.4.1
date	2013.11.28.14.14.47;	author yamt;	state dead;
branches;
next	1.1.1.1.4.2;
commitid	WSrDtL5nYAUyiyBx;

1.1.1.1.4.2
date	2014.05.22.16.18.18;	author yamt;	state Exp;
branches;
next	;
commitid	WSrDtL5nYAUyiyBx;

1.1.1.2.4.1
date	2014.05.30.18.14.37;	author tls;	state dead;
branches;
next	1.1.1.2.4.2;
commitid	jTnpym9Qu0o4R1Nx;

1.1.1.2.4.2
date	2014.08.19.23.47.19;	author tls;	state Exp;
branches;
next	;
commitid	jTnpym9Qu0o4R1Nx;

1.1.1.2.26.1
date	2020.04.13.07.46.19;	author martin;	state dead;
branches;
next	;
commitid	X01YhRUPVUDaec4C;


desc
@@


1.1
log
@Initial revision
@
text
@<?xml version="1.0" encoding="UTF-8"?>

<grammar xmlns="http://relaxng.org/ns/structure/1.0"
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

  <start>
    <choice>
      <!-- Everything else not explicitly mentioned below. -->
      <ref name="Other" />

      <ref name="Function" />
      <ref name="Class" />
      <ref name="Variable" />
      <ref name="Namespace" />
      <ref name="Typedef" />
      <ref name="Enum" />
    </choice>
  </start>

  <define name="Other">
    <element name="Other">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>
      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Function">
    <element name="Function">
      <optional>
        <attribute name="templateKind">
          <choice>
            <value>template</value>
            <value>specialization</value>
          </choice>
        </attribute>
      </optional>
      <ref name="attrSourceLocation" />

      <optional>
        <attribute name="isInstanceMethod">
          <data type="boolean" />
        </attribute>
      </optional>
      <optional>
        <attribute name="isClassMethod">
          <data type="boolean" />
        </attribute>
      </optional>

      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="Exceptions" />
      </optional>
      <zeroOrMore>
        <ref name="Availability" />
      </zeroOrMore>
      <zeroOrMore>
        <ref name="Deprecated" />
      </zeroOrMore>
      <zeroOrMore>
        <ref name="Unavailable" />
      </zeroOrMore>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>
      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Class">
    <element name="Class">
      <optional>
        <attribute name="templateKind">
          <choice>
            <value>template</value>
            <value>specialization</value>
            <value>partialSpecialization</value>
          </choice>
        </attribute>
      </optional>
      <ref name="attrSourceLocation" />

      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>

      <!-- Parameters and results don't make sense for classes, but the user
           can specify \param or \returns in a comment anyway. -->
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Variable">
    <element name="Variable">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
            variables, but the user can specify \tparam \param or \returns
            in a comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Namespace">
    <element name="Namespace">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
           namespaces, but the user can specify \tparam, \param or \returns
           in a comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Typedef">
    <element name="Typedef">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <optional>
        <ref name="TemplateParameters" />
      </optional>

      <!-- Parameters and results might make sense for typedefs if the type is
           a function pointer type. -->
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Enum">
    <element name="Enum">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
            enums, but the user can specify \tparam \param or \returns in a
            comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="attrSourceLocation">
    <optional>
      <attribute name="file">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </attribute>
    </optional>
    <optional>
      <attribute name="line">
        <data type="positiveInteger" />
      </attribute>
      <attribute name="column">
        <data type="positiveInteger" />
      </attribute>
    </optional>
  </define>

  <define name="Name">
    <element name="Name">
      <!-- Non-empty text content. -->
      <data type="string">
        <param name="pattern">.*\S.*</param>
      </data>
    </element>
  </define>

  <define name="USR">
    <element name="USR">
      <!-- Non-empty text content. -->
      <data type="string">
        <param name="pattern">.*\S.*</param>
      </data>
    </element>
  </define>

  <define name="Abstract">
    <element name="Abstract">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="Declaration">
    <element name="Declaration">
      <!-- Non-empty text content. -->
      <data type="string"/>
    </element>
  </define>

  <define name="Headerfile">
    <element name="Headerfile">
      <oneOrMore>
        <ref name="TextBlockContent" />
      </oneOrMore>
    </element>
  </define>

  <define name="Discussion">
    <element name="Discussion">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="TemplateParameters">
    <element name="TemplateParameters">
      <!-- Parameter elements should be sorted according to position. -->
      <oneOrMore>
        <element name="Parameter">
          <element name="Name">
            <!-- Non-empty text content. -->
            <data type="string">
              <param name="pattern">.*\S.*</param>
            </data>
          </element>
          <optional>
            <!-- This is index at depth 0.  libclang API can return more
                 information about position, but we expose only essential
                 information here, since "Parameter" elements are already
                 sorted.

                 "Position" element could be added in future if needed.  -->
            <element name="Index">
              <data type="nonNegativeInteger" />
            </element>
          </optional>
          <!-- In general, template parameters with whitespace discussion
               should not be emitted.  Schema might be more strict here. -->
          <element name="Discussion">
            <ref name="TextBlockContent" />
          </element>
        </element>
      </oneOrMore>
    </element>
  </define>

  <define name="Parameters">
    <element name="Parameters">
      <!-- Parameter elements should be sorted according to index. -->
      <oneOrMore>
        <element name="Parameter">
          <element name="Name">
            <!-- Non-empty text content. -->
            <data type="string">
              <param name="pattern">.*\S.*</param>
            </data>
          </element>
          <optional>
            <choice>
              <element name="Index">
                <data type="nonNegativeInteger" />
              </element>
              <element name="IsVarArg">
                <empty />
              </element>
            </choice>
          </optional>
          <element name="Direction">
            <attribute name="isExplicit">
              <data type="boolean" />
            </attribute>
            <choice>
              <value>in</value>
              <value>out</value>
              <value>in,out</value>
            </choice>
          </element>
          <!-- In general, template parameters with whitespace discussion
               should not be emitted, unless direction is explicitly specified.
               Schema might be more strict here. -->
          <element name="Discussion">
            <ref name="TextBlockContent" />
          </element>
        </element>
      </oneOrMore>
    </element>
  </define>

  <define name="Exceptions">
    <element name="Exceptions">
      <oneOrMore>
        <ref name="TextBlockContent" />
      </oneOrMore>
    </element>
  </define>

  <define name="Availability">
    <element name="Availability">
      <attribute name="distribution">
        <data type="string" />
      </attribute>
      <optional>
        <element name="IntroducedInVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="DeprecatedInVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="RemovedAfterVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="DeprecationSummary">
          <data type="string" />
        </element>
      </optional>
      <optional>
        <ref name="Unavailable" />
      </optional>
    </element>
  </define>

  <define name="Deprecated">
    <element name="Deprecated">
      <optional>
        <data type="string" />
      </optional>
    </element>
  </define>

  <define name="Unavailable">
    <element name="Unavailable">
      <optional>
        <data type="string" />
      </optional>
    </element>
  </define>

  <define name="ResultDiscussion">
    <element name="ResultDiscussion">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="TextBlockContent">
    <choice>
      <element name="Para">
        <optional>
          <attribute name="kind">
            <choice>
              <value>attention</value>
              <value>author</value>
              <value>authors</value>
              <value>bug</value>
              <value>copyright</value>
              <value>date</value>
              <value>invariant</value>
              <value>note</value>
              <value>post</value>
              <value>pre</value>
              <value>remark</value>
              <value>remarks</value>
              <value>sa</value>
              <value>see</value>
              <value>since</value>
              <value>todo</value>
              <value>version</value>
              <value>warning</value>
            </choice>
          </attribute>
        </optional>
        <zeroOrMore>
          <ref name="TextInlineContent" />
        </zeroOrMore>
      </element>
      <element name="Verbatim">
        <attribute name="xml:space">
          <value>preserve</value>
        </attribute>
        <attribute name="kind">
          <!-- TODO: add all Doxygen verbatim kinds -->
          <choice>
            <value>code</value>
            <value>verbatim</value>
          </choice>
        </attribute>
        <text />
      </element>
    </choice>
  </define>

  <define name="TextInlineContent">
    <choice>
      <text />
      <element name="bold">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="monospaced">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="emphasized">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="rawHTML">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
    </choice>
  </define>

</grammar>

@


1.1.1.1
log
@Import Clang 3.4rc1 r195771.
@
text
@@


1.1.1.1.2.1
log
@Rebase.
@
text
@a582 8
        <optional>
          <!-- If not specified, the default value is 'false'. -->
          <!-- The value 'false' or absence of the attribute does not imply
               that the HTML is actually well-formed. -->
          <attribute name="isMalformed">
            <data type="boolean" />
          </attribute>
        </optional>
@


1.1.1.2
log
@Import Clang 3.5svn r209886.
@
text
@a582 8
        <optional>
          <!-- If not specified, the default value is 'false'. -->
          <!-- The value 'false' or absence of the attribute does not imply
               that the HTML is actually well-formed. -->
          <attribute name="isMalformed">
            <data type="boolean" />
          </attribute>
        </optional>
@


1.1.1.2.26.1
log
@Mostly merge changes from HEAD upto 20200411
@
text
@@


1.1.1.3
log
@Mark old LLVM instance as dead.
@
text
@@


1.1.1.2.4.1
log
@file comment-xml-schema.rng was added on branch tls-maxphys on 2014-08-19 23:47:19 +0000
@
text
@d1 600
@


1.1.1.2.4.2
log
@Rebase to HEAD as of a few days ago.
@
text
@a0 600
<?xml version="1.0" encoding="UTF-8"?>

<grammar xmlns="http://relaxng.org/ns/structure/1.0"
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

  <start>
    <choice>
      <!-- Everything else not explicitly mentioned below. -->
      <ref name="Other" />

      <ref name="Function" />
      <ref name="Class" />
      <ref name="Variable" />
      <ref name="Namespace" />
      <ref name="Typedef" />
      <ref name="Enum" />
    </choice>
  </start>

  <define name="Other">
    <element name="Other">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>
      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Function">
    <element name="Function">
      <optional>
        <attribute name="templateKind">
          <choice>
            <value>template</value>
            <value>specialization</value>
          </choice>
        </attribute>
      </optional>
      <ref name="attrSourceLocation" />

      <optional>
        <attribute name="isInstanceMethod">
          <data type="boolean" />
        </attribute>
      </optional>
      <optional>
        <attribute name="isClassMethod">
          <data type="boolean" />
        </attribute>
      </optional>

      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="Exceptions" />
      </optional>
      <zeroOrMore>
        <ref name="Availability" />
      </zeroOrMore>
      <zeroOrMore>
        <ref name="Deprecated" />
      </zeroOrMore>
      <zeroOrMore>
        <ref name="Unavailable" />
      </zeroOrMore>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>
      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Class">
    <element name="Class">
      <optional>
        <attribute name="templateKind">
          <choice>
            <value>template</value>
            <value>specialization</value>
            <value>partialSpecialization</value>
          </choice>
        </attribute>
      </optional>
      <ref name="attrSourceLocation" />

      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>

      <!-- Parameters and results don't make sense for classes, but the user
           can specify \param or \returns in a comment anyway. -->
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Variable">
    <element name="Variable">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
            variables, but the user can specify \tparam \param or \returns
            in a comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Namespace">
    <element name="Namespace">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
           namespaces, but the user can specify \tparam, \param or \returns
           in a comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Typedef">
    <element name="Typedef">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <optional>
        <ref name="TemplateParameters" />
      </optional>

      <!-- Parameters and results might make sense for typedefs if the type is
           a function pointer type. -->
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Enum">
    <element name="Enum">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
            enums, but the user can specify \tparam \param or \returns in a
            comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="attrSourceLocation">
    <optional>
      <attribute name="file">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </attribute>
    </optional>
    <optional>
      <attribute name="line">
        <data type="positiveInteger" />
      </attribute>
      <attribute name="column">
        <data type="positiveInteger" />
      </attribute>
    </optional>
  </define>

  <define name="Name">
    <element name="Name">
      <!-- Non-empty text content. -->
      <data type="string">
        <param name="pattern">.*\S.*</param>
      </data>
    </element>
  </define>

  <define name="USR">
    <element name="USR">
      <!-- Non-empty text content. -->
      <data type="string">
        <param name="pattern">.*\S.*</param>
      </data>
    </element>
  </define>

  <define name="Abstract">
    <element name="Abstract">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="Declaration">
    <element name="Declaration">
      <!-- Non-empty text content. -->
      <data type="string"/>
    </element>
  </define>

  <define name="Headerfile">
    <element name="Headerfile">
      <oneOrMore>
        <ref name="TextBlockContent" />
      </oneOrMore>
    </element>
  </define>

  <define name="Discussion">
    <element name="Discussion">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="TemplateParameters">
    <element name="TemplateParameters">
      <!-- Parameter elements should be sorted according to position. -->
      <oneOrMore>
        <element name="Parameter">
          <element name="Name">
            <!-- Non-empty text content. -->
            <data type="string">
              <param name="pattern">.*\S.*</param>
            </data>
          </element>
          <optional>
            <!-- This is index at depth 0.  libclang API can return more
                 information about position, but we expose only essential
                 information here, since "Parameter" elements are already
                 sorted.

                 "Position" element could be added in future if needed.  -->
            <element name="Index">
              <data type="nonNegativeInteger" />
            </element>
          </optional>
          <!-- In general, template parameters with whitespace discussion
               should not be emitted.  Schema might be more strict here. -->
          <element name="Discussion">
            <ref name="TextBlockContent" />
          </element>
        </element>
      </oneOrMore>
    </element>
  </define>

  <define name="Parameters">
    <element name="Parameters">
      <!-- Parameter elements should be sorted according to index. -->
      <oneOrMore>
        <element name="Parameter">
          <element name="Name">
            <!-- Non-empty text content. -->
            <data type="string">
              <param name="pattern">.*\S.*</param>
            </data>
          </element>
          <optional>
            <choice>
              <element name="Index">
                <data type="nonNegativeInteger" />
              </element>
              <element name="IsVarArg">
                <empty />
              </element>
            </choice>
          </optional>
          <element name="Direction">
            <attribute name="isExplicit">
              <data type="boolean" />
            </attribute>
            <choice>
              <value>in</value>
              <value>out</value>
              <value>in,out</value>
            </choice>
          </element>
          <!-- In general, template parameters with whitespace discussion
               should not be emitted, unless direction is explicitly specified.
               Schema might be more strict here. -->
          <element name="Discussion">
            <ref name="TextBlockContent" />
          </element>
        </element>
      </oneOrMore>
    </element>
  </define>

  <define name="Exceptions">
    <element name="Exceptions">
      <oneOrMore>
        <ref name="TextBlockContent" />
      </oneOrMore>
    </element>
  </define>

  <define name="Availability">
    <element name="Availability">
      <attribute name="distribution">
        <data type="string" />
      </attribute>
      <optional>
        <element name="IntroducedInVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="DeprecatedInVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="RemovedAfterVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="DeprecationSummary">
          <data type="string" />
        </element>
      </optional>
      <optional>
        <ref name="Unavailable" />
      </optional>
    </element>
  </define>

  <define name="Deprecated">
    <element name="Deprecated">
      <optional>
        <data type="string" />
      </optional>
    </element>
  </define>

  <define name="Unavailable">
    <element name="Unavailable">
      <optional>
        <data type="string" />
      </optional>
    </element>
  </define>

  <define name="ResultDiscussion">
    <element name="ResultDiscussion">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="TextBlockContent">
    <choice>
      <element name="Para">
        <optional>
          <attribute name="kind">
            <choice>
              <value>attention</value>
              <value>author</value>
              <value>authors</value>
              <value>bug</value>
              <value>copyright</value>
              <value>date</value>
              <value>invariant</value>
              <value>note</value>
              <value>post</value>
              <value>pre</value>
              <value>remark</value>
              <value>remarks</value>
              <value>sa</value>
              <value>see</value>
              <value>since</value>
              <value>todo</value>
              <value>version</value>
              <value>warning</value>
            </choice>
          </attribute>
        </optional>
        <zeroOrMore>
          <ref name="TextInlineContent" />
        </zeroOrMore>
      </element>
      <element name="Verbatim">
        <attribute name="xml:space">
          <value>preserve</value>
        </attribute>
        <attribute name="kind">
          <!-- TODO: add all Doxygen verbatim kinds -->
          <choice>
            <value>code</value>
            <value>verbatim</value>
          </choice>
        </attribute>
        <text />
      </element>
    </choice>
  </define>

  <define name="TextInlineContent">
    <choice>
      <text />
      <element name="bold">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="monospaced">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="emphasized">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="rawHTML">
        <optional>
          <!-- If not specified, the default value is 'false'. -->
          <!-- The value 'false' or absence of the attribute does not imply
               that the HTML is actually well-formed. -->
          <attribute name="isMalformed">
            <data type="boolean" />
          </attribute>
        </optional>
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
    </choice>
  </define>

</grammar>

@


1.1.1.1.4.1
log
@file comment-xml-schema.rng was added on branch yamt-pagecache on 2014-05-22 16:18:18 +0000
@
text
@d1 592
@


1.1.1.1.4.2
log
@sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")
@
text
@a0 592
<?xml version="1.0" encoding="UTF-8"?>

<grammar xmlns="http://relaxng.org/ns/structure/1.0"
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">

  <start>
    <choice>
      <!-- Everything else not explicitly mentioned below. -->
      <ref name="Other" />

      <ref name="Function" />
      <ref name="Class" />
      <ref name="Variable" />
      <ref name="Namespace" />
      <ref name="Typedef" />
      <ref name="Enum" />
    </choice>
  </start>

  <define name="Other">
    <element name="Other">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>
      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Function">
    <element name="Function">
      <optional>
        <attribute name="templateKind">
          <choice>
            <value>template</value>
            <value>specialization</value>
          </choice>
        </attribute>
      </optional>
      <ref name="attrSourceLocation" />

      <optional>
        <attribute name="isInstanceMethod">
          <data type="boolean" />
        </attribute>
      </optional>
      <optional>
        <attribute name="isClassMethod">
          <data type="boolean" />
        </attribute>
      </optional>

      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="Exceptions" />
      </optional>
      <zeroOrMore>
        <ref name="Availability" />
      </zeroOrMore>
      <zeroOrMore>
        <ref name="Deprecated" />
      </zeroOrMore>
      <zeroOrMore>
        <ref name="Unavailable" />
      </zeroOrMore>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>
      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Class">
    <element name="Class">
      <optional>
        <attribute name="templateKind">
          <choice>
            <value>template</value>
            <value>specialization</value>
            <value>partialSpecialization</value>
          </choice>
        </attribute>
      </optional>
      <ref name="attrSourceLocation" />

      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>
      <optional>
        <ref name="TemplateParameters" />
      </optional>

      <!-- Parameters and results don't make sense for classes, but the user
           can specify \param or \returns in a comment anyway. -->
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Variable">
    <element name="Variable">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
            variables, but the user can specify \tparam \param or \returns
            in a comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Namespace">
    <element name="Namespace">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
           namespaces, but the user can specify \tparam, \param or \returns
           in a comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Typedef">
    <element name="Typedef">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <optional>
        <ref name="TemplateParameters" />
      </optional>

      <!-- Parameters and results might make sense for typedefs if the type is
           a function pointer type. -->
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="Enum">
    <element name="Enum">
      <ref name="attrSourceLocation" />
      <ref name="Name" />
      <optional>
        <ref name="USR" />
      </optional>
      <optional>
        <ref name="Headerfile" />
      </optional>
      <optional>
        <ref name="Declaration" />
      </optional>
      <optional>
        <ref name="Abstract" />
      </optional>

      <!-- Template parameters, parameters and results don't make sense for
            enums, but the user can specify \tparam \param or \returns in a
            comment anyway. -->
      <optional>
        <ref name="TemplateParameters" />
      </optional>
      <optional>
        <ref name="Parameters" />
      </optional>
      <optional>
        <ref name="ResultDiscussion" />
      </optional>

      <optional>
        <ref name="Discussion" />
      </optional>
    </element>
  </define>

  <define name="attrSourceLocation">
    <optional>
      <attribute name="file">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </attribute>
    </optional>
    <optional>
      <attribute name="line">
        <data type="positiveInteger" />
      </attribute>
      <attribute name="column">
        <data type="positiveInteger" />
      </attribute>
    </optional>
  </define>

  <define name="Name">
    <element name="Name">
      <!-- Non-empty text content. -->
      <data type="string">
        <param name="pattern">.*\S.*</param>
      </data>
    </element>
  </define>

  <define name="USR">
    <element name="USR">
      <!-- Non-empty text content. -->
      <data type="string">
        <param name="pattern">.*\S.*</param>
      </data>
    </element>
  </define>

  <define name="Abstract">
    <element name="Abstract">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="Declaration">
    <element name="Declaration">
      <!-- Non-empty text content. -->
      <data type="string"/>
    </element>
  </define>

  <define name="Headerfile">
    <element name="Headerfile">
      <oneOrMore>
        <ref name="TextBlockContent" />
      </oneOrMore>
    </element>
  </define>

  <define name="Discussion">
    <element name="Discussion">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="TemplateParameters">
    <element name="TemplateParameters">
      <!-- Parameter elements should be sorted according to position. -->
      <oneOrMore>
        <element name="Parameter">
          <element name="Name">
            <!-- Non-empty text content. -->
            <data type="string">
              <param name="pattern">.*\S.*</param>
            </data>
          </element>
          <optional>
            <!-- This is index at depth 0.  libclang API can return more
                 information about position, but we expose only essential
                 information here, since "Parameter" elements are already
                 sorted.

                 "Position" element could be added in future if needed.  -->
            <element name="Index">
              <data type="nonNegativeInteger" />
            </element>
          </optional>
          <!-- In general, template parameters with whitespace discussion
               should not be emitted.  Schema might be more strict here. -->
          <element name="Discussion">
            <ref name="TextBlockContent" />
          </element>
        </element>
      </oneOrMore>
    </element>
  </define>

  <define name="Parameters">
    <element name="Parameters">
      <!-- Parameter elements should be sorted according to index. -->
      <oneOrMore>
        <element name="Parameter">
          <element name="Name">
            <!-- Non-empty text content. -->
            <data type="string">
              <param name="pattern">.*\S.*</param>
            </data>
          </element>
          <optional>
            <choice>
              <element name="Index">
                <data type="nonNegativeInteger" />
              </element>
              <element name="IsVarArg">
                <empty />
              </element>
            </choice>
          </optional>
          <element name="Direction">
            <attribute name="isExplicit">
              <data type="boolean" />
            </attribute>
            <choice>
              <value>in</value>
              <value>out</value>
              <value>in,out</value>
            </choice>
          </element>
          <!-- In general, template parameters with whitespace discussion
               should not be emitted, unless direction is explicitly specified.
               Schema might be more strict here. -->
          <element name="Discussion">
            <ref name="TextBlockContent" />
          </element>
        </element>
      </oneOrMore>
    </element>
  </define>

  <define name="Exceptions">
    <element name="Exceptions">
      <oneOrMore>
        <ref name="TextBlockContent" />
      </oneOrMore>
    </element>
  </define>

  <define name="Availability">
    <element name="Availability">
      <attribute name="distribution">
        <data type="string" />
      </attribute>
      <optional>
        <element name="IntroducedInVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="DeprecatedInVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="RemovedAfterVersion">
          <data type="string">
            <param name="pattern">\d+|\d+\.\d+|\d+\.\d+.\d+</param>
          </data>
        </element>
      </optional>
      <optional>
        <element name="DeprecationSummary">
          <data type="string" />
        </element>
      </optional>
      <optional>
        <ref name="Unavailable" />
      </optional>
    </element>
  </define>

  <define name="Deprecated">
    <element name="Deprecated">
      <optional>
        <data type="string" />
      </optional>
    </element>
  </define>

  <define name="Unavailable">
    <element name="Unavailable">
      <optional>
        <data type="string" />
      </optional>
    </element>
  </define>

  <define name="ResultDiscussion">
    <element name="ResultDiscussion">
      <zeroOrMore>
        <ref name="TextBlockContent" />
      </zeroOrMore>
    </element>
  </define>

  <define name="TextBlockContent">
    <choice>
      <element name="Para">
        <optional>
          <attribute name="kind">
            <choice>
              <value>attention</value>
              <value>author</value>
              <value>authors</value>
              <value>bug</value>
              <value>copyright</value>
              <value>date</value>
              <value>invariant</value>
              <value>note</value>
              <value>post</value>
              <value>pre</value>
              <value>remark</value>
              <value>remarks</value>
              <value>sa</value>
              <value>see</value>
              <value>since</value>
              <value>todo</value>
              <value>version</value>
              <value>warning</value>
            </choice>
          </attribute>
        </optional>
        <zeroOrMore>
          <ref name="TextInlineContent" />
        </zeroOrMore>
      </element>
      <element name="Verbatim">
        <attribute name="xml:space">
          <value>preserve</value>
        </attribute>
        <attribute name="kind">
          <!-- TODO: add all Doxygen verbatim kinds -->
          <choice>
            <value>code</value>
            <value>verbatim</value>
          </choice>
        </attribute>
        <text />
      </element>
    </choice>
  </define>

  <define name="TextInlineContent">
    <choice>
      <text />
      <element name="bold">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="monospaced">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="emphasized">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
      <element name="rawHTML">
        <!-- Non-empty text content. -->
        <data type="string">
          <param name="pattern">.*\S.*</param>
        </data>
      </element>
    </choice>
  </define>

</grammar>

@


