Revisions

Revisions in WordprocessingML provide a mechanism for storing information about the evolution of the document (i.e. the set of modifications made to a document by one of more authors). When an application adds revisions to the content of a WordprocessingML document, they are specifying this by storing either (depending on the revision type):

  • The current state of the document (a deletion stores the current state of the text as deleted, and implies that its original state was the content used to exist)

  • The initial state of the document (a run's initial properties are explicitly stored in a previous run properties block, as the current run properties are always those that are the child of the <rPr> element (§2.7.8.1))

A revision consists of two required pieces of information:

  • The revision type (specified via the name of the revision element)

  • A unique revision identifier (used to uniquely identify revisions)

As well as optional information:

  • The author of the revision

  • The date and time of the revision

example:

This paragraph has the word text marked inserted as a revision, and is represented as the following WordprocessingML:

<w:p>
  <w:r>
    <w:t>Some</w:t>
  </w:r>
  <w:ins w:id="0" w:author="Joe Smith" w:date="2006-03-31T12:50:00Z">
    <w:r>
      <w:t>text</w:t>
    </w:r>
  </w:ins>
</w:p>

The <ins> element contains both the required information: all of the content which shall be treated as revision marked as inserted (the word text); a unique revision identifier of 0.

The element also stores the optional information about the revision: the word text was inserted by Joe Smith on March 31, 2006 at 12:50pm. ]

Within a WordprocessingML document, the following types of revisions may be used to track the changes to a document:

  • Insertions

  • Deletions

  • Moves

  • Changes to run/paragraph/table/numbering/section properties

  • Changes to custom XML markup