Marking positions in the control document

By implementing single-directional references between content tree nodes and position markers, the system addresses memory inefficiencies in document processing, reducing storage requirements and computational overhead.

CN113811879BActive Publication Date: 2025-07-15MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080033389.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-05-20
Filing Date
2020-04-07
Publication Date
2025-07-15
Estimated Expiration
2040-04-07

AI Technical Summary

Technical Problem

In existing document processing systems, location markers are prone to fail when node content is modified, resulting in excessive memory usage and inability to be effectively released, which may lead to memory overflow.

Method used

The one-way reference mechanism is adopted, the position marking is only referenced to the node direction, and updates its own logic when the node content is modified. The memory management system releases the memory when the position marking or changing records are no longer referenced.

Benefits of technology

Reduces memory usage, avoids memory overflow, improves memory usage efficiency, and reduces computing overhead.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113811879B_ABST
    Figure CN113811879B_ABST
Patent Text Reader

Abstract

In a document processing system, a document is represented as a node tree. An edit to a node is represented in a change record that has a one-way link to that node. A text token has a one-way link to a change record. When the change represented by the change record is reflected in the text token, it deletes the link. When no other object links to the change record, the memory management system releases the memory allocated to the change record.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to document processing. Background Art

[0002] Computer systems are currently widely used. Some such systems include host systems that host services at a remote server location for access by client computing systems.

[0003] For example, one such system is a host computing system that hosts a content creation service. The content creation service can allow client computing systems to create and manage content. Some examples include hosted word processing services, spreadsheet services, document management services, slide presentation services, and various other services.

[0004] These types of computing systems have a front end that exposes an interface that can be accessed by client computing systems. In one example, a client computing system communicates with a remote server environment through a browser-based interface. For example, a user may be using a client computing system to interact with a hosted word processing service through a browser-based interface. The user can invoke a content editing system on the client computing system to edit a document that has been created and stored on the remote word processing service.

[0005] To do this, the document can be presented to the content editing system as a tree representation of connected nodes. The nodes are organized into a hierarchical tree, and it is the job of the content editing system to modify the tree in response to user input. The nodes in the tree are organized in a doubly-linked fashion, where a parent node references its child nodes, and all child nodes reference their parent node. Child nodes can also be linked to each other as the next and following siblings.

[0006] For example, the tree can include a root node that represents the entire document. Child nodes (or the first-level child nodes that are directly dependent on the root node) can represent sections in the document, paragraphs in the document, etc. Child nodes from the first-level child nodes can represent items within each section or paragraph, such as text, images, tables, etc.

[0007] In some fields, content editing systems need to create and maintain references to specific locations in the content tree. Text processing systems typically handle this problem by creating objects that act as persistent pointers into the content. These objects can be referred to as marker pointers, node locations, or text markers, and will be referred to herein as location markers or text markers. A location marker can reference a location within a document or content by referencing a node in the node tree and then having an offset value that reflects the tracking position offset within the node to be tracked.

[0008] For example, when performing a text selection operation or a text insertion operation, it is necessary to maintain the position of the selected text or the position where the text is to be inserted. For example, selection in a text document is performed by generating a pair of position markers (references to positions in the text). These positions can be the start position and the end position of the selected text. The span between the two positions is considered to be "selected" and can be used as the target of an editing operation (e.g., formatting, deletion, copying, etc.).

[0009] Another example of using position markers is in pagination. After organizing the content of a document into multiple pages, the content editing system retains references to the beginning and end of each page, which are again represented as positions in the content tree.

[0010] To maintain their persistence during content modification, position markers are typically implemented using a doubly-linked structure. That is, a position marker object refers to a node in the content node tree, and the node back-references the position marker so that when the content near the position marker is deleted or modified, the position marker can be corrected.

[0011] The above discussion provides only general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter. Summary of the Invention

[0012] In a document processing system, a document is represented as a node tree. Edits to a node are represented in a change record that has a one-way link to the node. A position marker has a one-way link to the change record. When the change represented by the change record is reflected in the position marker, it deletes the link. When no other object links to the change record, the memory management system releases the memory allocated to the change record.

[0013] This invention summary is provided to introduce in a simplified form a selection of concepts that are further described in the following detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all of the disadvantages noted in the background. Brief Description of the Drawings

[0014] FIG. 1 is a diagram of an example of a content tree.

[0015] Figure 2 is a block diagram showing an example of a computing system architecture.

[0016] Figure 3 is a block diagram of an example of a change record.

[0017] Figure 4 is a block diagram of an example of a node.

[0018] Figure 5 A block diagram that is an example of a text marker.

[0019] Figures 6A - 6C (Collectively referred to as Figure 6 herein) shows a flowchart that is an example of the operation of the illustrated Figure 2 architecture.

[0020] Figures 7A - 7H Shows an example of memory management.

[0021] Figure 8 Is a block diagram that is an example of the architecture shown deployed in a cloud computing architecture Figure 1 architecture.

[0022] Figures 9 - 11 Shows an example of a mobile device that can be used in the architecture shown in the previous figure.

[0023] Figure 12 Is a block diagram that is an example of a computing environment that can be used in the architecture shown in the previous figure. Detailed Description

[0024] As described above, a location marker can be represented by a combination of a reference to a node in a content tree and a character offset within that node. However, when the content within the node is modified, the location marker may become invalid. For example, if text is deleted from the node, the offset value may be inaccurate. The same is true if the content in the node is moved, inserted, etc.

[0025] One way to handle this problem is to use the two-way links discussed above (e.g., by strongly referencing the location marker to the node, where the location marker holds a reference to the node it is attached to, and the node also retains a back-reference to the location marker attached to it). In these scenarios, when the node is modified, the location marker attached to the node is also modified by the logic within the node itself. Of course, this means that the node must have a back-reference to all location markers attached to it. This can be problematic.

[0026] For example, when a content editing system no longer needs a location marker, it can release the location marker by deleting its reference to the location marker. In some computing systems, when there are no references to a particular object in memory, garbage collection or other memory management systems release the memory. However, even if the content editing system deletes its reference to the location marker, the location marker will still have a reference to it from the node to which it is attached. The node will not know that the content editing system has released that location marker, and thus it will not delete the reference to that location marker. This will prevent the location marker from being released within the memory corresponding to the node tree, resulting in a larger memory footprint for the node tree. This may lead to a memory overflow situation, or may result in an excessive memory footprint for the node tree.

