Я бы сделал несколько иначе:

патч-файл состоит из блоков. Каждый блок имеет заголовок вида
[0] INTEGER - Тег блока. Просто метка, удостоверяющая что это действительно блок - примитивный контроль целостности
[4] INTEGER - Длина блока (или адрес следующего)
[8] INTEGER - тип блока
[12] ... - данные блока

Таким образом мы унифицируем обращение с файлом, и в принципе сможем сводить несколько патчей в один файл или хранить их в самом целевом документе - всё будет выглядеть единообразно.

Первым в файле должен быть блок специального типа "заголовок". Пока для заголовка видится три обязательных поля:
1. Хеш-сумма файла, к которому применим патч
2. Описание патча.
3. Дата-время патча.

Потом нужно учесть особенности составных документов, а именно - вложенные элементы.