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