Инструмент оперативного преобразования, используемый в Google Wave, имеет довольно любопытный формат документа. Документ - это в основном документ подмножества xml - символы, начальные и конечные теги. В дополнение к этому, в документе есть «аннотации», которые представляют собой метаданные, связанные с диапазонами, например начальная позиция и конечная позиция. Официальный документ оправдывает свое присутствие следующими словами:
Операции с волновыми документами также поддерживают аннотации. Аннотация - это некоторые метаданные, связанные с диапазоном элементов, то есть начальной и конечной позицией. Это особенно полезно для описания предложений по форматированию текста и орфографии, так как это не обязательно усложняет базовый формат структурированного документа.
Я, конечно, вижу, насколько сложно было бы выбрать произвольный диапазон из документа и, например, полужирным шрифтом - вложение тегов XML является строгим, и это вызовет беспорядок при вставке открытых и закрытых тегов.
Однако действительно ли это проблема на практике? Я имею в виду, обязательно ли поддерживать такую операцию, если не сделать редактор, который в основном имитирует устаревшую парадигму обработки текста, вместо того, чтобы быть структурированным редактором? Будет ли так ужасно чистое операционное преобразование XML со структурой документа в виде простого HTML5? Это проблема производительности, если стили будут в документе в виде тегов? Или модель операционного преобразования каким-то образом дает неудовлетворительные результаты при форматировании текста, если они представлены тегами?
Также есть побочный вопрос - насколько хороша чистая модель операционного преобразования «вставить символ, удалить символ, сохранить» в простом тексте представления? Например, редактирование HTML5 как текста - или редактирование статей в Википедии?