112
In L-shaped numbering, a version’s number is obtained by counting the sequence of
downward steps and of rightward steps (L-shaped paths) necessary to get from the root to
the selected node. As in reverse outline numbering, leftmost children are compactly repre-
sented, but unlike reverse outline numbering, multiple alternatives are also compactly repre-
sented.
6.1.2 The VTML data format
The format of a VTML document is based on a simple tagging scheme, conceptually similar
to that of tagging languages like XML or SGML.
7
The parser generator input file for the VTML
grammar used in the 2.0 implementation appears in Appendix B, edited for clarity. VTML in-
formation is represented by tags with attributes. The attributes with special significance to
VTML are syntactically and semantically distinguished from “user” attributes, which applica-
tions can use to store additional information needed to describe the changes in a document.
User attributes are syntactically distinguished by a leading underscore, allowing for exten-
sions of VTML to define new attributes. A VTML file starts with a header identifying the for-
mat, declaring options, and contains two parts (both of which are optional, though at least
one must be present).
VTML changes are either insertions or deletions. Each is associated with its initial version,
represented as a mandatory unlabelled attribute. Each change also has a change ID, a unique
7
XML syntax would, in some ways, be ideal but cannot be used because of its internationalization
features. Since XML requires a declared character set encoding, it is unsuitable for representing binary
data, or data with mixed character encodings. For version representation, changing character encod-
ings is not possible. A secondary factor in the design of the VTML 2.0 syntax is the confusion result-
ing from shared delimiters between the VTML language and its most likely content formats. VTML re-
quires the escaping of syntactically significant data characters, so VTML 2.0 avoids the use of XML and
HTML delimiters.
In L-shaped numbering, a version’s number is obtained by counting the sequence of
downward steps and of rightward steps (L-shaped paths) necessary to get from the root to
the selected node. As in reverse outline numbering, leftmost children are compactly repre-
sented, but unlike reverse outline numbering, multiple alternatives are also compactly repre-
sented.
6.1.2 The VTML data format
The format of a VTML document is based on a simple tagging scheme, conceptually similar
to that of tagging languages like XML or SGML.
7
The parser generator input file for the VTML
grammar used in the 2.0 implementation appears in Appendix B, edited for clarity. VTML in-
formation is represented by tags with attributes. The attributes with special significance to
VTML are syntactically and semantically distinguished from “user” attributes, which applica-
tions can use to store additional information needed to describe the changes in a document.
User attributes are syntactically distinguished by a leading underscore, allowing for exten-
sions of VTML to define new attributes. A VTML file starts with a header identifying the for-
mat, declaring options, and contains two parts (both of which are optional, though at least
one must be present).
VTML changes are either insertions or deletions. Each is associated with its initial version,
represented as a mandatory unlabelled attribute. Each change also has a change ID, a unique
7
XML syntax would, in some ways, be ideal but cannot be used because of its internationalization
features. Since XML requires a declared character set encoding, it is unsuitable for representing binary
data, or data with mixed character encodings. For version representation, changing character encod-
ings is not possible. A secondary factor in the design of the VTML 2.0 syntax is the confusion result-
ing from shared delimiters between the VTML language and its most likely content formats. VTML re-
quires the escaping of syntactically significant data characters, so VTML 2.0 avoids the use of XML and
HTML delimiters.