<EBMLSchema xmlns="urn:ietf:rfc:8794" docType="ebml" version="1">
    <element name="EBML" path="\EBML" id="0x1A45DFA3" type="master" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">Set the EBML characteristics of the data to
            follow. Each EBML document has to start with this.</documentation>
    </element>
    <element name="EBMLVersion" path="\EBML\EBMLVersion" id="0x4286" type="uinteger" range="not 0"
        default="1" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">The version of EBML parser used to create the
            file.</documentation>
    </element>
    <element name="EBMLReadVersion" path="\EBML\EBMLReadVersion" id="0x42F7" type="uinteger"
        range="1" default="1" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">The minimum EBML version a parser has to
            support to read this file.</documentation>
    </element>
    <element name="EBMLMaxIDLength" path="\EBML\EBMLMaxIDLength" id="0x42F2" type="uinteger"
        range="&gt;=4" default="4" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">The maximum length of the IDs you'll find in
            this file (4 or less in Matroska).</documentation>
    </element>
    <element name="EBMLMaxSizeLength" path="\EBML\EBMLMaxSizeLength" id="0x42F3" type="uinteger"
        range="not 0" default="8" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">The maximum length of the sizes you'll find in
            this file (8 or less in Matroska). This does not override the element size indicated at
            the beginning of an element. Elements that have an indicated size which is larger than
            what is allowed by EBMLMaxSizeLength shall be considered invalid.</documentation>
    </element>
    <element name="DocType" path="\EBML\DocType" id="0x4282" type="string" length="&gt;0"
        minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">A string that describes the type of document
            that follows this EBML header, for example 'matroska' or 'webm'.</documentation>
    </element>
    <element name="DocTypeVersion" path="\EBML\DocTypeVersion" id="0x4287" type="uinteger"
        range="not 0" default="1" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">The version of DocType interpreter used to
            create the file.</documentation>
    </element>
    <element name="DocTypeReadVersion" path="\EBML\DocTypeReadVersion" id="0x4285" type="uinteger"
        range="not 0" default="1" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">The minimum DocType version an interpreter has
            to support to read this file.</documentation>
    </element>
    <element name="DocTypeExtension" path="\EBML\DocTypeExtension" id="0x4281" type="master">
        <documentation lang="en" purpose="definition">A DocTypeExtension adds extra Elements to the
            main DocType+DocTypeVersion tuple it's attached to. An EBML Reader **MAY** know these
            extra Elements and how to use them. A DocTypeExtension **MAY** be used to iterate
            between experimental Elements before they are integrated into a regular DocTypeVersion.
            Reading one DocTypeExtension version of a DocType+DocTypeVersion tuple doesn't imply one
            should be able to read upper versions of this DocTypeExtension.</documentation>
    </element>
    <element name="DocTypeExtensionName" path="\EBML\DocTypeExtension\DocTypeExtensionName"
        id="0x4283" type="string" length="&gt;0" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">The name of the DocTypeExtension to
            differentiate it from other DocTypeExtensions of the same DocType+DocTypeVersion tuple.
            A DocTypeExtensionName value **MUST** be unique within the EBML Header.</documentation>
    </element>
    <element name="DocTypeExtensionVersion" path="\EBML\DocTypeExtension\DocTypeExtensionVersion"
        id="0x4284" type="uinteger" range="not 0" minOccurs="1" maxOccurs="1">
        <documentation lang="en" purpose="definition">The version of the DocTypeExtension. Different
            DocTypeExtensionVersion values of the same DocType + DocTypeVersion +
            DocTypeExtensionName tuple **MAY** contain completely different sets of extra Elements.
            An EBML Reader **MAY** support multiple versions of the same tuple, only one version of
            the tuple, or not support the tuple at all.</documentation>
    </element>

    <element name="Void" path="\(-\)Void" id="0xEC" type="binary">
        <documentation lang="en" purpose="definition">Used to void damaged data, to avoid unexpected
            behaviors when using damaged data. The content is discarded. Also used to reserve space
            in a sub-element for later use.</documentation>
    </element>
    <element name="CRC-32" path="\(1-\)CRC-32" id="0xBF" type="binary" length="4" maxOccurs="1">
        <documentation lang="en" purpose="definition">The CRC is computed on all the data of the
            Master element it's in. The CRC element should be the first in it's parent master for
            easier reading. All level 1 elements should include a CRC-32. The CRC in use is the IEEE
            CRC32 Little Endian.</documentation>
    </element>
</EBMLSchema>