draft-ietf-cellar-ebml-13.txt   draft-ietf-cellar-ebml-14.txt 
cellar S. Lhomme cellar S. Lhomme
Internet-Draft D. Rice Internet-Draft
Intended status: Standards Track M. Bunkus Intended status: Standards Track D. Rice
Expires: 24 April 2020 22 October 2019 Expires: 3 June 2020
M. Bunkus
1 December 2019
Extensible Binary Meta Language Extensible Binary Meta Language
draft-ietf-cellar-ebml-13 draft-ietf-cellar-ebml-14
Abstract Abstract
This document defines the Extensible Binary Meta Language (EBML) This document defines the Extensible Binary Meta Language (EBML)
format as a generalized file format for any type of data in a format as a generalized file format for any type of data in a
hierarchical form. EBML is designed as a binary equivalent to XML hierarchical form. EBML is designed as a binary equivalent to XML
and uses a storage-efficient approach to build nested Elements with and uses a storage-efficient approach to build nested Elements with
identifiers, lengths, and values. Similar to how an XML Schema identifiers, lengths, and values. Similar to how an XML Schema
defines the structure and semantics of an XML Document, this document defines the structure and semantics of an XML Document, this document
defines how EBML Schemas are created to convey the semantics of an defines how EBML Schemas are created to convey the semantics of an
skipping to change at page 1, line 37 skipping to change at page 1, line 39
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on 24 April 2020. This Internet-Draft will expire on 3 June 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document. license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text extracted from this document must include Simplified BSD License text
as described in Section 4.e of the Trust Legal Provisions and are as described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License. provided without warranty as described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Notation and Conventions . . . . . . . . . . . . . . . . . . 4 2. Notation and Conventions . . . . . . . . . . . . . . . . . . 4
3. Structure . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3. Structure . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Variable Size Integer . . . . . . . . . . . . . . . . . . . . 7 4. Variable Size Integer . . . . . . . . . . . . . . . . . . . . 7
4.1. VINT_WIDTH . . . . . . . . . . . . . . . . . . . . . . . 7 4.1. VINT_WIDTH . . . . . . . . . . . . . . . . . . . . . . . 7
4.2. VINT_MARKER . . . . . . . . . . . . . . . . . . . . . . . 7 4.2. VINT_MARKER . . . . . . . . . . . . . . . . . . . . . . . 7
4.3. VINT_DATA . . . . . . . . . . . . . . . . . . . . . . . . 8 4.3. VINT_DATA . . . . . . . . . . . . . . . . . . . . . . . . 8
4.4. VINT Examples . . . . . . . . . . . . . . . . . . . . . . 8 4.4. VINT Examples . . . . . . . . . . . . . . . . . . . . . . 8
5. Element ID . . . . . . . . . . . . . . . . . . . . . . . . . 9 5. Element ID . . . . . . . . . . . . . . . . . . . . . . . . . 9
6. Element Data Size . . . . . . . . . . . . . . . . . . . . . . 11 6. Element Data Size . . . . . . . . . . . . . . . . . . . . . . 11
6.1. Data Size Format . . . . . . . . . . . . . . . . . . . . 11 6.1. Data Size Format . . . . . . . . . . . . . . . . . . . . 11
skipping to change at page 2, line 43 skipping to change at page 2, line 45
8.2. EBML Body . . . . . . . . . . . . . . . . . . . . . . . . 18 8.2. EBML Body . . . . . . . . . . . . . . . . . . . . . . . . 18
9. EBML Stream . . . . . . . . . . . . . . . . . . . . . . . . . 18 9. EBML Stream . . . . . . . . . . . . . . . . . . . . . . . . . 18
10. EBML Versioning . . . . . . . . . . . . . . . . . . . . . . . 18 10. EBML Versioning . . . . . . . . . . . . . . . . . . . . . . . 18
10.1. EBML Header Version . . . . . . . . . . . . . . . . . . 19 10.1. EBML Header Version . . . . . . . . . . . . . . . . . . 19
10.2. EBML Document Version . . . . . . . . . . . . . . . . . 19 10.2. EBML Document Version . . . . . . . . . . . . . . . . . 19
11. Elements semantic . . . . . . . . . . . . . . . . . . . . . . 19 11. Elements semantic . . . . . . . . . . . . . . . . . . . . . . 19
11.1. EBML Schema . . . . . . . . . . . . . . . . . . . . . . 19 11.1. EBML Schema . . . . . . . . . . . . . . . . . . . . . . 19
11.1.1. EBML Schema Example . . . . . . . . . . . . . . . . 20 11.1.1. EBML Schema Example . . . . . . . . . . . . . . . . 20
11.1.2. <EBMLSchema> Element . . . . . . . . . . . . . . . . 21 11.1.2. <EBMLSchema> Element . . . . . . . . . . . . . . . . 21
11.1.3. <EBMLSchema> Attributes . . . . . . . . . . . . . . 21 11.1.3. <EBMLSchema> Attributes . . . . . . . . . . . . . . 21
11.1.4. <element> Element . . . . . . . . . . . . . . . . . 21 11.1.4. <element> Element . . . . . . . . . . . . . . . . . 22
11.1.5. <element> Attributes . . . . . . . . . . . . . . . . 22 11.1.5. <element> Attributes . . . . . . . . . . . . . . . . 22
11.1.6. <documentation> Element . . . . . . . . . . . . . . 29 11.1.6. <documentation> Element . . . . . . . . . . . . . . 29
11.1.7. <documentation> Attributes . . . . . . . . . . . . . 29 11.1.7. <documentation> Attributes . . . . . . . . . . . . . 29
11.1.8. <implementation_note> Element . . . . . . . . . . . 29 11.1.8. <implementation_note> Element . . . . . . . . . . . 30
11.1.9. <implementation_note> Attributes . . . . . . . . . . 29 11.1.9. <implementation_note> Attributes . . . . . . . . . . 30
11.1.10. <restriction> Element . . . . . . . . . . . . . . . 30 11.1.10. <restriction> Element . . . . . . . . . . . . . . . 31
11.1.11. <enum> Element . . . . . . . . . . . . . . . . . . . 30 11.1.11. <enum> Element . . . . . . . . . . . . . . . . . . . 32
11.1.12. <enum> Attributes . . . . . . . . . . . . . . . . . 30 11.1.12. <enum> Attributes . . . . . . . . . . . . . . . . . 32
11.1.13. <extension> Element . . . . . . . . . . . . . . . . 30 11.1.13. <extension> Element . . . . . . . . . . . . . . . . 32
11.1.14. <extension> Attributes . . . . . . . . . . . . . . . 31 11.1.14. <extension> Attributes . . . . . . . . . . . . . . . 32
11.1.15. XML Schema for EBML Schema . . . . . . . . . . . . . 31 11.1.15. XML Schema for EBML Schema . . . . . . . . . . . . . 33
11.1.16. Identically Recurring Elements . . . . . . . . . . . 33 11.1.16. Identically Recurring Elements . . . . . . . . . . . 37
11.1.17. Textual expression of floats . . . . . . . . . . . . 34 11.1.17. Textual expression of floats . . . . . . . . . . . . 37
11.1.18. Note on the use of default attributes to define 11.1.18. Note on the use of default attributes to define
Mandatory EBML Elements . . . . . . . . . . . . . . . 35 Mandatory EBML Elements . . . . . . . . . . . . . . . 38
11.2. EBML Header Elements . . . . . . . . . . . . . . . . . . 35 11.2. EBML Header Elements . . . . . . . . . . . . . . . . . . 39
11.2.1. EBML Element . . . . . . . . . . . . . . . . . . . . 36 11.2.1. EBML Element . . . . . . . . . . . . . . . . . . . . 39
11.2.2. EBMLVersion Element . . . . . . . . . . . . . . . . 36 11.2.2. EBMLVersion Element . . . . . . . . . . . . . . . . 39
11.2.3. EBMLReadVersion Element . . . . . . . . . . . . . . 36 11.2.3. EBMLReadVersion Element . . . . . . . . . . . . . . 40
11.2.4. EBMLMaxIDLength Element . . . . . . . . . . . . . . 37 11.2.4. EBMLMaxIDLength Element . . . . . . . . . . . . . . 40
11.2.5. EBMLMaxSizeLength Element . . . . . . . . . . . . . 37 11.2.5. EBMLMaxSizeLength Element . . . . . . . . . . . . . 41
11.2.6. DocType Element . . . . . . . . . . . . . . . . . . 38 11.2.6. DocType Element . . . . . . . . . . . . . . . . . . 41
11.2.7. DocTypeVersion Element . . . . . . . . . . . . . . . 38 11.2.7. DocTypeVersion Element . . . . . . . . . . . . . . . 42
11.2.8. DocTypeReadVersion Element . . . . . . . . . . . . . 39 11.2.8. DocTypeReadVersion Element . . . . . . . . . . . . . 42
11.2.9. DocTypeExtension Element . . . . . . . . . . . . . . 39 11.2.9. DocTypeExtension Element . . . . . . . . . . . . . . 43
11.2.10. DocTypeExtensionName Element . . . . . . . . . . . . 40 11.2.10. DocTypeExtensionName Element . . . . . . . . . . . . 43
11.2.11. DocTypeExtensionVersion Element . . . . . . . . . . 40 11.2.11. DocTypeExtensionVersion Element . . . . . . . . . . 44
11.3. Global Elements . . . . . . . . . . . . . . . . . . . . 41 11.3. Global Elements . . . . . . . . . . . . . . . . . . . . 44
11.3.1. CRC-32 Element . . . . . . . . . . . . . . . . . . . 41 11.3.1. CRC-32 Element . . . . . . . . . . . . . . . . . . . 44
11.3.2. Void Element . . . . . . . . . . . . . . . . . . . . 42 11.3.2. Void Element . . . . . . . . . . . . . . . . . . . . 45
12. Considerations for Reading EBML Data . . . . . . . . . . . . 42 12. Considerations for Reading EBML Data . . . . . . . . . . . . 45
13. Terminating Elements . . . . . . . . . . . . . . . . . . . . 42 13. Terminating Elements . . . . . . . . . . . . . . . . . . . . 46
14. Guidelines for Updating Elements . . . . . . . . . . . . . . 43 14. Guidelines for Updating Elements . . . . . . . . . . . . . . 47
14.1. Reducing a Element Data in Size . . . . . . . . . . . . 43 14.1. Reducing a Element Data in Size . . . . . . . . . . . . 47
14.1.1. Adding a Void Element . . . . . . . . . . . . . . . 43 14.1.1. Adding a Void Element . . . . . . . . . . . . . . . 47
14.1.2. Extending the Element Data Size . . . . . . . . . . 43 14.1.2. Extending the Element Data Size . . . . . . . . . . 47
14.1.3. Terminating Element Data . . . . . . . . . . . . . . 45 14.1.3. Terminating Element Data . . . . . . . . . . . . . . 49
14.2. Considerations when Updating Elements with Cyclic 14.2. Considerations when Updating Elements with Cyclic
Redundancy Check (CRC) . . . . . . . . . . . . . . . . . 45 Redundancy Check (CRC) . . . . . . . . . . . . . . . . . 49
15. Backward and Forward Compatibility . . . . . . . . . . . . . 45 15. Backward and Forward Compatibility . . . . . . . . . . . . . 49
15.1. Backward Compatibility . . . . . . . . . . . . . . . . . 45 15.1. Backward Compatibility . . . . . . . . . . . . . . . . . 49
15.2. Forward Compatibility . . . . . . . . . . . . . . . . . 46 15.2. Forward Compatibility . . . . . . . . . . . . . . . . . 50
16. Security Considerations . . . . . . . . . . . . . . . . . . . 46 16. Security Considerations . . . . . . . . . . . . . . . . . . . 50
17. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 17. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51
17.1. CELLAR EBML Element ID Registry . . . . . . . . . . . . 48 17.1. CELLAR EBML Element ID Registry . . . . . . . . . . . . 52
17.2. CELLAR EBML DocType Registry . . . . . . . . . . . . . . 51 17.2. CELLAR EBML DocType Registry . . . . . . . . . . . . . . 55
18. Normative References . . . . . . . . . . . . . . . . . . . . 51 18. Normative References . . . . . . . . . . . . . . . . . . . . 55
19. Informative References . . . . . . . . . . . . . . . . . . . 52 19. Informative References . . . . . . . . . . . . . . . . . . . 57
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 53 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57
1. Introduction 1. Introduction
EBML, short for Extensible Binary Meta Language, specifies a binary EBML, short for Extensible Binary Meta Language, specifies a binary
and octet (byte) aligned format inspired by the principle of XML (a and octet (byte) aligned format inspired by the principle of XML (a
framework for structuring data). framework for structuring data).
The goal of this document is to define a generic, binary, space- The goal of this document is to define a generic, binary, space-
efficient format that can be used to define more complex formats efficient format that can be used to define more complex formats
using an EBML Schema. EBML is used by the multimedia container using an EBML Schema. EBML is used by the multimedia container
skipping to change at page 17, line 28 skipping to change at page 17, line 28
2293-04-11T11:47:16.854775807 UTC. 2293-04-11T11:47:16.854775807 UTC.
7.7. Master Element 7.7. Master Element
A Master Element MUST declare a length in octets from zero to A Master Element MUST declare a length in octets from zero to
VINTMAX. The Master Element MAY also use an unknown length. See VINTMAX. The Master Element MAY also use an unknown length. See
Section 6 for rules that apply to elements of unknown length. Section 6 for rules that apply to elements of unknown length.
The Master Element contains zero, one, or many other elements. EBML The Master Element contains zero, one, or many other elements. EBML
Elements contained within a Master Element MUST have the Elements contained within a Master Element MUST have the
EBMLParentPath of their Element Path equal to the EBMLMasterPath of EBMLParentPath of their Element Path equal to the EBMLFullPath of the
the Master Element Element Path (see Section 11.1.5.2). Element Data Master Element Element Path (see Section 11.1.5.2). Element Data
stored within Master Elements SHOULD only consist of EBML Elements stored within Master Elements SHOULD only consist of EBML Elements
and SHOULD NOT contain any data that is not part of an EBML Element. and SHOULD NOT contain any data that is not part of an EBML Element.
The EBML Schema identifies what Element IDs are valid within the The EBML Schema identifies what Element IDs are valid within the
Master Elements for that version of the EBML Document Type. Any data Master Elements for that version of the EBML Document Type. Any data
contained within a Master Element that is not part of a Child Element contained within a Master Element that is not part of a Child Element
MUST be ignored. MUST be ignored.
7.8. Binary Element 7.8. Binary Element
A Binary Element MUST declare a length in octets from zero to A Binary Element MUST declare a length in octets from zero to
skipping to change at page 21, line 17 skipping to change at page 21, line 17
<element name="Data" path="1*1(\Files\File\Data)" id="0x4664" <element name="Data" path="1*1(\Files\File\Data)" id="0x4664"
type="binary" minOccurs="1"> type="binary" minOccurs="1">
<documentation lang="en" purpose="definition"> <documentation lang="en" purpose="definition">
The data of the file. The data of the file.
</documentation> </documentation>
</element> </element>
</EBMLSchema> </EBMLSchema>
11.1.2. <EBMLSchema> Element 11.1.2. <EBMLSchema> Element
Within an EBML Schema, the XPath [W3C.REC-xpath-19991116] of
"<EBMLSchema>" element is "/EBMLSchema".
As an XML Document, the EBML Schema MUST use "<EBMLSchema>" as the As an XML Document, the EBML Schema MUST use "<EBMLSchema>" as the
top level element. The "<EBMLSchema>" element can contain top level element. The "<EBMLSchema>" element can contain
"<element>" sub-elements. "<element>" sub-elements.
11.1.3. <EBMLSchema> Attributes 11.1.3. <EBMLSchema> Attributes
Within an EBML Schema the "<EBMLSchema>" element uses the following Within an EBML Schema the "<EBMLSchema>" element uses the following
attributes: attributes:
11.1.3.1. docType 11.1.3.1. docType
Within an EBML Schema, the XPath of "@docType" attribute is
"/EBMLSchema/@docType".
The docType lists the official name of the EBML Document Type that is The docType lists the official name of the EBML Document Type that is
defined by the EBML Schema; for example, "<EBMLSchema defined by the EBML Schema; for example, "<EBMLSchema
docType="matroska">". docType="matroska">".
The docType attribute is REQUIRED within the "<EBMLSchema>" Element. The docType attribute is REQUIRED within the "<EBMLSchema>" Element.
11.1.3.2. version 11.1.3.2. version
Within an EBML Schema, the XPath of "@version" attribute is
"/EBMLSchema/@version".
The version lists a non-negative integer that specifies the version The version lists a non-negative integer that specifies the version
of the docType documented by the EBML Schema. Unlike XML Schemas, an of the docType documented by the EBML Schema. Unlike XML Schemas, an
EBML Schema documents all versions of a docType's definition rather EBML Schema documents all versions of a docType's definition rather
than using separate EBML Schemas for each version of a docType. EBML than using separate EBML Schemas for each version of a docType. EBML
Elements may be introduced and deprecated by using the minver and Elements may be introduced and deprecated by using the minver and
maxver attributes of "<element>". maxver attributes of "<element>".
The version attribute is REQUIRED within the "<EBMLSchema>" Element. The version attribute is REQUIRED within the "<EBMLSchema>" Element.
11.1.4. <element> Element 11.1.4. <element> Element
Within an EBML Schema, the XPath of "<element>" element is
"/EBMLSchema/element".
Each "<element>" defines one EBML Element through the use of several Each "<element>" defines one EBML Element through the use of several
attributes that are defined in Section 11.1.3. EBML Schemas MAY attributes that are defined in Section 11.1.3. EBML Schemas MAY
contain additional attributes to extend the semantics but MUST NOT contain additional attributes to extend the semantics but MUST NOT
conflict with the definitions of the "<element>" attributes defined conflict with the definitions of the "<element>" attributes defined
within this document. within this document.
The "<element>" nodes contain a description of the meaning and use of The "<element>" nodes contain a description of the meaning and use of
the EBML Element stored within one or more "<documentation>" sub- the EBML Element stored within one or more "<documentation>" sub-
elements, followed by optional "<implementation_note>" sub-elements, elements, followed by optional "<implementation_note>" sub-elements,
followed by zero or one "<restriction>" sub-element, followed by followed by zero or one "<restriction>" sub-element, followed by
optional "<extension>" sub-elements. All "<element>" nodes MUST be optional "<extension>" sub-elements. All "<element>" nodes MUST be
sub-elements of the "<EBMLSchema>". sub-elements of the "<EBMLSchema>".
11.1.5. <element> Attributes 11.1.5. <element> Attributes
Within an EBML Schema the "<element>" uses the following attributes Within an EBML Schema the "<element>" uses the following attributes
to define an EBML Element: to define an EBML Element:
11.1.5.1. name 11.1.5.1. name
Within an EBML Schema, the XPath of "@name" attribute is
"/EBMLSchema/element/@name".
The name provides the human-readable name of the EBML Element. The The name provides the human-readable name of the EBML Element. The
value of the name MUST be in the form of characters "A" to "Z", "a" value of the name MUST be in the form of characters "A" to "Z", "a"
to "z", "0" to "9", "-" and ".". to "z", "0" to "9", "-" and ".".
The name attribute is REQUIRED. The name attribute is REQUIRED.
11.1.5.2. path 11.1.5.2. path
Within an EBML Schema, the XPath of "@path" attribute is
"/EBMLSchema/element/@path".
The path defines the allowed storage locations of the EBML Element The path defines the allowed storage locations of the EBML Element
within an EBML Document. This path MUST be defined with the full within an EBML Document. This path MUST be defined with the full
hierarchy of EBML Elements separated with a "\". The top EBML hierarchy of EBML Elements separated with a "\". The top EBML
Element in the path hierarchy being the first in the value. The Element in the path hierarchy being the first in the value. The
syntax of the path attribute is defined using this Augmented Backus- syntax of the path attribute is defined using this Augmented Backus-
Naur Form (ABNF) [RFC5234] with the case sensitive update [RFC7405] Naur Form (ABNF) [RFC5234] with the case sensitive update [RFC7405]
notation: notation:
The path attribute is REQUIRED. The path attribute is REQUIRED.
EBMLFullPath = EBMLEltOccurrence "(" EBMLMasterPath ")" EBMLFullPath = [EBMLParentPath] EBMLElementPath
EBMLMasterPath = [EBMLParentPath] EBMLElementPath
EBMLParentPath = EBMLFixedParent EBMLLastParent EBMLParentPath = EBMLFixedParent EBMLLastParent
EBMLFixedParent = *(EBMLPathAtom) EBMLFixedParent = *(EBMLPathAtom)
EBMLElementPath = EBMLPathAtom / EBMLPathAtomRecursive EBMLElementPath = EBMLPathAtom / EBMLPathAtomRecursive
EBMLPathAtom = PathDelimiter EBMLAtomName EBMLPathAtom = PathDelimiter EBMLAtomName
EBMLPathAtomRecursive = "(1*(" EBMLPathAtom "))" EBMLPathAtomRecursive = "(1*(" EBMLPathAtom "))"
EBMLLastParent = EBMLPathAtom / EBMLGlobalParent EBMLLastParent = EBMLPathAtom / EBMLGlobalParent
EBMLGlobalParent = "(" GlobalParentOccurence "\)" EBMLGlobalParent = "(" GlobalParentOccurence "\)"
EBMLAtomName = 1*(EBMLNameChar) EBMLAtomName = 1*(EBMLNameChar)
EBMLNameChar = ALPHA / DIGIT / "-" / "." EBMLNameChar = ALPHA / DIGIT / "-" / "."
PathDelimiter = "\" PathDelimiter = "\"
EBMLEltOccurrence = [EBMLMinOccurrence] "*" [EBMLMaxOccurrence]
EBMLMinOccurrence = 1*DIGIT ; no upper limit
EBMLMaxOccurrence = 1*DIGIT ; no upper limit
GlobalParentOccurence = [PathMinOccurrence] "*" [PathMaxOccurrence] GlobalParentOccurence = [PathMinOccurrence] "*" [PathMaxOccurrence]
PathMinOccurrence = 1*DIGIT ; no upper limit PathMinOccurrence = 1*DIGIT ; no upper limit
PathMaxOccurrence = 1*DIGIT ; no upper limit PathMaxOccurrence = 1*DIGIT ; no upper limit
The "*", "(" and ")" symbols are interpreted as defined in [RFC5234]. The "*", "(" and ")" symbols are interpreted as defined in [RFC5234].
The EBMLPathAtom part of the EBMLElementPath MUST be equal to the The EBMLPathAtom part of the EBMLElementPath MUST be equal to the
name attribute of the EBML Schema. name attribute of the EBML Schema.
The starting PathDelimiter of the path corresponds to the root of the The starting PathDelimiter of the path corresponds to the root of the
EBML Document. EBML Document.
The EBMLEltOccurrence part is interpreted as an ABNF Variable
Repetition. The repetition amounts correspond to how many times the
EBML Element can be found in its Parent Element.
The EBMLMinOccurrence represents the minimum permitted number of
occurrences of this EBML Element within its Parent Element. Each
instance of the Parent Element MUST contain at least this many
instances of this EBML Element. If the EBML Element has an empty
EBMLParentPath then EBMLMinOccurrence refers to constraints on the
occurrence of the EBML Element within the EBML Document. If
EBMLMinOccurrence is not present then that EBML Element has an
EBMLMinOccurrence value of 0. The semantic meaning of
EBMLMinOccurrence within an EBML Schema is analogous to the meaning
of minOccurs within an XML Schema. EBML Elements with
EBMLMinOccurrence set to "1" that also have a default value (see
Section 11.1.5.8) declared are not REQUIRED to be stored but are
REQUIRED to be interpreted, see Section 11.1.18. An EBML Element
defined with a EBMLMinOccurrence value greater than zero is called a
Mandatory EBML Element.
The EBMLMaxOccurrence represents the maximum permitted number of
occurrences of this EBML Element within its Parent Element. Each
instance of the Parent Element MUST contain at most this many
instances of this EBML Element. If the EBML Element has an empty
EBMLParentPath then EBMLMaxOccurrence refers to constraints on the
occurrence of the EBML Element within the EBML Document. If
EBMLMaxOccurrence is not present then there is no upper bound for the
permitted number of occurrences of this EBML Element within its
Parent Element resp. within the EBML Document depending on whether
the EBMLParentPath of the EBML Element is empty or not. The semantic
meaning of EBMLMaxOccurrence within an EBML Schema path is analogous
to the meaning of maxOccurs within an XML Schema.
In some cases the EBMLLastParent part of the path is an In some cases the EBMLLastParent part of the path is an
EBMLGlobalParent. A path with a EBMLGlobalParent defines a EBMLGlobalParent. A path with a EBMLGlobalParent defines a
Section 11.3. Any path that starts with the EBMLFixedParent of the Section 11.3. Any path that starts with the EBMLFixedParent of the
Global Element and matches the occurrences found in the Global Element and matches the occurrences found in the
GlobalParentOccurence is a valid path for the Global Element. GlobalParentOccurence is a valid path for the Global Element.
The GlobalParentOccurence part is interpreted as an ABNF Variable The GlobalParentOccurence part is interpreted as an ABNF Variable
Repetition. The repetition amounts correspond to the amount of Repetition. The repetition amounts correspond to the amount of
unspecified Parent Element levels there can be between the unspecified Parent Element levels there can be between the
EBMLFixedParent and the actual EBMLElementPath. EBMLFixedParent and the actual EBMLElementPath.
skipping to change at page 25, line 9 skipping to change at page 24, line 20
can occur within itself recursively (see Section 11.1.5.11). can occur within itself recursively (see Section 11.1.5.11).
As an example, a "path" of "1*(\Segment\Info)" means the element Info As an example, a "path" of "1*(\Segment\Info)" means the element Info
is found inside the Segment elements at least once and with no is found inside the Segment elements at least once and with no
maximum iteration. An element SeekHead with path maximum iteration. An element SeekHead with path
"0*2(\Segment\SeekHead)" may not be found at all in its Segment "0*2(\Segment\SeekHead)" may not be found at all in its Segment
parent, once or twice but no more than that. parent, once or twice but no more than that.
11.1.5.3. id 11.1.5.3. id
Within an EBML Schema, the XPath of "@id" attribute is "/EBMLSchema/
element/@id".
The Element ID encoded as a Variable Size Integer expressed in The Element ID encoded as a Variable Size Integer expressed in
hexadecimal notation prefixed by a 0x that is read and stored in big- hexadecimal notation prefixed by a 0x that is read and stored in big-
endian order. To reduce the risk of false positives while parsing endian order. To reduce the risk of false positives while parsing
EBML Streams, the Element IDs of the Root Element and Top-Level EBML Streams, the Element IDs of the Root Element and Top-Level
Elements SHOULD be at least 4 octets in length. Element IDs defined Elements SHOULD be at least 4 octets in length. Element IDs defined
for use at Root Level or directly under the Root Level MAY use for use at Root Level or directly under the Root Level MAY use
shorter octet lengths to facilitate padding and optimize edits to shorter octet lengths to facilitate padding and optimize edits to
EBML Documents; for instance, the Void Element uses an Element ID EBML Documents; for instance, the Void Element uses an Element ID
with a one octet length to allow its usage in more writing and with a one octet length to allow its usage in more writing and
editing scenarios. editing scenarios.
The id attribute is REQUIRED. The id attribute is REQUIRED.
11.1.5.4. minOccurs 11.1.5.4. minOccurs
An integer expressing the minimum permitted number of occurrences of Within an EBML Schema, the XPath of "@minOccurs" attribute is
this EBML Element within its Parent Element. The minOccurs value "/EBMLSchema/element/@minOccurs".
MUST be equal to the EBMLMinOccurrence value of the path.
The minOccurs is a non-negative integer expressing the minimum
permitted number of occurrences of this EBML Element within its
Parent Element.
Each instance of the Parent Element MUST contain at least this many
instances of this EBML Element. If the EBML Element has an empty
EBMLParentPath then minOccurs refers to constraints on the occurrence
of the EBML Element within the EBML Document. EBML Elements with
minOccurs set to "1" that also have a default value (see
Section 11.1.5.8) declared are not REQUIRED to be stored but are
REQUIRED to be interpreted, see Section 11.1.18.
An EBML Element defined with a minOccurs value greater than zero is
called a Mandatory EBML Element.
The minOccurs attribute is OPTIONAL. If the minOccurs attribute is The minOccurs attribute is OPTIONAL. If the minOccurs attribute is
not present then that EBML Element has a minOccurs value of 0. not present then that EBML Element has a minOccurs value of 0.
The semantic meaning of minOccurs within an EBML Schema is analogous
to the meaning of minOccurs within an XML Schema.
11.1.5.5. maxOccurs 11.1.5.5. maxOccurs
An integer expressing the maximum permitted number of occurrences of Within an EBML Schema, the XPath of "@maxOccurs" attribute is
this EBML Element within its Parent Element. The maxOccurs value "/EBMLSchema/element/@maxOccurs".
MUST be equal to the EBMLMaxOccurrence value of the path.
The maxOccurs is a non-negative integer expressing the maximum
permitted number of occurrences of this EBML Element within its
Parent Element.
Each instance of the Parent Element MUST contain at most this many
instances of this EBML Element, including the unwritten mandatory
element with a default value, see Section 11.1.18. If the EBML
Element has an empty EBMLParentPath then maxOccurs refers to
constraints on the occurrence of the EBML Element within the EBML
Document.
The maxOccurs attribute is OPTIONAL. If the maxOccurs attribute is The maxOccurs attribute is OPTIONAL. If the maxOccurs attribute is
not present then that EBML Element has no maximum occurrence, similar not present then there is no upper bound for the permitted number of
to unbounded in the XML world. occurrences of this EBML Element within its Parent Element or within
the EBML Document depending on whether the EBMLParentPath of the EBML
Element is empty or not.
The semantic meaning of maxOccurs within an EBML Schema is analogous
to the meaning of maxOccurs within an XML Schema, when it is not
present it's similar to xml:maxOccurs="unbounded" in an XML Schema.
11.1.5.6. range 11.1.5.6. range
Within an EBML Schema, the XPath of "@range" attribute is
"/EBMLSchema/element/@range".
A numerical range for EBML Elements which are of numerical types A numerical range for EBML Elements which are of numerical types
(Unsigned Integer, Signed Integer, Float, and Date). If specified (Unsigned Integer, Signed Integer, Float, and Date). If specified
the value of the EBML Element MUST be within the defined range. See the value of the EBML Element MUST be within the defined range. See
Section 11.1.5.6.1 for rules applied to expression of range values. Section 11.1.5.6.1 for rules applied to expression of range values.
The range attribute is OPTIONAL. If the range attribute is not The range attribute is OPTIONAL. If the range attribute is not
present then any value legal for the type attribute is valid. present then any value legal for the type attribute is valid.
11.1.5.6.1. Expression of range 11.1.5.6.1. Expression of range
skipping to change at page 26, line 47 skipping to change at page 26, line 47
20. 20.
A special form of lower and upper bounds using the "-" separator is A special form of lower and upper bounds using the "-" separator is
possible, meaning the Element value MUST be greater than or to the possible, meaning the Element value MUST be greater than or to the
first value and MUST be less than or equal to the second value. For first value and MUST be less than or equal to the second value. For
example "1-10" is equivalent to ">=1,<=10". If the upper boundary is example "1-10" is equivalent to ">=1,<=10". If the upper boundary is
negative, only the latter form MUST be used. negative, only the latter form MUST be used.
11.1.5.7. length 11.1.5.7. length
Within an EBML Schema, the XPath of "@length" attribute is
"/EBMLSchema/element/@length".
A value to express the valid length of the Element Data as written A value to express the valid length of the Element Data as written
measured in octets. The length provides a constraint in addition to measured in octets. The length provides a constraint in addition to
the Length value of the definition of the corresponding EBML Element the Length value of the definition of the corresponding EBML Element
Type. This length MUST be expressed as either a non-negative integer Type. This length MUST be expressed as either a non-negative integer
or a range (see Section 11.1.5.6.1) that consists of only non- or a range (see Section 11.1.5.6.1) that consists of only non-
negative integers and valid operators. negative integers and valid operators.
The length attribute is OPTIONAL. If the length attribute is not The length attribute is OPTIONAL. If the length attribute is not
present for that EBML Element then that EBML Element is only limited present for that EBML Element then that EBML Element is only limited
in length by the definition of the associated EBML Element Type. in length by the definition of the associated EBML Element Type.
11.1.5.8. default 11.1.5.8. default
If an Element is mandatory (has a EBMLMinOccurrence value greater Within an EBML Schema, the XPath of "@default" attribute is
than zero) but not written within its Parent Element or stored as an "/EBMLSchema/element/@default".
Empty Element, then the EBML Reader of the EBML Document MUST
semantically interpret the EBML Element as present with this If an Element is mandatory (has a minOccurs value greater than zero)
specified default value for the EBML Element. An unwritten mandatory but not written within its Parent Element or stored as an Empty
Element with a declared default value is semantically to that Element Element, then the EBML Reader of the EBML Document MUST semantically
if written with the default value stored as the Element Data. EBML interpret the EBML Element as present with this specified default
value for the EBML Element. An unwritten mandatory Element with a
declared default value is semantically equivalent to that Element if
written with the default value stored as the Element Data. EBML
Elements that are Master Elements MUST NOT declare a default value. Elements that are Master Elements MUST NOT declare a default value.
EBML Elements with a minOccurs value greater than 1 MUST NOT declare EBML Elements with a minOccurs value greater than 1 MUST NOT declare
a default value. a default value.
The default attribute is OPTIONAL. The default attribute is OPTIONAL.
11.1.5.9. type 11.1.5.9. type
Within an EBML Schema, the XPath of "@type" attribute is
"/EBMLSchema/element/@type".
The type MUST be set to one of the following values: "integer" The type MUST be set to one of the following values: "integer"
(signed integer), "uinteger" (unsigned integer), "float", "string", (signed integer), "uinteger" (unsigned integer), "float", "string",
"date", "utf-8", "master", or "binary". The content of each type is "date", "utf-8", "master", or "binary". The content of each type is
defined within Section 7. defined within Section 7.
The type attribute is REQUIRED. The type attribute is REQUIRED.
11.1.5.10. unknownsizeallowed 11.1.5.10. unknownsizeallowed
Within an EBML Schema, the XPath of "@unknownsizeallowed" attribute
is "/EBMLSchema/element/@unknownsizeallowed".
A boolean to express if an EBML Element is permitted to be Unknown- A boolean to express if an EBML Element is permitted to be Unknown-
Sized Element (having all VINT_DATA bits of Element Data Size set to Sized Element (having all VINT_DATA bits of Element Data Size set to
1). EBML Elements that are not Master Elements MUST NOT set 1). EBML Elements that are not Master Elements MUST NOT set
unknownsizeallowed to true. An EBML Element that is defined with an unknownsizeallowed to true. An EBML Element that is defined with an
unknownsizeallowed attribute set to 1 MUST also have the unknownsizeallowed attribute set to 1 MUST also have the
unknownsizeallowed attribute of its Parent Element set to 1. unknownsizeallowed attribute of its Parent Element set to 1.
An EBML Element with the unknownsizeallowed attribute set to 1 MUST An EBML Element with the unknownsizeallowed attribute set to 1 MUST
NOT have its recursive attribute set to 1. NOT have its recursive attribute set to 1.
The unknownsizeallowed attribute is OPTIONAL. If the The unknownsizeallowed attribute is OPTIONAL. If the
unknownsizeallowed attribute is not used then that EBML Element is unknownsizeallowed attribute is not used then that EBML Element is
not allowed to use an unknown Element Data Size. not allowed to use an unknown Element Data Size.
11.1.5.11. recursive 11.1.5.11. recursive
Within an EBML Schema, the XPath of "@recursive" attribute is
"/EBMLSchema/element/@recursive".
A boolean to express if an EBML Element is permitted to be stored A boolean to express if an EBML Element is permitted to be stored
recursively. In this case the EBML Element MAY be stored within recursively. In this case the EBML Element MAY be stored within
another EBML Element that has the same Element ID. Which itself can another EBML Element that has the same Element ID. Which itself can
be stored in an EBML Element that has the same Element ID, and so on. be stored in an EBML Element that has the same Element ID, and so on.
EBML Elements that are not Master Elements MUST NOT set recursive to EBML Elements that are not Master Elements MUST NOT set recursive to
true. true.
If the path contains an EBMLPathAtomRecursive part then the recursive If the path contains an EBMLPathAtomRecursive part then the recursive
value MUST be true and false otherwise. value MUST be true and false otherwise.
An EBML Element with the recursive attribute set to 1 MUST NOT have An EBML Element with the recursive attribute set to 1 MUST NOT have
its unknownsizeallowed attribute set to 1. its unknownsizeallowed attribute set to 1.
The recursive attribute is OPTIONAL. If the recursive attribute is The recursive attribute is OPTIONAL. If the recursive attribute is
not present then the EBML Element MUST NOT be used recursively. not present then the EBML Element MUST NOT be used recursively.
11.1.5.12. recurring 11.1.5.12. recurring
Within an EBML Schema, the XPath of "@recurring" attribute is
"/EBMLSchema/element/@recurring".
A boolean to express if an EBML Element is defined as an Identically A boolean to express if an EBML Element is defined as an Identically
Recurring Element or not. Recurring Element or not.
The recurring attribute is OPTIONAL. If the recurring attribute is The recurring attribute is OPTIONAL. If the recurring attribute is
not present then the EBML Element is not an Identically Recurring not present then the EBML Element is not an Identically Recurring
Element. Element.
11.1.5.13. minver 11.1.5.13. minver
Within an EBML Schema, the XPath of "@minver" attribute is
"/EBMLSchema/element/@minver".
The minver (minimum version) attribute stores a non-negative integer The minver (minimum version) attribute stores a non-negative integer
that represents the first version of the docType to support the EBML that represents the first version of the docType to support the EBML
Element. Element.
The minver attribute is OPTIONAL. If the minver attribute is not The minver attribute is OPTIONAL. If the minver attribute is not
present, then the EBML Element has a minimum version of "1". present, then the EBML Element has a minimum version of "1".
11.1.5.14. maxver 11.1.5.14. maxver
Within an EBML Schema, the XPath of "@maxver" attribute is
"/EBMLSchema/element/@maxver".
The maxver (maximum version) attribute stores a non-negative integer The maxver (maximum version) attribute stores a non-negative integer
that represents the last or most recent version of the docType to that represents the last or most recent version of the docType to
support the element. maxver MUST be greater than or equal to minver. support the element. maxver MUST be greater than or equal to minver.
The maxver attribute is OPTIONAL. If the maxver attribute is not The maxver attribute is OPTIONAL. If the maxver attribute is not
present then the EBML Element has a maximum version equal to the present then the EBML Element has a maximum version equal to the
value stored in the version attribute of "<EBMLSchema>". value stored in the version attribute of "<EBMLSchema>".
11.1.6. <documentation> Element 11.1.6. <documentation> Element
Within an EBML Schema, the XPath of "<documentation>" attribute is
"/EBMLSchema/element/documentation".
The "<documentation>" element provides additional information about The "<documentation>" element provides additional information about
the EBML Element. Within the "<documentation>" element the following the EBML Element. Within the "<documentation>" element the following
XHTML [W3C.SPSD-xhtml-basic-20180327] elements MAY be used: "<a>", XHTML [W3C.SPSD-xhtml-basic-20180327] elements MAY be used: "<a>",
"<br>", "<strong>". "<br>", "<strong>".
11.1.7. <documentation> Attributes 11.1.7. <documentation> Attributes
11.1.7.1. lang 11.1.7.1. lang
Within an EBML Schema, the XPath of "@lang" attribute is
"/EBMLSchema/element/documentation/@lang".
A lang attribute which is set to the [RFC5646] value of the language A lang attribute which is set to the [RFC5646] value of the language
of the element's documentation. of the element's documentation.
The lang attribute is OPTIONAL. The lang attribute is OPTIONAL.
11.1.7.2. purpose 11.1.7.2. purpose
Within an EBML Schema, the XPath of "@purpose" attribute is
"/EBMLSchema/element/documentation/@purpose".
A purpose attribute distinguishes the meaning of the documentation. A purpose attribute distinguishes the meaning of the documentation.
Values for the "<documentation>" sub-element's purpose attribute MUST Values for the "<documentation>" sub-element's purpose attribute MUST
include one of the following: "definition", "rationale", "usage include one of the following: "definition", "rationale", "usage
notes", and "references". notes", and "references".
The purpose attribute is REQUIRED. The purpose attribute is REQUIRED.
11.1.8. <implementation_note> Element 11.1.8. <implementation_note> Element
Within an EBML Schema, the XPath of "<implementation_note>" attribute
is "/EBMLSchema/element/implementation_note".
In some cases within an EBML Document Type, the attributes of the In some cases within an EBML Document Type, the attributes of the
"<element>" element are not sufficient to clearly communicate how the "<element>" element are not sufficient to clearly communicate how the
defined EBML Element is intended to be implemented. For instance, defined EBML Element is intended to be implemented. For instance,
one EBML Element might only be mandatory if another EBML Element is one EBML Element might only be mandatory if another EBML Element is
present, or as another example, the default value of an EBML Element present, or as another example, the default value of an EBML Element
might derive from a related Element's content. In these cases where might derive from a related Element's content. In these cases where
the Element's definition is conditional or advanced implementation the Element's definition is conditional or advanced implementation
notes are needed, one or many "<implementation_note>" elements can be notes are needed, one or many "<implementation_note>" elements can be
used to store that information. The "<implementation_note>" refer to used to store that information. The "<implementation_note>" refer to
a specific attribute of the parent "<element>" as expressed by the a specific attribute of the parent "<element>" as expressed by the
"note_attribute" attribute Section 11.1.9.1. "note_attribute" attribute Section 11.1.9.1.
11.1.9. <implementation_note> Attributes 11.1.9. <implementation_note> Attributes
11.1.9.1. note_attribute 11.1.9.1. note_attribute
Within an EBML Schema, the XPath of "@note_attribute" attribute is
"/EBMLSchema/element/implementation_note/@note_attribute".
The note_attribute attribute references which of the "<element>"'s The note_attribute attribute references which of the "<element>"'s
attributes that the implementation_note is in regards to. The attributes that the implementation_note is in regards to. The
note_attribute attribute MUST be set to one of the following values note_attribute attribute MUST be set to one of the following values
(corresponding to that attribute of the parent "<element>"): (corresponding to that attribute of the parent "<element>"):
"minOccurs", "maxOccurs", "range", "length", "default", "minver", or "minOccurs", "maxOccurs", "range", "length", "default", "minver", or
"maxver". The "<implementation_note>" SHALL supersede the parent "maxver". The "<implementation_note>" SHALL supersede the parent
"<element>"'s attribute that is named in the "note_attribute" "<element>"'s attribute that is named in the "note_attribute"
attribute. An "<element>" SHALL NOT have more than one attribute. An "<element>" SHALL NOT have more than one
"<implementation_note>" of the same "note_attribute". "<implementation_note>" of the same "note_attribute".
The note_attribute attribute is REQUIRED. The note_attribute attribute is REQUIRED.
11.1.9.2. <implementation_note> Example
The following fragment of an EBML Schema demonstrates how an
"<implementation_note>" is used. In this case an EBML Schema
documents a list of items that are described with an optional cost.
The Currency Element uses an "<implementation_note>" to say that the
Currency Element is REQUIRED if the Cost Element is set, otherwise
not.
<element name="Item" path="1*1(\Items)" id="0x4025" type="master"
minOccurs="1" maxOccurs="1">
<documentation lang="en" purpose="definition">
A set of items.
</documentation>
</element>
<element name="Item" path="0*(\Items\Item)" id="0x4026"
type="master">
<documentation lang="en" purpose="definition">
An item.
</documentation>
</element>
<element name="Cost" path="0*1(\Items\Item\Cost)" id="0x4024"
type="float" maxOccurs="1">
<documentation lang="en" purpose="definition">
The cost of the item, if any.
</documentation>
</element>
<element name="Currency" path="0*1(\Items\Item\Currency)" id="0x403F"
type="string" maxOccurs="1">
<documentation lang="en" purpose="definition">
The currency of the item's cost.
</documentation>
<implementation_note note_attribute="minOccurs">
Currency MUST be set (minOccurs=1) if the associated Item stores
a Cost, else Currency MAY be unset (minOccurs=0).
</implementation_note>
</element>
11.1.10. <restriction> Element 11.1.10. <restriction> Element
Within an EBML Schema, the XPath of "<restriction>" attribute is
"/EBMLSchema/element/restriction".
The "<restriction>" element provides information about restrictions The "<restriction>" element provides information about restrictions
to the allowable values for the EBML Element which are listed in to the allowable values for the EBML Element which are listed in
"<enum>" elements. "<enum>" elements.
11.1.11. <enum> Element 11.1.11. <enum> Element
Within an EBML Schema, the XPath of "<enum>" attribute is
"/EBMLSchema/element/restriction/enum".
The "<enum>" element stores a list of values allowed for storage in The "<enum>" element stores a list of values allowed for storage in
the EBML Element. The values MUST match the type of the EBML Element the EBML Element. The values MUST match the type of the EBML Element
(for example "<enum value="Yes">" cannot be a valid value for a EBML (for example "<enum value="Yes">" cannot be a valid value for a EBML
Element that is defined as an unsigned integer). An "<enum>" element Element that is defined as an unsigned integer). An "<enum>" element
MAY also store "<documentation>" elements to further describe the MAY also store "<documentation>" elements to further describe the
"<enum>". "<enum>".
11.1.12. <enum> Attributes 11.1.12. <enum> Attributes
11.1.12.1. label 11.1.12.1. label
Within an EBML Schema, the XPath of "@label" attribute is
"/EBMLSchema/element/restriction/enum/@label".
The label provides a concise expression for human consumption that The label provides a concise expression for human consumption that
describes what the value of the "<enum>" represents. describes what the value of the "<enum>" represents.
The label attribute is OPTIONAL. The label attribute is OPTIONAL.
11.1.12.2. value 11.1.12.2. value
Within an EBML Schema, the XPath of "@value" attribute is
"/EBMLSchema/element/restriction/enum/@value".
The value represents data that MAY be stored within the EBML Element. The value represents data that MAY be stored within the EBML Element.
The value attribute is REQUIRED. The value attribute is REQUIRED.
11.1.13. <extension> Element 11.1.13. <extension> Element
Within an EBML Schema, the XPath of "<extension>" attribute is
"/EBMLSchema/element/extension".
The "<extension>" element provides an unconstrained element to The "<extension>" element provides an unconstrained element to
contain information about the associated EBML "<element>" which is contain information about the associated EBML "<element>" which is
undefined by this document but MAY be defined by the associated EBML undefined by this document but MAY be defined by the associated EBML
Document Type. The "<extension>" element MUST contain a "type" Document Type. The "<extension>" element MUST contain a "type"
attribute and also MAY contain any other attribute or sub-element as attribute and also MAY contain any other attribute or sub-element as
long as the EBML Schema remains as a well-formed XML Document. All long as the EBML Schema remains as a well-formed XML Document. All
"<extension>" elements MUST be sub-elements of the "<element>". "<extension>" elements MUST be sub-elements of the "<element>".
11.1.14. <extension> Attributes 11.1.14. <extension> Attributes
11.1.14.1. type 11.1.14.1. type
Within an EBML Schema, the XPath of "@type" attribute is
"/EBMLSchema/element/extension/@type".
The type attribute should reference a name or identifier of the The type attribute should reference a name or identifier of the
project or authority associated with the contents of the project or authority associated with the contents of the
"<extension>" element. "<extension>" element.
The type attribute is REQUIRED. The type attribute is REQUIRED.
11.1.15. XML Schema for EBML Schema 11.1.15. XML Schema for EBML Schema
This following provides an XML Schema [W3C.REC-xmlschema-0-20041028] This following provides an XML Schema [W3C.REC-xmlschema-0-20041028]
for facilitating verification of an EBML Schema to the definition for facilitating verification of an EBML Schema to the definition
skipping to change at page 31, line 40 skipping to change at page 33, line 40
schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd"/> schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd"/>
<xs:element name="EBMLSchema" type="EBMLSchemaType"/> <xs:element name="EBMLSchema" type="EBMLSchemaType"/>
<xs:complexType name="EBMLSchemaType"> <xs:complexType name="EBMLSchemaType">
<xs:sequence> <xs:sequence>
<xs:element name="element" type="elementType" <xs:element name="element" type="elementType"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="docType" use="required"/> <xs:attribute name="docType" use="required"/>
<xs:attribute name="version" use="required"/> <xs:attribute name="version" use="required" type="xs:integer"/>
</xs:complexType> </xs:complexType>
<xs:complexType name="elementType"> <xs:complexType name="elementType">
<xs:sequence> <xs:sequence>
<xs:element name="documentation" type="documentationType" <xs:element name="documentation" type="documentationType"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="implementation_note" type="noteType" <xs:element name="implementation_note" type="noteType"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="restriction" type="restrictionType" <xs:element name="restriction" type="restrictionType"
minOccurs="0" maxOccurs="1"/> minOccurs="0" maxOccurs="1"/>
skipping to change at page 32, line 4 skipping to change at page 34, line 5
<xs:complexType name="elementType"> <xs:complexType name="elementType">
<xs:sequence> <xs:sequence>
<xs:element name="documentation" type="documentationType" <xs:element name="documentation" type="documentationType"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="implementation_note" type="noteType" <xs:element name="implementation_note" type="noteType"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="restriction" type="restrictionType" <xs:element name="restriction" type="restrictionType"
minOccurs="0" maxOccurs="1"/> minOccurs="0" maxOccurs="1"/>
<xs:element name="extension" type="extensionType" <xs:element name="extension" type="extensionType"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="name" use="required"/> <xs:attribute name="name" use="required">
<xs:attribute name="path" use="required"/> <xs:simpleType>
<xs:attribute name="id" use="required"/> <xs:restriction base="xs:string">
<xs:attribute name="minOccurs" default="0"/> <xs:pattern value="[0-9A-Za-z.-]([0-9A-Za-z.-])*"/>
<xs:attribute name="maxOccurs" default="1"/> </xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="path" use="required">
<!-- <xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9]*\*[0-9]*()"/>
</xs:restriction>
</xs:simpleType> -->
</xs:attribute>
<xs:attribute name="id" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="0x([0-9A-F][0-9A-F])+"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="minOccurs" default="0">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="maxOccurs" default="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="range"/> <xs:attribute name="range"/>
<xs:attribute name="length"/> <xs:attribute name="length"/>
<xs:attribute name="default"/> <xs:attribute name="default"/>
<xs:attribute name="type" use="required"/> <xs:attribute name="type" use="required">
<xs:attribute name="unknownsizeallowed"/> <xs:simpleType>
<xs:attribute name="recurring"/> <xs:restriction base="xs:string">
<xs:attribute name="minver" default="1"/> <xs:enumeration value="integer"/>
<xs:attribute name="maxver"/> <xs:enumeration value="uinteger"/>
<xs:enumeration value="float"/>
<xs:enumeration value="string"/>
<xs:enumeration value="date"/>
<xs:enumeration value="utf-8"/>
<xs:enumeration value="master"/>
<xs:enumeration value="binary"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="unknownsizeallowed" type="xs:boolean"/>
<xs:attribute name="recurring" type="xs:boolean"/>
<xs:attribute name="minver" default="1">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="maxver">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType> </xs:complexType>
<xs:complexType name="restrictionType"> <xs:complexType name="restrictionType">
<xs:sequence> <xs:sequence>
<xs:element name="enum" type="enumType" <xs:element name="enum" type="enumType"
minOccurs="0" maxOccurs="unbounded"/> minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
<xs:complexType name="extensionType"> <xs:complexType name="extensionType">
skipping to change at page 41, line 21 skipping to change at page 44, line 44
and the Void Element. An EBML Schema MAY add other Global Elements and the Void Element. An EBML Schema MAY add other Global Elements
to the format it defines. These extra elements apply only to the to the format it defines. These extra elements apply only to the
EBML Body, not the EBML Header. EBML Body, not the EBML Header.
Global Elements are EBML Elements whose path have a EBMLGlobalParent Global Elements are EBML Elements whose path have a EBMLGlobalParent
as their EBMLLastParent. Because it is the last Parent part of the as their EBMLLastParent. Because it is the last Parent part of the
path, a Global Element might also have non-EBMLGlobalParent parts in path, a Global Element might also have non-EBMLGlobalParent parts in
its path. In this case the Global Element can only be found within its path. In this case the Global Element can only be found within
this non-EBMLGlobalParent path, i.e. it's not fully "global". this non-EBMLGlobalParent path, i.e. it's not fully "global".
The EBMLEltOccurrence of a Global Element is the number of A Global Element can be found in many Parent Elements, allowing the
occurrences the Element can be found in a Parent Element. But the
Global Element can be found in many Parent Elements, allowing the
same number of occurrences in each Parent where this Element is same number of occurrences in each Parent where this Element is
found. found.
11.3.1. CRC-32 Element 11.3.1. CRC-32 Element
name: CRC-32 name: CRC-32
path: "*1((1*\)\CRC-32)" path: "*1((1*\)\CRC-32)"
id: 0xBF id: 0xBF
minOccurs: 0 minOccurs: 0
maxOccurs: 1 maxOccurs: 1
length: 4 length: 4
type: Binary type: Binary
skipping to change at page 42, line 32 skipping to change at page 46, line 5
12. Considerations for Reading EBML Data 12. Considerations for Reading EBML Data
The following scenarios describe events to consider when reading EBML The following scenarios describe events to consider when reading EBML
Documents and the recommended design of an EBML Reader. Documents and the recommended design of an EBML Reader.
If a Master Element contains a CRC-32 Element that doesn't validate, If a Master Element contains a CRC-32 Element that doesn't validate,
then the EBML Reader MAY ignore all contained data except for then the EBML Reader MAY ignore all contained data except for
Descendant Elements that contain their own valid CRC-32 Element. Descendant Elements that contain their own valid CRC-32 Element.
In the following XML representation of a simple, hypothetical EBML
fragment, a Master Element called CONTACT contains two Child
Elements, NAME and ADDRESS. In this example, some data within the
NAME Element had been altered, so that the CRC-32 of the NAME Element
does not validate and thus any Ancestor Element with a CRC-32 would
therefore also no longer validate. However, even though the CONTACT
Element has a CRC-32 that does not validate (because of the changed
data within the NAME Element), the CRC-32 of the ADDRESS Element does
validate and thus the contents and semantics of the ADDRESS Element
MAY be used.
<CONTACT>
<CRC-32>c119a69b</CRC-32><!-- does not validate -->
<NAME>
<CRC-32>1f59ee2b</CRC-32><!-- does not validate -->
<FIRST-NAME>invalid data</FIRST-NAME>
<LAST-NAME>invalid data</LAST-NAME>
</NAME>
<ADDRESS>
<CRC-32>df941cc9</CRC-32><!-- validates -->
<STREET>valid data</STREET>
<CITY>valid data</CITY>
</ADDRESS>
</CONTACT>
If a Master Element contains more occurrences of a Child Master If a Master Element contains more occurrences of a Child Master
Element than permitted according to the maxOccurs and recurring Element than permitted according to the maxOccurs and recurring
attributes of the definition of that Element then the occurrences in attributes of the definition of that Element then the occurrences in
addition to maxOccurs MAY be ignored. addition to maxOccurs MAY be ignored.
If a Master Element contains more occurrences of a Child Element than If a Master Element contains more occurrences of a Child Element than
permitted according to the maxOccurs attribute of the definition of permitted according to the maxOccurs attribute of the definition of
that Element then all instances of that Element after the first that Element then all instances of that Element after the first
maxOccur occurrences from the beginning of its Parent Element SHOULD maxOccur occurrences from the beginning of its Parent Element SHOULD
be ignored. be ignored.
skipping to change at page 51, line 29 skipping to change at page 55, line 29
The use of ASCII corresponds to the types and code already in use, The use of ASCII corresponds to the types and code already in use,
the value is not meant to be visible to the user. the value is not meant to be visible to the user.
DocType string values of "matroska" and "webm" are RESERVED to the DocType string values of "matroska" and "webm" are RESERVED to the
IETF for future use. These can be assigned via the "IESG Approval" IETF for future use. These can be assigned via the "IESG Approval"
or "RFC Required" policies [RFC8126]. or "RFC Required" policies [RFC8126].
18. Normative References 18. Normative References
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
<https://www.rfc-editor.org/info/rfc3339>.
[W3C.REC-xmlschema-0-20041028]
Fallside, D. and P. Walmsley, "XML Schema Part 0: Primer
Second Edition", World Wide Web Consortium Recommendation
REC-xmlschema-0-20041028, 28 October 2004,
<http://www.w3.org/TR/2004/REC-xmlschema-0-20041028>.
[W3C.SPSD-xhtml-basic-20180327]
McCarron, S., "XHTML(tm) Basic 1.1 - Second Edition", 27
March 2018.
[ISO.9899.2011]
International Organization for Standardization,
"Programming languages - C", 2011.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[W3C.REC-xml-20081126]
Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and
F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth
Edition)", World Wide Web Consortium Recommendation REC-
xml-20081126, 26 November 2008,
<http://www.w3.org/TR/2008/REC-xml-20081126>.
[IEEE.754.1985] [IEEE.754.1985]
Institute of Electrical and Electronics Engineers, Institute of Electrical and Electronics Engineers,
"Standard for Binary Floating-Point Arithmetic", August "Standard for Binary Floating-Point Arithmetic", August
1985. 1985.
[ISO.3309.1979] [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF",
International Organization for Standardization, "Data RFC 7405, DOI 10.17487/RFC7405, December 2014,
communication - High-level data link control procedures - <https://www.rfc-editor.org/info/rfc7405>.
Frame structure", 1979.
[ISO.9899.2011] [RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
International Organization for Standardization, Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
"Programming languages - C", 2011. September 2009, <https://www.rfc-editor.org/info/rfc5646>.
[ITU.V42.1994] [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
International Telecommunications Union, "Error-correcting 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
Procedures for DCEs Using Asynchronous-to-Synchronous May 2017, <https://www.rfc-editor.org/info/rfc8174>.
Conversion", 1994.
[RFC0020] Cerf, V., "ASCII format for network interchange", STD 80, [RFC0020] Cerf, V., "ASCII format for network interchange", STD 80,
RFC 20, DOI 10.17487/RFC0020, October 1969, RFC 20, DOI 10.17487/RFC0020, October 1969,
<https://www.rfc-editor.org/info/rfc20>. <https://www.rfc-editor.org/info/rfc20>.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
2003, <https://www.rfc-editor.org/info/rfc3629>.
[ISO.3309.1979]
International Organization for Standardization, "Data
communication - High-level data link control procedures -
Frame structure", 1979.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: [ITU.V42.1994]
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, International Telecommunications Union, "Error-correcting
<https://www.rfc-editor.org/info/rfc3339>. Procedures for DCEs Using Asynchronous-to-Synchronous
Conversion", 1994.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
2003, <https://www.rfc-editor.org/info/rfc3629>.
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, Specifications: ABNF", STD 68, RFC 5234,
DOI 10.17487/RFC5234, January 2008, DOI 10.17487/RFC5234, January 2008,
<https://www.rfc-editor.org/info/rfc5234>. <https://www.rfc-editor.org/info/rfc5234>.
[RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying
Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646,
September 2009, <https://www.rfc-editor.org/info/rfc5646>.
[RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF",
RFC 7405, DOI 10.17487/RFC7405, December 2014,
<https://www.rfc-editor.org/info/rfc7405>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[W3C.REC-xml-20081126]
Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and
F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth
Edition)", World Wide Web Consortium Recommendation REC-
xml-20081126, 26 November 2008,
<http://www.w3.org/TR/2008/REC-xml-20081126>.
[W3C.SPSD-xhtml-basic-20180327]
McCarron, S., "XHTML(tm) Basic 1.1 - Second Edition", 27
March 2018.
19. Informative References 19. Informative References
[W3C.REC-xmlschema-0-20041028] [W3C.REC-xpath-19991116]
Fallside, D. and P. Walmsley, "XML Schema Part 0: Primer Clark, J. and S. DeRose, "XML Path Language (XPath)
Second Edition", World Wide Web Consortium Recommendation Version 1.0", World Wide Web Consortium Recommendation
REC-xmlschema-0-20041028, 28 October 2004, REC-xpath-19991116, 16 November 1999,
<http://www.w3.org/TR/2004/REC-xmlschema-0-20041028>. <http://www.w3.org/TR/1999/REC-xpath-19991116>.
Authors' Addresses Authors' Addresses
Steve Lhomme Steve Lhomme
Email: slhomme@matroska.org Email: slhomme@matroska.org
Dave Rice Dave Rice
Email: dave@dericed.com Email: dave@dericed.com
 End of changes. 60 change blocks. 
174 lines changed or deleted 372 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/