[0027] Figure 1 An example of a content tree 100 representing a document is shown. The content tree 100 includes a set of interconnected nodes. These nodes include a root node 102, child nodes 104, 106, and 108 (which are child nodes with the root node 102 as their parent), as well as other child nodes 110 - 112 (which are children of node 104) and nodes 114 and 116 (which are children of node 108). Figure 1 An example of a portion 118 of an HTML representation 118 of the content tree 100 is also included. Arrows 120, 122, and 124 represent location markers. For example, location markers 120 and 122 can represent content (e.g., text) selections such that the span between location markers 120 and 122 identifies the selected content. Location marker 124 can represent, for example, a bookmark or a pagination marker. These are just examples.

[0028] It can be seen that when one of the nodes changes and the node is referenced by a location marker, the location marker may become invalid. For example, assume that location marker 120 is represented in memory as a node reference (which refers to node 112) and an offset reference, which refers to the character offset within node 112 where the location marker is located. If some content in node 112 is deleted, this may invalidate the offset value in location marker 120.

[0029] In some current systems, to remedy this situation, node 112 will include a reference back to location marker 120. When node 112 changes, the logic in node 112 will change location marker 120 as needed to ensure that location marker 120 points to the appropriate location within node 112. However, this means that node 112 has a reference back to location marker 120. As described above, this can be problematic because when the content editing system releases its reference to location marker 120 (because it is no longer needed), the object representing location marker 120 in memory will not be released because node 112 will still maintain a reference to it.

[0030] Accordingly, this specification describes a system in which nodes in content tree 100 do not have references to the location markers attached to them. Instead, these references are one-way only. That is, each location marker has a reference only in the direction towards its corresponding node, but the node does not have a reference back to those location markers. Accordingly, the location markers include logic to update themselves when the nodes to which they are attached change. This will be described in more detail below.

[0031] Figure 2 is a block diagram of an example of a computing system architecture 130 in which location markers can be used. Architecture 130 illustratively includes a content creation service computing system 132, and a plurality of different client computing systems 134 - 136 that can be connected to content creation service computing system 132 via a network 138. Accordingly, network 138 can be a local area network, a wide area network, a cellular communication network, a near field communication network, or any one or combination of multiple networks.

[0032] Content creation service computing system 132 illustratively includes a set of servers 140, a service front-end system 142, a service back-end system 144, a data repository 146 (which can store content 148 and other items 150), and it can include other items 152. Service front-end system 142 exposes interfaces that can be accessed by client computing systems 134 and 136 to create, modify, and otherwise manage content 148, such as documents. In doing so, front-end computing system 142 receives input via the exposed interfaces and interacts with service back-end system 144, which itself performs operational steps on content 148 based on the input received by service front-end system 142.

[0033] Client computing systems 134 and 136 are shown as generating user interfaces 154 and 156 respectively for users 158 and 160 to interact with. User 158 illustratively interacts with user interface 154 to control and manipulate some parts of client computing system 134 and content creation service computing system 132. Similarly, user 160 can interact with user interface 156 to control and manipulate some parts of client computing system 136 and content creation service computing system 132. Client computing systems 134 and 136 can be similar or different. For the purposes of this discussion, it will be assumed that they are similar, such that only client computing system 134 will be described in more detail herein. This is for example purposes only.

[0034] In one example, client computing system 134 includes one or more processors 162, a data repository 164 (which can store content 166 - which can be a representation of some of content 148 or different content) and it can include other items 168. System 134 also illustratively includes a browser 170 and a document processing system 171. System 171 can include a content editing system 172, a memory management system 173, and an editor memory 174, which can be used by content editing system 172 during the editing of content 166. Editor memory 174 can include a content tree 176 representing the content being edited, and it can include other items 178. System 134 can include a variety of other client computing system functions 180.

[0035] It should be noted that content 148 and 166 can be stored as content trees in data repositories 146 and 164. It can also be stored in different structures. When content is loaded into editor memory 174, it is loaded as content tree 176. Content tree 176 can include the content itself or references to different structures that hold the content.

[0036] In Figure 2 the example shown, content editing system 172 can include a variety of different types of editing functions. For example, system 172 can include a selection function 182 that allows system 172 to select portions of the content represented by content tree 176 for editing. System 172 can include a bookmark function 184 that allows system 172 to maintain bookmarks within content tree 176. System 172 can include a pagination function 186 that allows system 172 to identify page breaks in the content represented by content tree 176. System 172 can include a highlighting function 188 that allows system 172 to perform highlighting in the content being edited, and it can of course include a variety of other editing functions 190 that allow system 172 to perform a variety of other editing functions, such as content moving functions, deletion functions, copy and paste functions, etc.

[0037] To edit a document (which may be stored as Content 148 on computing system 132), client computing system 134 illustratively allows user 158 to invoke content editing system 172, which edits content based on user input via a browser-based interface of browser 170. Content editing system 172 first downloads the content to be edited and loads a corresponding content tree 176 representing the content into editor memory 174. Then it edits content tree 176 via user interface 154 based on user input from user 158. When performing those edit operations, content editing system 172 may use location markers. Memory management system 173 illustratively manages editor memory 174. Thus, system 173 allocates memory for content tree 176 (as well as change records and location markers as described below). It also releases the memory when an object is no longer referenced by other objects in editor memory 174. This will be described in more detail below.

[0038] Before describing the use of location markers in more detail, a brief description of some items in content tree 176 will first be described.

