-->

是否对结构化文档运营转型工作,如HTML,如果简单地视为纯文本?(Does operational

2019-07-28 23:56发布

谷歌Wave协议的常见问题解答说,[HTML]“不具有理想的性能”和“HTML使得OT(操作变换)困难的,如果不是不可能的” [1]。 为什么会这样? 如果HTML被简单地作为纯文本处理,然后OT应用出现什么问题?

  1. http://www.waveprotocol.org/faq#TOC-What-s-the-XML-schema-for-waves-Why

Answer 1:

我假设在这里您了解OT的基本知识。 与HTML做OT为纯文本的主要问题是,合并HTML标签。 举一个简单的例子,假设我们有一个文件如下:

Hello world

然后,Alice决定世界应该以粗体显示:

Hello <b>world</b>

这可以用在OT,示意性地双插入操作来表示:

Edit A: Keep 6 : Insert "<b>" : Keep 5 : Insert "</b>"

如果Bob决定,“世界”应该是斜体,他看到了爱丽丝的编辑之前,他会增加操作的

Edit B: Keep 6 : Insert "<i>" : Keep 5 : Insert "</i>"

如果服务器Alice的后收到Bob的编辑,就需要改造乙对于A成为B”。

在保持语句是通过改造不变,但插入“”改变了插入“”能成为既保持3:插入“”或插入“”:保持3.通常情况下,服务器将配置放置后编辑第一次编辑后。

Edit B': Keep 6 : Keep 3 : Insert "<i>" : Keep 5 : Keep 3 : Insert "</i>"

这里的问题是显而易见的。 应用A然后B”与原始字符串给出了无效的HTML:

Hello <b><i>world</b></i>

理论上,这可以通过改变前,后的刀片来解决,但这会很麻烦的更复杂的例子,可能涉及每一个改造一个完整的文档扫描。

由于对方的回答指出,可以使用带注释+纯文本外的避免这个烂摊子。 我只在学术论文迄今为止看到的另一种方法是把XML结构与节点添加,删除,如OT操作的树:

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.100.74



Answer 2:

我没有一个完整的答案,但我希望看到在使现有的开源运营转型与图书馆丰富的文本工作,更多的工作要做,所以我将贡献我所知道的。

HTML和Wave模式的重要区别似乎是这样的文本格式被标记:与波XML范围嵌套标签为HTML与一个层次结构进行带注释的(在文档的页脚)。 带外的注释很可能是因为它们允许重叠(非嵌套)格式标记文本格式更自然的方式。 它允许这样的事情(在伪标记),这将不会是使用嵌套表示有效的XML:

(b) This is bold (i) while this range is both bold and italic (/b) and this last bit is just italic (/i)

相关,这里是相关的问题在ShareJS项目。 也许他们可以通过采用波XML架构的一部分实现丰富的文本支持。



Answer 3:

有在OT方式支持SGML(XML的超集),但没有实现。 因此,这是不可能的! 虽然,我同意,OT是不启用XML的最佳方法。 这是因为OT被设计为线性数据结构。 但是,HTML / XML复杂得多:它具有属性,它是建立就像一棵树。 这是一棵树的事实是可以解决的,但属性 - 这是实现为一个有序的关联数组 - 不被OT支持。 很简单,因为关联数组不被OT的支持(目前)。 以上其实这种方法建议治疗属性为一个字符串:即“id =‘身份识别码’值=‘的MyStuff’”但是,你可以轻松突破你的“属性字符串”,当一个用户删除所有属性的全部语法,以及的MyStuff“后直接字符‘另外一个插入一个’,这可能在一些div标签,看起来像这样解决<div "> ,这是无效的语法。

也许您对此有兴趣:

CEFX是旨在支持XML的项目 - 这是死了我的知识。 但它采用了OT方式。 出于某种原因,这是不可能编辑字符串 - 只有XML元素。

谷歌的驱动器SDK支持图形,数据结构等等。 它是,但是,专有的,没有人知道它是如何工作的。

我正在开发支持任意数据结构的框架。 目前,文本,JSON,XML和HTML的支持。 它有一个不同的方法:检查出来: 亚塔!

顺便说一句:在Wave协议,和Eric Drechsel描述了被称为在OT注解。 它通常用来支持富文本。



文章来源: Does operational transformation work on structured documents such as HTML if simply treated as plain text?