Зачем Google Wave Operational Transform нужны аннотации?

Операционное преобразование, используемое в Google Wave, имеет довольно любопытный формат документа. Документ в основном представляет собой подмножество документа xml - символы, начальные теги и конечные теги. В дополнение к этому документ имеет «аннотации», которые представляют собой метаданные, связанные с диапазонами, например. начальное положение и конечное положение. Белая книга оправдывает их присутствие:

Операции с документами Wave также поддерживают аннотации. Аннотация — это некоторые метаданные, связанные с диапазоном элементов, т. е. начальная позиция и конечная позиция. Это особенно полезно для описания форматирования текста и рекомендаций по правописанию, поскольку не усложняет без необходимости базовый структурированный формат документа.

Я, конечно, вижу, как было бы несколько сложно, если бы произвольный диапазон из документа был выбран и, например, выделен полужирным шрифтом - вложение тегов XML является строгим, и это вызвало бы беспорядок вставки открытых и закрытых тегов.

Однако является ли это действительно проблемой на практике? Я имею в виду, нужно ли обязательно поддерживать такую ​​операцию, если не создавать редактор, который в основном имитирует многолетнюю парадигму обработки текста, а не является структурированным редактором? Будет ли чистое операционное преобразование XML со структурой документа просто HTML5 настолько ужасным? Является ли проблема с производительностью тем, что стили будут в документе в виде тегов? Или модель оперативного преобразования каким-то образом дает неудовлетворительные результаты при форматировании текста, если они представлены тегами?

Кроме того, побочный вопрос - насколько хороша чистая модель оперативного преобразования «вставить символ, удалить символ, сохранить» для простых текстовых представлений? Например, редактирование HTML5 как текста или редактирование статей в Википедии?


person Nakedible    schedule 03.11.2010    source источник


Ответы (2)


Существуют фундаментальные проблемы с использованием иерархического языка разметки с OT. См. ниже рабочий пример:

Работает ли операционное преобразование в структурированных документах, таких как HTML, если они просто обрабатываются как обычный текст?

person jazmit    schedule 16.09.2012
comment
Спасибо! Наконец-то на этот вопрос был дан правильный ответ! Пример очень просто показывает, почему аннотации имеют решающее значение. - person Nakedible; 17.09.2012

Этот выбор имеет смысл для меня как оптимизация по нескольким направлениям:

  • Базовый документ остается максимально удобочитаемым и разборчивым для человека.
  • Алгоритмы синтаксического анализа базового XML остаются максимально простыми (полезно для совместимости с попытками синтаксического анализа результирующих документов, отличных от Google, и для обслуживания).
  • Дополнительный собранный мусор после многократных правок может привести к большим падениям производительности из-за огромного количества тегов и/или дополнительных проходов документа для его упрощения.
person blueberryfields    schedule 11.12.2010
comment
Обоснование всего этого для меня немного непонятно. Базовый формат документа становится особенно запутанным, поскольку стили не видны из документа, а представляют собой отдельные диапазоны, которые человек не может собрать вместе. Разве HTML5 не читается человеком? Кроме того, разве алгоритм разбора XML не одинаков независимо от полужирного шрифта и прочего? Я ожидаю, что алгоритм будет более сложным, когда придется отслеживать атрибуты по отдельности. XML стал успешным только потому, что он был простым. И я не уверен, о какой лишней фигне вы говорите? Каждое изменение является зарегистрированным изменением документа. - person Nakedible; 11.12.2010
comment
Для меня имеет смысл сбрасывать со счетов HTML5 как вариант — его, вероятно, не было, когда работа над Wave, вероятно, только начиналась. Я предполагаю, что они будут использовать настраиваемый синтаксический анализатор, чтобы помочь очистить лишний шум тегов, который генерируется. Однако синтаксический анализатор не обязательно должен выполнять эту работу. Я думаю, что произвольными диапазонами атрибутов легче управлять, когда их изменения не меняют результирующее дерево синтаксического анализа. Мусор — это шум тегов, что приводит к более беспорядочному дереву после анализа. - person blueberryfields; 12.12.2010
comment
HTML5 был просто примером, XHTML/HTML4/что угодно было бы столь же подходящим. - person Nakedible; 12.12.2010