[0039] Figure 3 is a block diagram of an example of a change record 202 that can be created as an object in memory 174 by a node (such as node 112 shown in Figure 1 when content editing system 172 changes the information in node 112 using an edit operation. Figure 3 Illustrates that change record 202 can include change information 204, a node / change record reference 206, and it can include other items 208. Change information 204 represents the information that content editing system 172 changed in the node (e.g., node 112) that created change record 202. Node / change record reference 206 is a reference to node 112 or a reference to a subsequent change record that will be generated based on subsequent changes to node 112 by content editing system 172. Change record 202 can include other items 208. Thus, once created, change record 202 represents the change made by content editing system 172 to node 112, and it includes a one-way reference or link to node 112 that created it.

[0040] Figure 4 Illustrates Figure 1 an example of a node (such as node 112) in content tree 100 shown in Figure 4In the example shown, node 112 includes a last change record reference 192, a change record generator 193, a reference update system 194, and it may include other node data and functionality 196 (which may include the content represented by the node).

[0041] The last change record reference 192 is a reference to the most recent change record that reflects the changes made to node 112 most recently by the content editing system 172. An example of a change record was described in more detail above with respect to Figure 3 The reference update system 194 illustratively includes node update logic 198 and change record update logic 200. The change record generator 193 generates a change record representing the data of the change. The node update logic 198 updates the last change record reference 192 so that it references the newly created change record. The change record update logic 200 modifies the references in the change record so that they point to the newly created change record instead of node 112.

[0042] Figure 5 An example of a position marker (such as Figure 1 the position marker 120 shown in) is shown. The position marker 120 is illustratively an object in the memory 174 that includes a reference to another object in the memory and logic to be executed in some cases. Like nodes, position markers can include their own logic or share logic across other objects. In the Figure 5 example shown, the position marker 120 includes a node / change record reference 210, a new change record detector 212, change record traversal logic 214, change interpretation logic 216, reference update logic 218, offset update logic 220, and it may include a variety of other position marker data and functionality 222. The node / change record reference 210 references node 112, or any intermediate change record 202 that has been generated by node 112 and is referenced by the position marker 120. The reference 210 may also include an offset value indicating an offset within the node it references to identify a specific position in the content represented by the tree 100.

[0043] The new change record detector 212 detects when a new change record 202 has been generated by node 112. For example, it can detect that the node / change record reference 206 in the change record 202 has been updated to point to a new change record instead of to node 112. It can also detect new change records in other ways.

[0044] The change record traversal logic 214 illustratively traverses the references to change records referenced from the position marker 120 until the node 112 is reached through all intermediate change records. The change interpretation logic 216 interprets the change information 204 in each traversed change record to identify an overall change value representing the overall change that has been made to the node 112 and represented by the traversed change records.

[0045] The reference update logic 218 then updates the node / change record reference 210 such that it references the most recent change record. The offset update logic 220 modifies the offset value in the position marker 120 based on the changes reflected in the various change records traversed by the change record traversal logic 214.

[0046] Figures 6A - 6C (Collectively referred to herein as FIG. 6) shows a flow chart of an example of the operations of the content editing system 172, the memory management system 173, and the content tree 176 in maintaining and managing position markers. First, it is assumed that some items in the content 148 have been generated and stored in the hosted content creation computing system 132. The items of this content can be word processing documents, spreadsheet documents, slide presentation documents, or another content item. This is indicated by block 230 in the flow chart of FIG. 6. Next, it is assumed that the user 158 has interacted with the interface 154 to initiate or invoke the content editing system 172 to edit the content 148. When doing so, the content 148 being edited can be downloaded to the data repository 164, or the content tree 176 corresponding to the content to be edited can be downloaded to the client computing system 134 and stored in the editor memory 174 by the memory management system 173. The editor memory 174 can be part of or separate from the content editing system 172. The content editing system 122 and the memory management system 173 illustratively use a browser-based interface implemented by the browser 170 to interact with the content tree 176 and the content creation service computing system 132. The initiation or invocation of the content editing system 172 is indicated by block 232 in the flow chart of FIG. 6. Loading the content tree into the client computing system memory 174 is indicated by block 234.

[0047] As described above, the content tree 176 can include nodes represented by block 236 in the flow chart of FIG. 6. The nodes can have links or references to other nodes in a parent / child relationship or a sibling relationship. This is indicated by block 238. The content tree can also include other items 240.

[0048] At a certain moment, components of the content editing system 172 create a location marker and maintain a reference to that location marker. The location marker itself refers to a node in the content tree, and it also includes an offset within that node that identifies a specific location within the node, thereby identifying a specific location in the document represented by the tree 100. This is indicated by block 242 in the flowchart of FIG. 6.

[0049] Figures 7A - 7G A series of figures are shown that will be discussed in conjunction with Figure 2 -6. Figure 7A An example is shown where node 112 (a node of the content tree 100) is shown. Figure 7A It is also shown that components of the content editing system 172 have generated a location marker (e.g., location marker 120) that maintains a reference to node 112, and this reference is indicated by arrow 244. For the example, assume that for the purpose of performing content selection, the selection function 182 in the content editing system 172 maintains a reference to the location marker 120. This reference is indicated by Figure 7A arrow 246 in.

[0050] Next, assume that user 158 interacts with the interface 154 such that the content editing system 172 changes the information in node 112. This is indicated by block 248 in the flowchart of FIG. 6. The change can be any change, such as copy-paste, selection, moving text, deleting information, adding information, modifying information, etc.

[0051] In response to the change, the change record generator 193 in node 112 generates a change record to reflect the changed information. The change record is identified at Figure 7B 250 in. The change record update logic 200 in node 112 then updates the change record 250 to add a reference to node 112 to the change record 250. This is indicated by Figure 7B arrow 252 in the flowchart of. The node update logic 198 then updates node 112 itself such that the final change record reference 192 now maintains a reference to the change record 250. This is indicated by Figure 7B arrow 254 in. Generating the first change record 250 that reflects the change and maintaining a reference 254 to that change record is indicated by block 256 in the flowchart of FIG. 6. Configuring node 112 to the change record 250 so that it maintains a reference 252 to node 112 is indicated by block 258.

[0052] The new change record detector 212 detects that node 112 has created a change record 250. The reference update logic 218 then updates the node / change record reference 210 (in the location marker 120) such that it now references the change record 250 instead of referencing node 112. This is indicated by block 260 in the flowchart of FIG. 6, and this reference is byFigure 7B is indicated by arrow 262 in

[0053] At some point, the content editing system 172 may make another change to node 112 after reflecting the change in change record 250. This is indicated by block 264 in the flowchart of FIG. 6. At this time, the change record generator 193 generates a subsequent change record to reflect the new change made by the content editing system 172. The node update logic 198 then updates the change record reference 192 in node 112 such that it now references the subsequent change record (or the most recent change record) just generated by node 112. This is indicated by block 266 in the flowchart of FIG. 6.

[0054] The change record update logic 200 configures the newly created change record such that it includes a back-reference to node 112. It also configures the previous change record 250 such that it now contains a reference to the subsequent change record instead of a reference to node 112 itself. The result is shown in Figure 7C in.

[0055] Figure 7C Similar to Figure 7B , except that it now shows that node 112 has created a new (or subsequent) change record 268. Figure 7C Shows that change record 250 now has a reference 270 to the newly created change record 268 instead of a reference to node 112. It also shows that change record 268 has a reference 272 to node 112, and that node 112 now has a reference 274 to change record 268 instead of a reference to change record 250. Configuring node 112 to configure change record 250 such that its reference 270 now references change record 268 is shown at block 276 in the flowchart of FIG. 6. Configuring node 112 to configure the newly created change record 268 and configuring change record 268 such that it references (by arrow 272) node 112 is also indicated by block 276.

[0056] The reference update system 194 then deletes the reference in node 112 to change record 250. This is indicated by block 278 in the flowchart of FIG. 6. The new change record detector 212 in the location marker 120 detects the creation of the subsequent change record 268. This is indicated by block 280 in the flowchart of FIG. 6. Additionally, for example, assume that a component of the content editing system 172 creates a new location marker 282 having a reference to change record 268. Thus, the content editing system 172 also maintains a reference 284 to the new location marker 282 (as shown in Figure 7C ). The creation of the new location marker is indicated by block 286 in the flowchart of FIG. 6.

[0057] At this point, it can be seen that the content editing system 172 saves references to two position markers (reference 246 to position marker 120 and reference 284 to position marker 282). Position marker 120 saves reference 262 to change record 250, while position marker 282 saves reference 288 to change record 268.

[0058] Figure 7D Similar to Figure 7C , except that it shows that node 112 has now generated two additional change records 292 and 294, but position markers 120 and 282 have not updated themselves yet. The reference in change record 268 has changed to reference 296, and reference 296 now references change record 292. Change record 292 also has reference 298, which references change record 294. Further, change record 294 has reference 300, which references node 112, and node 112 has reference 302, which now references change record 294.

[0059] The change record traversal logic 214 in position marker 120 will traverse references 262, 270, 296, and 298 through change records 250, 268, 292, and 294 until node 112, and in doing so, the change interpretation logic 216 will interpret the changes to node 112 reflected in each of these change records 250, 268, 292, and 294. The traversal of change records in this way is indicated by block 290 in the flowchart of FIG. 6.

[0060] Position marker 120 then updates itself based on the changes interpreted from all change records 250, 268, 292, and 294. For example, position marker 120 can update the offset value it maintains relative to node 112. It can also update other information. This is indicated by block 306 in the flowchart of FIG. 6.

[0061] The reference update logic 218 then updates the node / change record reference 210 in position marker 120 such that it now points to change record 294. This reference or link is indicated by the dashed arrow 308 in Figure 7D , and the process of updating the reference to change record 294 is indicated by block 310 in the flowchart of FIG. 6.

[0062] The reference update logic 218 then deletes its reference to any or all other change records. For example, it deletes its reference 262 to change record 250. The deletion of the reference to the old change record is indicated by block 312 in the flowchart of FIG. 6.

[0063] This results in Figure 7E the structure shown in. Now it can be seen that change record 250 does not have any content referencing it. Similarly,Figure 7E It is shown that the position marker 282 similarly has traversed links 296 and 298, changed records 268, 292, and 294, and updated itself and its own references such that the position marker 282 now contains a reference 314 to the changed record 294. In this case, the reference 288 can be removed to produce Figure 7F the structure shown. Since the changed record 250 now has no content referencing it, the memory management system 173 illustratively releases it from the memory 174. For example, it can be collected through garbage collection or other memory maintenance mechanisms. Once it is removed, the changed record 268 has no content referencing it. Thus, the changed record 268 can also be released from the memory. Once the changed record 268 is released, the changed record 292 has no content referencing it and it can also be released.

[0064] Next, assume that the content editing system 172 no longer needs the position marker 282. In this case, the system 172 deletes its own reference 284 to the position marker 282, producing Figure 7G the structure shown. Now, since the position marker 282 has no content referencing it, it can be released in the memory and collected by the garbage collector or other memory maintenance systems. This produces Figure 7H the structure shown. Once the content editing system 172 no longer needs the position marker 120, it deletes its own reference 246 to the position marker 120. In this case, the position marker 120 can be released from the memory.

[0065] The release of all unreferenced changed records and position markers is indicated by 316 in the flowchart of FIG. 6. Their collection and release using the garbage collection mechanism is indicated by block 318. They can also be released in other ways, and this is indicated by block 320.

[0066] It should also be noted that the current discussion can be applied to a collaborative environment. For example, assume that users 158 and 160 collaborate on an item of content 148 via a content creation service computing system 132. In this case, changes input by user 158 via a content editing system 172 are propagated via the service computing system 132 and network 138 to a client computing system 136. Each content editing system 172 (in each client computing system) then saves, on its own client computing system 134, an object representing the changes and the client computing system from which they originated, as well as the location of the content editing system 172 within the content 148. Thus, when a content editing system in the client computing system 136 generates location markers, these location markers are maintained on the client computing system 134 within the object representing the content editing system 172 in the client computing system 136. The same is true for changes sent to the client computing system 136. In this way, the code in the content editing system 172 and content tree 176 (e.g., code in nodes, change records, and location markers) can be kept up-to-date to also reflect changes made by user 160. The changes are processed in the same way as when done locally, but identifiers are maintained to identify the source of the changes (e.g., the client computing system from which they originated). Thus, the memory management system 173 can manage the editor memory 174 based not only on changes made by the content editing system 172, but also on changes made by content editing systems in the client computing systems 136 involved in the collaboration.

[0067] Thus, it can be seen that this description enables the memory management system 173 to maintain a much smaller footprint for the content tree 176 than otherwise. Once a location marker or change record is no longer referenced by another object, the memory management system 173 releases that memory for other uses. This reduces memory overflow issues and maintains a smaller memory footprint. It also makes the nodes in the content tree 176 computationally independent of the number of location markers that reference them. The change record generator 193 and the reference update system 194 are used to generate change records and modify the references within the nodes themselves, as well as the newly created and last created change records. The change record generator 193 and the reference update system 194 only process the constant-size references between nodes, the last change record, and one previous change record (since the logic changes the references in the previous change record to reference the last change record). It does not need to process updating the entire set of location markers that may be attached to a node. In fact, a node does not even need to know about any location markers attached to it. Additionally, even though the total number of location marker modifications is generally proportional to the multiple of the change records and location markers being used, an overall computational distribution advantage can be seen at the innermost data processing level of content tree modifications. That is, location marker maintenance is performed at the moment the location markers are being used. This typically occurs relatively infrequently relative to node changes. Thus, this description also saves computational overhead.

[0068] It will be noted that the foregoing discussion has described a variety of different systems, components, and / or logic. It should be realized that such systems, components, and / or logic can consist of hardware items (such as processors and associated memories, or other processing components, some of which are described below) that perform the functions associated with those systems, components, and / or logic. Additionally, systems, components, and / or logic can consist of software that is loaded into a memory and subsequently executed by a processor or server or other computing component, as described below. Systems, components, and / or logic can also consist of different combinations of hardware, software, firmware, etc., some examples of which are described below. These are just some examples of the different structures that can be used to form the foregoing systems, components, and / or logic. Other structures can also be used.

[0069] The foregoing discussion has made reference to processors and servers. In one example, processors and servers include a computer processor with associated memory and timing circuitry, not shown separately. They are functional parts of the systems or devices to which they belong, are activated by other components or items in those systems, and facilitate the functions of other components or items in those systems.

[0070] In addition, many user interface displays are discussed. They can take many different forms and can have many different user-actuable input mechanisms set thereon. For example, user-activatable input mechanisms can be text boxes, check boxes, icons, links, drop-down menus, search boxes, etc. They can also be actuated in many different ways. For example, a pointing and clicking device (such as a trackball or mouse) can be used to actuate them. Hardware buttons, switches, joysticks, or keyboards, thumb switches, or thumb pads, etc. can be used to actuate them. Virtual keyboards or other virtual actuators can also be used to actuate them. In addition, if the screen on which they are displayed is a touch-sensitive screen, touch gestures can be used to actuate them. Moreover, if the device on which they are displayed has a voice recognition component, voice commands can be used to actuate them.

[0071] Many data repositories are also discussed. It should be noted that each of them can be divided into multiple data repositories. For a system accessing them, all of these can be local, or remote, or some can be local while others are remote. All of these configurations are considered herein.

[0072] In addition, the drawings show multiple blocks with functions attributed to each block. It should be noted that fewer blocks can be used, so that the functions are performed by fewer components. In addition, more blocks can be used and the functions distributed among more components.

[0073] Figure 8 is Figure 2 a block diagram of the architecture 130 shown, except that its elements are arranged in a cloud computing architecture 500. Cloud computing provides computing, software, data access, and storage services that do not require an end user to know the physical location or configuration of the system providing the services. In various embodiments, cloud computing uses appropriate protocols to deliver services over a wide area network such as the Internet. For example, a cloud computing provider provides applications over a wide area network and they can be accessed via a web browser or any other computing component. The software or components of the architecture 130 and the corresponding data can be stored on a server at a remote location. The computing resources in a cloud computing environment can be consolidated at a remote data center location or can be dispersed. A cloud computing infrastructure can deliver services through a shared data center even if they appear as a single access point to a user. Thus, the components and functions described herein can be provided from a service provider located at a remote location using a cloud computing architecture. Alternatively, they can be provided from a traditional server, or they can be installed directly on a client device, or otherwise installed.

[0074] This description is intended to include both public cloud computing and private cloud computing. Cloud computing (both public and private) provides a substantially seamless resource pool and reduces the need to manage and configure the underlying hardware infrastructure.

[0075] A public cloud is managed by a provider and typically supports multiple consumers using the same infrastructure. Additionally, in contrast to a private cloud, a public cloud can free end-users from managing hardware. A private cloud may be managed by the organization itself, and the infrastructure is generally not shared with other organizations. The organization still maintains the hardware to some extent, such as installation and repair, etc.

[0076] In Figure 8 the example shown., some items are similar to Figure 2 the items shown in Figure 8 Specifically shown is that the computing system 132 can be located in the cloud 502 (which can be public, private, or a combination where part is public and other parts are private). Thus, users 158 and 160 respectively use client computing systems 134 and 136 to access those systems through the cloud 502.

[0077] Figure 8 Another example of a cloud architecture is also depicted. Figure 8 It is also contemplated that some elements of the computing system 132 can be arranged in the cloud 502 while other elements are not. For example, the data repository 148 can be set outside the cloud 502 and accessed through the cloud 502. Regardless of where they are located, they can be directly accessed by systems 134 and 136 through a network (wide area network or local area network), they can be hosted through services at a remote site, or they can be provided as a service through the cloud or accessed through a connection service residing in the cloud. All of these architectures are considered herein.

[0078] Similarly, Figure 8 shown is that some or all of the client computing systems 134 and 136 (or other client computing systems) can be deployed as virtual client computing systems 504 in the cloud 502 or different clouds. Users can access the virtual client 504 through any of a variety of different user devices.

[0079] It should also be noted that the architecture 130 or parts thereof can be set on a variety of different devices. Some of these devices include servers, desktop computers, laptop computers, tablet computers, or other mobile devices, such as palmtop computers, mobile phones, smartphones, multimedia players, personal digital assistants, etc.

[0080] Figure 9 is a simplified block diagram of an illustrative example of a handheld or mobile computing device of a handheld device 16 that can be used as a user or customer, where the system (or parts thereof) can be deployed. Figures 10 - 11 is an example of a handheld or mobile device.

[0081] Figure 9A general block diagram of components of a client device (or user device) 16 that can run a component computing system 132 or client systems 134 and 136 that interact with the architecture 130, or both, is provided. In the device 16, a communication link 13 is provided that allows the handheld device to communicate with other computing devices and, in some embodiments, provides channels for automatically receiving information, such as by scanning. Examples of the communication link 13 include an infrared port, a serial / USB port, a wired network port such as an Ethernet port, and a wireless network port that allows communication via one or more communication protocols, including General Packet Radio Service (GPRS), LTE, HSPA, HSPA+, and other 3G and 4G radio protocols, lXrtt, and Short Message Service, which are wireless services for providing cellular access to a network, and Wi-Fi protocols and Bluetooth protocols, which provide local wireless connectivity to a network.

[0082] In other examples, an application or system is received on a removable Secure Digital (SD) card connected to an SD card interface 15. The SD card interface 15 and the communication link 13 communicate with a processor 17 (which may also include a processor or a server in other figures) along a bus 19, which is also connected to a memory 21 and input / output (I / O) components 23, and communicates with a clock 25 and a positioning system 27.

[0083] In one example, I / O components 23 are provided to facilitate input and output operations. The I / O components 23 for various examples of the device 16 can include input components such as buttons, touch sensors, multi-touch sensors, optical or video sensors, voice sensors, touchscreens, proximity sensors, microphones, tilt sensors, and gravity switches, and output components such as display devices, speakers, and / or printer ports. Other I / O components 23 can also be used.

[0084] The clock 25 illustratively includes a real-time clock component that outputs the time and date. It can also illustratively provide a timing function for the processor 17.

[0085] The positioning system 27 illustratively includes components that output the current geographical location of the device 16. This can include, for example, a Global Positioning System (GPS) receiver, a LORAN system, a dead reckoning system, a cellular triangulation system, or other positioning systems. It can also include, for example, map software or navigation software that generates required maps, navigation routes, and other geographical functions.

[0086] The memory 21 stores an operating system 29, network settings 31, application programs 33, application program configuration settings 35, data repositories 37, communication drivers 39, and communication configuration settings 41. The memory 21 can include all types of tangible volatile and non-volatile computer-readable storage devices. It can also include computer storage media (as described below). The memory 21 stores computer-readable instructions that, when executed by the processor 17, cause the processor to perform computer-implemented steps or functions according to the instructions. Similarly, the device 16 can have a client system 24, which can run various application programs or embody part or all of the architecture 130. The processor 17 can also be activated by other components to facilitate their functions.

[0087] Examples of the network settings 31 include things such as proxy information, Internet connection information, and mappings. The application program configuration settings 35 include settings for customizing application programs for a particular enterprise or user. The communication configuration settings 41 provide parameters for communicating with other computers, including items such as GPRS parameters, SMS parameters, connection usernames, and passwords.

[0088] The application programs 33 can be application programs that have been previously stored on the device 16 or application programs installed during use, although these can be part of the operating system 29 or can also be hosted outside the device 16.

[0089] Figure 10 An example is shown where the device 16 is a tablet computer 600. In Figure 10 it, the computer 600 is shown as having a user interface display screen 602. The screen 602 can be a touch screen (so that touch gestures from a user's finger can be used to interact with application programs) or a pen-enabled interface that receives input from a pen or stylus. It can also use an on-screen virtual keyboard. Of course, it can also be attached to a keyboard or other user input device through a suitable attachment mechanism, such as a wireless link or a USB port. The computer 600 can also illustratively receive voice input.

[0090] Figure 11 It is shown that the device can be a smart phone 71. The smart phone 71 has a touch-sensitive display 73 with display icons or tiles or other user input mechanisms 75. The user can use the mechanism 75 to run application programs, make phone calls, perform data transfer operations, etc. Generally, the smart phone 71 is built on a mobile operating system and provides more advanced computing capabilities and connectivity than a feature phone.

[0091] Note that other forms of the device 16 are possible.

[0092] Figure 12 is an example of a computing environment in which (for example) the architecture 130 or parts thereof can be deployed. Refer toFigure 12 , Example systems for implementing some embodiments include a computing device in the form of a computer 810. The components of computer 810 may include, but are not limited to, a processing unit 820 (which may include a processor or server from a previous figure), a system memory 830, and a system bus 821 that couples various system components including the system memory to the processing unit 820. The system bus 821 can be any of a variety of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus, using any of a variety of bus architectures. By way of example and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus, also known as Mezzanine bus. Regarding Figure 2 The described memory and programs can be deployed in Figure 12 the corresponding parts of

[0093] Computer 810 typically includes various computer-readable media. Computer-readable media can be any available media accessible by computer 810 and includes volatile and non-volatile media, removable and non-removable media. By way of example and not limitation, computer-readable media can include computer storage media and communication media. Computer storage media is different from and does not include modulated data signals or carrier waves. It includes hardware storage media, including volatile and non-volatile, removable and non-removable media implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other storage technologies, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassettes, tapes, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and is accessible by computer 810. Communication media typically contains computer-readable instructions, data structures, program modules, or other data in a transmission mechanism and includes any information delivery media. The term "modulated data signal" refers to a signal in which one or more characteristics are set or changed to encode information in the signal. By way of example and not limitation, communication media includes wired media such as a wired network or a direct wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.

[0094] System memory 830 includes computer storage media in the form of volatile and / or non-volatile memory, such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input / output system 833 (BIOS), containing basic routines that help transfer information between elements within computer 810, for example during startup, is typically stored in ROM 831. RAM 832 typically contains data and / or program modules that can be immediately accessed by, and / or are currently being operated on by, processing unit 820. By way of example, and not limitation, Figure 12 operating system 834, application programs 835, other program modules 836, and program data 837 are illustrated.

[0095] Computer 810 may also include other removable / non-removable, volatile / non-volatile computer storage media. By way of example only, Figure 12 hard disk drive 841, which reads from or writes to non-removable, non-volatile magnetic media, and optical disk drive 855, which reads from or writes to a removable, non-volatile optical disk such as a CD ROM or other optical media, are illustrated. Other removable / non-removable, volatile / non-volatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tapes, solid state RAM, solid state ROM, and the like. Hard disk drive 841 is typically connected to system bus 821 through a non-removable memory interface such as interface 840, and optical disk drive 855 is typically connected to system bus 821 through a removable memory interface such as interface 850.

[0096] Alternatively or additionally, the functions described herein may be performed, at least in part, by one or more hardware logic components. By way of example, and not limitation, illustrative types of hardware logic components that may be used include field programmable gate arrays (FPGA), application specific integrated circuits (ASIC), application specific standard products (ASSP), system on a chip systems (SOC), complex programmable logic devices (CPLD), and the like.

[0097] The drives discussed above and illustrated in Figure 12 provide storage of computer readable instructions, data structures, program modules, and other data for computer 810. In Figure 12Among them, for example, the hard disk drive 841 is shown as storing an operating system 844, application programs 845, other program modules 846, and program data 847. Note that these components may be the same as or different from the operating system 834, application programs 835, other program modules 836, and program data 837. The operating system 844, application programs 845, other program modules 846, and program data 847 are given different numbers here to illustrate that they are at least different copies.

[0098] A user can input commands and information into the computer 810 through input devices such as a keyboard 862, a microphone 863, and a pointing device 861 such as a mouse, trackball, or touchpad. Other input devices (not shown) may include a joystick, gamepad, satellite antenna, scanner, etc. These and other input devices are typically connected to the processing unit 820 through a user input interface 860 coupled to the system bus, but may also be connected through other interfaces and bus structures, such as a parallel port, game port, or Universal Serial Bus (USB). A visual display 891 or other type of display device is also connected to the system bus 821 through an interface, such as a video interface 890. In addition to the monitor, the computer may also include other peripheral output devices that can be connected through an output peripheral interface 895, such as speakers 897 and a printer 896.

[0099] The computer 810 operates in a networked environment using a logical connection to one or more remote computers, such as the remote computer 880. The remote computer 880 can be a personal computer, handheld device, server, router, for example, a network PC, peer device, or other common network node, and generally includes many or all of the elements described above with respect to the computer 810. Figure 12 The logical connections depicted include a Local Area Network (LAN) 871 and a Wide Area Network (WAN) 873, but may also include other networks. Such a networked environment is common in offices, enterprise-wide computer networks, intranets, and the Internet.

[0100] When used in a LAN networked environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networked environment, the computer 810 typically includes a modem 872 or other means for establishing communication through the WAN 873 (such as the Internet). The modem 872 can be internal or external and can be connected to the system bus 821 via the user input interface 860 or other appropriate mechanism. In a networked environment, program modules or portions thereof described with respect to the computer 810 may be stored in a remote memory storage device. By way of example and not limitation, Figure 12Illustrated is a remote application 885 residing on a remote computer 880. It should be understood that the network connections shown are exemplary, and other means of establishing a communication link between computers may be used.

[0101] It should also be noted that the different embodiments described herein can be combined in different ways. That is, parts of one or more embodiments can be combined with parts of one or more other embodiments. All of these are contemplated herein.

[0102] Example 1 is a document processing system, comprising:

[0103] A content tree generator that generates a content tree representing a content document and having nodes;

[0104] A content editing system that modifies the nodes, the nodes comprising:

[0105] A change record generator that generates a first change record representing a modification to the node; and

[0106] A reference update system that updates the references in the first change record to reference the node, and updates the references in the node to reference the first change record; and

[0107] A text marker that has a one-way reference to the node, and a position value indicating a position in the node, and text marker reference update logic that updates the one-way reference to the node to a one-way reference to the first change record after the first change record is generated.

[0108] Example 2 is the document processing system of any or all of the previous examples, wherein the content editing system is configured to make subsequent modifications to the node, and wherein the change record generator is configured to generate subsequent change records representing subsequent modifications to the node.

[0109] Example 3 is the document processing system of any or all of the previous examples, wherein the reference update system in the node is configured to generate a reference to the node in a subsequent change record, update the reference in the first change record to a one-way reference to the subsequent change record, then delete the reference to the first change record in the node, and generate a reference to the subsequent change record in the node.

[0110] Example 4 is the document processing system of any or all of the foregoing examples, wherein the text marker comprises:

[0111] A new change record detector, configured to detect the generation of the subsequent change record, wherein the text marker reference update logic in the text marker is configured to update a one-way reference to the first change record to a one-way reference to the subsequent change record.

[0112] Example 5 is a document processing system of any or all of the foregoing examples, wherein the text marker includes:

[0113] The text marker includes: change record traversal logic, configured to traverse the first change record and the subsequent change record using the one-way reference to the first change record in the text marker, the one-way reference to the subsequent change record in the first change record, and the reference to the node in the subsequent change record.

[0114] Example 6 is a document processing system of any or all of the previous examples, wherein the text marker includes:

[0115] Change interpretation logic, configured to identify the modification and subsequent modification based on the traversal of the first change record and the subsequent change record, and generate a change interpretation based on the identified modification and subsequent modification.

[0116] Example 7 is a document processing system of any or all of the previous examples, wherein the text marker includes:

[0117] Offset update logic, configured to update the position value in the text marker that identifies the position in the node based on the change interpretation.

[0118] Example 8 is a document processing system of any or all of the previous examples, wherein the text marker reference update logic is configured to update the one-way reference to the first change record in the text marker to a one-way reference to the node.

[0119] Example 9 is a document processing system of any or all of the foregoing examples, and further includes:

[0120] A memory management system, which allocates memory for the text marker, the node, the first change record, and the subsequent change record, and releases the memory allocated to any change record not referenced by any text marker, change record, or node.

[0121] Example 10 is a document processing system of any or all of the previous examples, wherein the content editing system includes:

[0122] A browser-based interface, which receives editing user input and edits the content document based on the editing user input.

[0123] Example 11 is a method for processing a content document, including:

[0124] Receive a content tree that represents the content document and has nodes;

[0125] Modify the nodes;

[0126] Use a change record generator in the nodes to generate a first change record representing the modification to the nodes; and

[0127] Use a reference update system in the nodes to update the references of the first change record to reference the nodes and update the references in the nodes to reference the first change record; and

[0128] Update a text marker that has a one-way reference to the node and a position value indicating the position in the node by changing the one-way reference to the node to a one-way reference to the first change record.

[0129] Example 12 is the method of any or all of the foregoing examples, and further includes:

[0130] Make subsequent modifications to the nodes; and

[0131] Generate a subsequent change record representing the subsequent modification to the nodes.

[0132] Example 13 is the method of any or all of the previous examples, and further includes using a reference update system in the nodes to perform the following steps:

[0133] Generate a reference to the node in the subsequent change record;

[0134] Update the reference in the first change record to a one-way reference to the subsequent change record;

[0135] Delete the reference to the first change record in the node; and

[0136] Generate a reference to the subsequent change record in the node.

[0137] Example 14 is the method of any or all of the foregoing examples, and further includes:

[0138] Detect the generation of the subsequent change record using the text marker; and

[0139] Update the one-way reference to the first change record to a one-way reference to the subsequent change record.

[0140] Example 15 is the method of any or all of the foregoing examples, and further includes:

[0141] Traverse the first change record and subsequent change records using the change record traversal logic in the text markup, which uses a one-way reference in the text markup to the first change record, a one-way reference in the first change record to subsequent change records, and a reference in the subsequent change records to a node;

[0142] Identify the modification and subsequent modifications based on the traversal of the first change record and subsequent change records through the change interpretation logic in the text markup; and

[0143] Generate a change interpretation based on the identified modification and subsequent modifications.

[0144] Example 16 is the method of any or all of the previous examples and further includes:

[0145] Update the offset value in the text markup using the offset update logic in the text markup to identify the position in the node according to the change interpretation.

[0146] Example 17 is the method of any or all of the foregoing examples and further includes:

[0147] Update the one-way reference in the text markup to the first change record to a one-way reference to the node using the text markup reference update logic.

[0148] Example 18 is the method of any or all of the foregoing examples and further includes:

[0149] Allocate memory for the text markup, node, first change record, and subsequent change records; and

[0150] Release the memory allocated to any change record that is not referenced by any text markup, change record, or node.

[0151] Example 19 is the method of any or all of the previous examples, where the method of processing the content document is executed on a first client computing system and where making the modification includes:

[0152] Receive an indication of the modification from a second client computing system; and

[0153] Identify the modification as being made from the second client computing system.

[0154] Example 20 is a document processing system, including:

[0155] A content tree generator that generates a content tree representing the content document and having nodes;

[0156] A content editing system that is deployed on a cloud-based client computing system, receives edit input through a browser-based interface, and modifies the nodes, where the nodes include:

[0157] A change record generator that generates a first change record representing a modification to the node; and

[0158] A reference update system that updates references in the first change record to reference nodes and updates references in the nodes to reference the first change record; and

[0159] A text marker having a one-way reference to the node, a position value indicating a position in the node, and text marker reference update logic that updates the one-way reference to the node to a one-way reference to the first change record after the first change record is generated.

[0160] Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the above specific features and acts are disclosed as example forms of implementing the claims.

Claims

1. A document processing system, comprising: A content tree generator that generates a content tree representing a content document and having nodes; A content editing system that modifies the nodes, the nodes including: A change record generator that generates a first change record representing the modification to the node; and A reference update system that updates the references in the first change record to reference the node, and updates the references in the node to reference the first change record; and A text marker that has a one-way reference to the node, and a position value indicating a position offset in the node, and a text marker reference update logic that updates the one-way reference to the node to a one-way reference to the first change record after the first change record is generated, wherein the content editing system is configured to perform subsequent modifications to the node, wherein the change record generator is configured to generate a subsequent change record representing the subsequent modification to the node, and wherein the reference update system in the node is configured to generate a reference to the node in the subsequent change record, update the reference in the first change record to a one-way reference to the subsequent change record, then delete the reference to the first change record in the node, and generate a reference to the subsequent change record in the node.

2. The document processing system according to claim 1, wherein The text marker includes: A new change record detector configured to detect the generation of the subsequent change record, wherein the text marker reference update logic in the text marker is configured to update the one-way reference to the first change record to a one-way reference to the subsequent change record.

3. The document processing system according to claim 2, wherein, The text marker includes: A change record traversal logic configured to traverse the first change record and the subsequent change record using the one-way reference to the first change record in the text marker, the one-way reference to the subsequent change record in the first change record, and the reference to the node in the subsequent change record.

4. The document processing system according to claim 3, wherein, The text marker includes: A change interpretation logic configured to identify the modification and the subsequent modification based on the traversal of the first change record and the subsequent change record, and generate a change interpretation based on the identified modification and subsequent modification.

5. The document processing system according to claim 4, wherein, The text marker includes: An offset update logic configured to update the position value in the text marker that identifies the position in the node based on the change interpretation.

6. The document processing system according to claim 5, wherein, The text marker reference update logic is configured to update the one-way reference to the first change record in the text marker to a one-way reference to the most recent change record.

7. The document processing system according to claim 6, further comprising: A memory management system that allocates memory for the text markers, the nodes, the first change record, and the subsequent change records, and the memory management system releases the memory allocated to any change record that is not referenced by any text marker, change record, or node.

8. The document processing system according to claim 1, wherein, The content editing system includes: A browser-based interface that receives editing user input and edits the content document based on the editing user input.

9. A method for processing a content document, comprising: Receiving a content tree representing the content document and having nodes; Modifying the nodes; Using a change record generator in the nodes to generate a first change record representing the modification to the nodes; And Using a reference update system in the nodes to update the references in the first change record to reference the nodes and update the references in the nodes to reference the first change record; And Updating a text marker having a one-way reference to the node and a position value indicating a position offset in the node by changing the one-way reference to the node to a one-way reference to the first change record; Performing subsequent modifications to the nodes; Generating a subsequent change record representing the subsequent modification to the nodes; and Using the reference update system in the nodes to perform the following steps: Generating a reference to the node in the subsequent change record; Updating the reference in the first change record to a one-way reference to the subsequent change record; Deleting the reference to the first change record in the nodes; and Generating a reference to the subsequent change record in the nodes.

10. The method according to claim 9, further comprising: Detecting the generation of the subsequent change record using the text marker; And Updating the one-way reference to the first change record to a one-way reference to the subsequent change record.

11. A document processing system, comprising: A content tree generator that generates a content tree representing a content document and having nodes; A content editing system deployed on a cloud-based client computing system, the content editing system receiving editing input through a browser-based interface and modifying the nodes, the nodes including: A change record generator that generates a first change record representing the modification to the nodes; and A reference update system that updates the references in the first change record to reference the nodes and updates the references in the nodes to reference the first change record; and A text marker having a one-way reference to the node and a position value indicating a position offset in the node, and text marker reference update logic that updates the one-way reference to the node to a one-way reference to the first change record after the first change record is generated, wherein the content editing system is configured to perform subsequent modifications to the nodes, wherein, The change record generator is configured to generate a subsequent change record representing the subsequent modification to the node, and wherein the reference update system is configured to generate a reference to the node in the subsequent change record, update the reference in the first change record to a one-way reference to the subsequent change record, then delete the reference to the first change record in the node, and generate a reference to the subsequent change record in the node.

Citation Information

Patent Citations

  • Dynamic anchoring of annotations to editable content

    US20070061704A1

  • Buffer snapshots from unmodifiable data piece tables

    US20100070721A1