115
Change 3 of version 2.0 inserts the word “complex” in the place previously occupied by
“simple”. Version 2.1 is an alternative successor to version 1.0, which also deletes “simple”
but replaces it with “confusing” instead (via change 2 of version 2.1).
((vtml "1.0" base="2.1"))
((ins "0.0")
((ins "1.0#1" pos="0" base="1.0")This is a
((adel "2.0#2" base="2.0"))
((ins "2.1#2" base="2.1")confusing((adel "2.1#1"
base="2.1"))
simple((adelend "2.1#1"))((adelend "2.0#2"))
((ins "2.0#3")complex)
example.))
F F F F iii ig g g gu u u ur r r re e e e 6666....1111:::: VVVVTTTTMMMMLLLL eeeexxxxaaaammmmpppplllleeee sssshhhhoooowwwwiiiinnnngggg iiiinnnntttteeeerrrrnnnnaaaallll cccchhhhaaaannnnggggeeeessss
The details of VTML syntax aside, the most important factor is that the internal change
format is also supplemented by an external change format that allows changes to be re-
corded separately from the base document.
((vtml "1.0" base="2.1")
((extins base="2.1.1" pos="0")The following was written by dgd: ))
F F F F iii ig g g gu u u ur r r re e e e 6666....2222:::: VVVVTTTTMMMMLLLL eeeexxxxaaaammmmpppplllleeee sssshhhhoooowwwwiiiinnnngggg eeeexxxxtttteeeerrrrnnnnaaaallll cccchhhhaaaannnnggggeeeessss
Figure 6.2 shows an extremely short VTML document representing an update to the file
above. It consists of a single change adding an attribution to the text previously entered.
While an entire document can be stored in the form of external changes, they are most use-
ful for expressing the differences between versions or updates made by an editing program.
In a system using VTML, as in one using Palimpsest, it is possible for addresses created at
different locations to conflict. In VTML systems, however, a central server can integrate
separate changes, determining the final results.
6.2 Implementing VTML
The basic idea in implementing VTML is to keep a structure from which the contents of a
document can be easily retrieved. The simplest structure is a linear list containing each
chunk of data, start tag and end tag in the VTML document, in order. A program can traverse
Change 3 of version 2.0 inserts the word “complex” in the place previously occupied by
“simple”. Version 2.1 is an alternative successor to version 1.0, which also deletes “simple”
but replaces it with “confusing” instead (via change 2 of version 2.1).
((vtml "1.0" base="2.1"))
((ins "0.0")
((ins "1.0#1" pos="0" base="1.0")This is a
((adel "2.0#2" base="2.0"))
((ins "2.1#2" base="2.1")confusing((adel "2.1#1"
base="2.1"))
simple((adelend "2.1#1"))((adelend "2.0#2"))
((ins "2.0#3")complex)
example.))
F F F F iii ig g g gu u u ur r r re e e e 6666....1111:::: VVVVTTTTMMMMLLLL eeeexxxxaaaammmmpppplllleeee sssshhhhoooowwwwiiiinnnngggg iiiinnnntttteeeerrrrnnnnaaaallll cccchhhhaaaannnnggggeeeessss
The details of VTML syntax aside, the most important factor is that the internal change
format is also supplemented by an external change format that allows changes to be re-
corded separately from the base document.
((vtml "1.0" base="2.1")
((extins base="2.1.1" pos="0")The following was written by dgd: ))
F F F F iii ig g g gu u u ur r r re e e e 6666....2222:::: VVVVTTTTMMMMLLLL eeeexxxxaaaammmmpppplllleeee sssshhhhoooowwwwiiiinnnngggg eeeexxxxtttteeeerrrrnnnnaaaallll cccchhhhaaaannnnggggeeeessss
Figure 6.2 shows an extremely short VTML document representing an update to the file
above. It consists of a single change adding an attribution to the text previously entered.
While an entire document can be stored in the form of external changes, they are most use-
ful for expressing the differences between versions or updates made by an editing program.
In a system using VTML, as in one using Palimpsest, it is possible for addresses created at
different locations to conflict. In VTML systems, however, a central server can integrate
separate changes, determining the final results.
6.2 Implementing VTML
The basic idea in implementing VTML is to keep a structure from which the contents of a
document can be easily retrieved. The simplest structure is a linear list containing each
chunk of data, start tag and end tag in the VTML document, in order. A program can traverse