Use decoupled rendering resources to render content
By decoupled rendering resource facilities and independently managing rendering resources, the problem of tight coupling between rendering code and application development is solved, enabling flexible document rendering and content control, and supporting multi-language development and disaster recovery.
Patent Information
- Application Number
- CN202111002268.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2015-06-29
- Filing Date
- 2016-06-28
- Publication Date
- 2025-01-14
- Estimated Expiration
- 2036-06-28
AI Technical Summary
In existing technologies, the rendering code of electronic documents is usually tightly coupled with the application for creating and editing them. This requires developers of the rendering code to work closely with application developers, which increases the difficulty of development. Furthermore, frequent version releases and application updates prevent users from displaying older documents or presenting documents in different ways.
It adopts a decoupled rendering resource facility, uses independent rendering resources to render content, allows document authors to specify or automatically select rendering resource versions, supports multi-language development, and provides disaster recovery capabilities by storing and managing fragments through cloud services and supporting multiple incorporation modes to control content rendering.
It enables independent development of presentation resources, reduces development difficulty, supports diverse document presentation methods, ensures the displayability of old documents and control over content, and provides disaster recovery capabilities.
Smart Images

Figure CN113705193B_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application with application number 201680039035.3 and name “Presenting content using decoupled presentation resources” filed on June 28, 2016. Background Art
[0002] There are many types of electronic documents, such as: word processing documents that contain primarily text; spreadsheets that contain primarily numbers and formulas organized as a grid; slideshow documents that are organized as a series of slides with minimal content space based on their typical need to be recognizable from a distance; business diagrams in which text is associated with shapes in a particular configuration; etc. Often users use a different single application to perform various actions with respect to each type of electronic document. For example, word processing applications tend to be used to create, edit, and present word processing documents, while separate spreadsheet applications tend to be used to create, edit, and present spreadsheet applications. Summary of the invention
[0003] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the 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 to limit the scope of the claimed subject matter.
[0004] A facility for presenting document content is described. In an application, the facility receives a request for materializing specific document content. Additionally in the application, in response to receiving the request, the facility causes the document content to be retrieved and causes rendering code to render the retrieved document content; the rendering code is neither native to the application nor linked into the application to be executed. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Figure 1 is a network diagram illustrating an environment in which the facility operates in some embodiments.
[0006] Figure 2 is a block diagram illustrating some of the components that are typically incorporated into at least some of the computer systems and other devices on which the facility operates.
[0007] Figure 3-5 is a display diagram illustrating the editing and display of a document incorporating a shared document fragment.
[0008] Figure 6 is a flow chart illustrating steps typically performed by the facility in some embodiments to incorporate document fragments into a document and to adjust the mode of their incorporation.
[0009] Figure 7 is a flow chart illustrating steps typically performed by the facility in some embodiments to externalize a document containing a shared fragment.
[0010] Figure 8 is a tabular diagram illustrating sample contents of a fragment catalog table used by the facility in some embodiments to store information about fragments.
[0011] Fig. 9 is a tabular diagram illustrating sample contents of a fragment version table used by the facility in some embodiments to store information about fragment versions.
[0012] Fig.10 is a table diagram illustrating sample contents of a fragment version instance table used by the facility in some embodiments to store information about fragment version instances.
[0013] Fig.11 is a tabular diagram illustrating sample contents of a fragment version instance content table used by the facility in some embodiments to store fragment version instances.
[0014] Fig.12 is a flow chart illustrating steps typically performed by the facility to retrieve a content segment, the steps including selecting a presentation segment for the content segment and presenting the content segment using the selected presentation segment.
[0015] Fig.13 is a tabular diagram illustrating sample contents of a content segment type mapping table used by the facility in some embodiments to select a presentation segment of a content segment based on the type of the content segment.
[0016] Fig.14 is a flow chart illustrating steps generally performed by the facility in some embodiments to author a content segment based on input from an author.
[0017] Fig.15 is a data structure diagram that shows the relationship between versions of content fragments and the versions of presentation fragments they reference.
[0018] Fig.16 is a display diagram showing the Fig.15 The presentation result of the content segment shown at the first effective time.
[0019] Fig.17 is a display diagram, which shows the Fig.15 A sample presentation result of the content segment shown at the second effective time.
[0020] Fig.18 is a display diagram, which shows the Fig.15A sample presentation result of the content segment shown at the third effective time.
[0021] Fig.19 is a display diagram, which shows the Fig.15 A sample presentation result of the content segment shown at the fourth effective time.
[0022] Fig. 20 is a data structure diagram showing presentation fragment versions referencing other presentation fragment versions.
[0023] Fig.21 is a display diagram showing the Fig. 20 The presentation result of the content segment shown at the first time.
[0024] Fig. 22 is a display diagram showing the Fig. 20 The content segment shown at the second time in FIG. 1 generates a presentation result in the European geographical region.
[0025] Fig.23 is a flow chart illustrating steps generally performed by the facility in some embodiments to add a reference to a second content fragment to a first content fragment.
[0026] Fig.24 is a data structure diagram illustrating a fragment reference that incorporates one content fragment into another content fragment, the fragment reference specifying a presentation fragment for presenting the referenced content fragment within the referencing content fragment. DETAILED DESCRIPTION
[0027] Overview
[0028] The inventors have identified significant disadvantages of using conventional methods to present the content of electronic documents. In particular, code for displaying or otherwise presenting the content of an electronic document of a particular type is often included as part of the code for a single application for creating and editing documents of that type. The inventors have determined that including presentation code as part of a single application tends to impair the development of the presentation code because the developer developing the presentation code must collaborate closely with the developer developing the other code for the application. This collaboration requires additional effort from both the developer developing the presentation code and the developer developing the other code for the application, which can delay development.
[0029] Likewise, the inventors have appreciated that conventional applications provide document authors with little or no control over how the content they author is presented.
[0030] The inventors have also appreciated that conventional applications undergo frequent version releases; many such version releases change the file formats used to store documents; and the application vendor's update process often involves replacing the second most recent version of an application with the latest version of the application, so that at any given time, only the latest version of the application is installed. The inventors have appreciated that this process often renders users unable to display older documents. In the event that it is possible to display an older document, the document is frequently presented in a manner different from how it was originally presented by the version of the application that created it.
[0031] To overcome these shortcomings, the inventors have conceived and implemented a software and / or hardware facility for presenting content using rendering resources that are decoupled from the code that authors execute to create and edit documents ("the facility"). Each of these rendering resources contains code for presenting presentation content of a particular type. The code for the rendering resources may be developed in any of a variety of languages and may be executed via interpretation, compilation, assembly, etc. The facility is extensible in that new rendering resources and rendering resource versions may be added over time to enable documents to be displayed in new ways, while all older documents continue to be presented as they have always been.
[0032] In some embodiments, an author of a document or a portion of a document can specify which rendering resource is to be used to render the document or portion thereof, whether the document or portion thereof is rendered in isolation or in the context of another document into which it is incorporated. In some embodiments, an author incorporating a second document or portion thereof into a first document can specify which rendering resource is to be used to render the second document or portion thereof in the context of the first document. In some embodiments, where, for particular content, a rendering resource is not specified for the content nor for the document into which it is incorporated, the facility uses rules to select a rendering resource for the content, such as by selecting a default rendering resource specified for the type of content.
[0033] In some embodiments, the presentation resource is versioned, which allows subsequent versions of a presentation resource to be created at different points in time and / or by different developers. In some embodiments, where the author specifies a presentation resource, the author may specify a specific version of the presentation resource or specify rules for selecting a specific version of the presentation resource. In some embodiments, where the author does not do so, the facility automatically selects a version of the presentation resource, for example, the version of the presentation resource with the latest date, or the version of the presentation resource with the latest date among versions of resources with certain approval statuses. In some embodiments, the facility automatically selects a version of the presentation resource that is the version most recently created when the document version is stored; this has the following advantages, including: (a) the presentation resource version must be able to handle the presentation of the document version in any form in which it is stored; and (b) such presentation is consistent with the presentation when the version of the document was created.
[0034] In some embodiments, the facility operates a marketplace that enables developers of presentation resources to make them available to authors and others. In some embodiments, the facility enables people who obtain presentation resources through the marketplace to pay for the presentation resources; and in various embodiments, profits are paid to developers of presentation resources and / or the facility operator.
[0035] In some embodiments, the facility uses constructs called "segments" to store both content and presentation resources, which are units of storage that are represented separately by the facility. A document consists of a single content fragment, called a "root fragment," which can directly contain content as well as fragment references that reference other content fragments. Those fragments referenced by the root fragment can themselves directly contain content as well as fragment references to other fragments, etc. When a document is opened, the facility typically collects and synthesizes its content by retrieving the root fragment, retrieving other fragments referenced by fragment references in the root fragment, retrieving additional fragments referenced by fragment references in those fragments, and so on. In some embodiments, any fragment can be considered a document in the sense that it can be opened by an editing or rendering application as a root fragment.
[0036] In some embodiments, the facility also stores each rendering resource in a fragment. In some embodiments, the facility enables the author to specify within the content fragment a rendering fragment used to render the content fragment. For example, for a data table content fragment, the author can specify within the content fragment a content fragment to be rendered using a specific rendering fragment that generates a bar graph. In some embodiments, the facility enables the author to specify within the fragment reference to the content fragment a rendering fragment to be used to render the content fragment. For example, an author of a report fragment containing a data table fragment can specify within the fragment reference containing the data table content fragment that when the data table content fragment is incorporated into the report fragment by the reference, the data table content fragment will be rendered by a specific rendering fragment that generates a line graph. Where the previous two examples are combined, in some embodiments, the facility prefers the rendering fragment specified in the fragment reference, even though different rendering fragments are specified within the content fragment.
[0037] In some embodiments, the facility stores both the fragments that make up the user's document and the presentation fragments in a cloud-based service, where they can be accessed from almost anywhere. In some embodiments, the cloud-based service uses a technique called "erasure coding," in which it deconstructs or "shreds" the fragments defined by the document author into multiple smaller constituent fragments or "shards," each of which the facility stores on multiple storage devices in different data centers at different geographic locations to provide disaster and power outage survivability. When the cloud-based service receives a request for a fragment, it retrieves and combines the fragments to reconstruct the fragment.
[0038] In some embodiments, the facility stores a new version of a snippet to reflect each editing action performed on the snippet, each action identified by the date and time at which the editing action was performed. For example, in some embodiments, the facility creates a new snippet version for each character or grouping of characters that is inserted (e.g., by a keystroke or text block paste) in a snippet and for each character or grouping of characters that is deleted (e.g., by a backspace key press or a select and delete operation). In some embodiments, each snippet version identifies the author who performed the editing action reflected by the snippet version. In some embodiments, after being written, these snippet versions cannot be changed and are referred to as being "immutable."
[0039] In some embodiments, over time, the facility deletes some of the versions of the fragment to disassemble two or more editing actions into undeleted versions of the fragment. In some embodiments, in doing so, the facility only deletes consecutive fragment versions that all reflect editing actions performed by the same author and that also reflect editing actions performed by the same author immediately before the undeleted fragment version.
[0040] In some embodiments, where content is incorporated from a fragment-aware source document, the facility ensures that the incorporated content corresponds precisely to one or more complete fragments; that is, where the span of selected content is only a portion of a fragment in the source document, the facility splits the fragment in the source document into two fragments, the first containing only content from the selected original fragment and the second containing content from the unselected original fragment, so that the first can be incorporated into the target document and the second cannot. Where content is incorporated from a fragment-unaware source document, the facility creates a new fragment to contain the incorporated content.
[0041] In response to the incorporation operation, the facility creates a fragment reference in the target document at the location where the content is incorporated into the target document to represent the content incorporated into the target document. In some embodiments, the fragment reference includes multiple components, such as a current fragment ID component and / or an origin component. The current fragment ID component of the created fragment reference identifies the fragment referenced by the reference, for example by including the fragment ID of the fragment that can be used to retrieve the fragment. When used by the facility, the origin component saves the fragment ID of the fragment from which the incorporated content originates in the fragment reference state, which can serve as a basis for changing the pattern in which the incorporated content is used in the target document during the entire life of the fragment reference, and for tracking the provenance of the fragment. In some embodiments, the facility stores a sorted list of fragment IDs in the origin component to reflect the series of fragments from which the referenced fragment is branched.
[0042] In various embodiments, when a user performs an incorporate operation, the user may specify the initial mode of the incorporated content in the target document by, for example, holding down a certain keyboard key during a drag interaction, using various control key combinations to paste the incorporated content into the target document, responding to a context menu or dialog displayed by the facility in response to the incorporate operation, etc. In some embodiments, each mode has two characteristics: (1) whether the content of the fragment is editable in the context of the incorporated document or fragment ("editable in context"), and (2) how to select the version of the referenced fragment for inclusion in the incorporated document or fragment ("version selection"). In some embodiments, the following types of version selection options are available: (a) "latest" - the version of the fragment with the most recent event is incorporated by reference; (b) "specified time" - a specific version of the fragment associated with a specific time is incorporated by reference (e.g., in some embodiments, an arbitrarily specified time causes the selection of the latest fragment version in the fragment whose time is not later than the specified time); (c) "special" - used to specify a special rule for selecting which version of the fragment is selected for incorporation. Examples of special rules are the most recent document approved by a qualified approval authority, or the earliest version that implements edits made by a particular author.
[0043] In various embodiments, the facility supports some or all of the following incorporation modes: real-time mode, follow mode, divertible mode, fixed mode, special divertible mode, and special follow mode.
[0044] Live mode (1) is editable in context, and (2) uses a "latest" version selection. Thus, in live mode, an author can change the content of a fragment, which causes a new version of the fragment to be created to reflect each such change. These changes will appear in any other included fragments that incorporate the same fragment and whose version selection options end with that version (either (a) latest or (b) special) selected using a selection rule that selects that version. Live mode is typically used for references that are included to both revise the referenced fragment and reflect revisions to other fragments. By using the latest version selection option, references in live mode incorporate the latest version of the fragment, regardless of its content or which author's revisions it reflects. With live mode selected, the facility populates the current fragment ID component of a fragment reference with the same fragment ID as the origin component. The current component of a fragment reference identifies the fragment whose content is to be retrieved for inclusion in the target document.
[0045] Follow mode (1) is not editable in context, and (2) uses the latest version selection. In follow mode, the latest version of a snippet is always incorporated, but cannot be edited in the context of the document or snippet containing the follow mode reference. Follow mode is often used to incorporate dynamic content saved by one or more other authors in a centralized manner.
[0046] Dividable mode (1) is not editable in context, and (2) uses a version selection at a specified time. In dividable mode, a fragment can be edited at a specified time in the context of a reference from the fragment state. Performing such an edit converts the reference from dividable mode to live mode; reflects the edit in the first version of the new fragment ID; stores the new fragment ID in the context of the reference; and stores the original fragment ID in the origin component of the reference. Dividable mode is typically used when a particular state of a fragment is to serve as the basis for a new set of edits that will not affect the document or fragment into which the original fragment is incorporated. Similarly, divertable and resulting live references are not affected by edits to the original fragment after the divertable reference version selection time.
[0047] Fixed mode (1) is non-editable in context, and (2) uses time-specific version selection. While a fragment reference is in fixed mode, the incorporated content cannot be changed by a user editing the document or fragment containing the fixed reference (because non-editability in context precludes editing by such an author) or by a user editing the fragment in a different context containing the document or fragment (because such an edit would be reflected in a new fragment version that would not be selected by the time-specific selection logic for the reference). With fixed mode selected, the facility populates the current component of the fragment reference with the fragment ID of the original fragment. Fixed mode is typically used to maintain a particular state of a fragment in a referenced document.
[0048] The special divertible mode (1) is not editable in context, and (2) specifies a special version selection rule. At any given time, the merged fragment will show the content of the version of the source fragment selected by the special version selection rule at that moment. When the author edits the fragment in context, the diverting process described above is performed. The special divertible mode can be used, for example, to use an evolving template whose edits are subject to periodic approval as the basis for creating instances of new content.
[0049] Special follow mode (1) is not editable in context, and (2) specifies special version selection rules. Thus, a special follow reference shows the version of a fragment that satisfies the version selection rules at any given time, which is not editable in context. This mode can be used, for example, to pull centrally authored content that is published regularly by its author into a document or fragment to reflect all edits made since the last publication.
[0050] The user may change the mode of the incorporated content at any subsequent time via various user interface techniques, such as by right-clicking on the incorporated content and selecting an item from the resulting context menu, selecting the incorporated content and selecting a menu item from a menu bar, interacting with dedicated controls displayed when the mouse cursor hovers over the incorporated content, etc. In some embodiments, the facility is incorporated into or interoperates with an authority's system, and access controls and other content governance measures restrict the actions that a particular user can take with respect to a particular document or fragment in various circumstances, including changing the mode of an existing fragment reference.
[0051] In some embodiments, when retrieving a fragment version of content incorporated in a fixed mode at a specified time, the facility informs the user whether the version of the original fragment is newer than the read-only fragment, enabling the user to switch the mode to real-time, or remain in fixed mode but replace the time specified for the version in the reference with the time corresponding to the latest version.
[0052] In some embodiments, the facility maintains metrics about the incorporation of snippets into documents so as to enable reporting on various "hot snippet" measures that identify snippets that are incorporated into the most comprehensive documents across another grouping of an organization or users (within a grouping or category of documents, etc.), or that have been incorporated into the most documents over a recent period of time.
[0053] By behaving in some or all of the ways described above, the facility does not hinder the development of presentation resources and enables authors of content to exercise control over how that content is presented.
[0054] hardware
[0055] Figure 11 is a network diagram showing an environment in which the facility operates in some embodiments. The network diagram shows clients 110, each of which is used by different users. Each of the clients executes software that enables its users to create, revise, and present electronic documents. The software on the client also enables the client to retrieve and synthesize document content stored remotely, including document fragments. In particular, the Internet 120 or one or more other networks connect each of the clients to multiple different data centers, such as data centers 131, 141, and 151, which are geographically distributed in some embodiments to provide disaster and power outage survivability in terms of data integrity and continuous availability. Distributing the data centers geographically also helps minimize communication delays with clients in various geographical locations. Each of the data centers contains servers, such as servers 132, 142, and 152. The server accesses a storage device containing document content (which includes document fragments) and executes software to respond to requests from clients and other servers for storing and retrieving document content, which also includes document fragments. In various embodiments, the facility uses various distributions of responsibilities for retrieving and combining document fragments between clients and servers.
[0056] Although various embodiments are described with respect to the environment described above, it will be appreciated by those skilled in the art that the facility can be implemented in a variety of other environments, including a single, unitary computer system, and various other combinations of computer systems and similar devices connected in various ways. In various embodiments, various computing systems or other devices can be used as clients, including desktop computer systems, laptop computer systems, automotive computer systems, tablet computer systems, smart phones, personal digital assistants, televisions, cameras, etc.
[0057] Figure 2200 is a block diagram illustrating some of the components that are typically included in at least some of the computer systems and other devices on which the facility operates. In various embodiments, these computer systems and other devices 200 may include server computer systems, desktop computer systems, laptop computer systems, netbooks, mobile phones, personal digital assistants, televisions, cameras, car computers, electronic media players, etc. In various embodiments, the computer system and device include zero or more of each of the following: a central processing unit ("CPU") 201 for executing computer programs; computer memory 202 for storing programs and data while they are in use, including the facility and associated data, an operating system including a kernel, and device drivers; a persistent storage device 203, such as a hard disk or flash drive for persistently storing programs and data; a computer-readable media drive 204, such as a floppy disk, CD-ROM, or DVD drive, for reading programs and data stored on a computer-readable medium; and a network connection 205 for connecting the computer system to other computer systems to send and / or receive data, such as via the Internet or other networks and their networking hardware, such as switches, routers, repeaters, cables and optical fibers, optical transmitters and receivers, radio transmitters and receivers, etc. Although a computer system configured as described above is typically used to support the operation of the facility, it will be understood by those skilled in the art that the facility may be implemented using various types and configurations and devices having various components.
[0058] Clip Management
[0059] The user may incorporate pre-existing content into the target document by, for example, selecting the content within the source document and then performing an interaction for transferring the selected content to a specific location in the target document. In various embodiments, such an interaction may be, for example, placing the selected content on a clipboard and then pasting it to a target location in the target document; dragging the selected content from the source document to a target location in the target document; and the like.
[0060] Figure 3-5 is a display diagram illustrating the editing and display of a document incorporating a shared document fragment. Figure 3 is a display diagram showing a sample target document at a time before a shared document fragment is incorporated. Target document 300 includes text 301. The text may be directly contained by the root fragment of the target document, or may be contained by a fragment identified by a fragment reference within the root fragment of the target document.
[0061] Figure 4is a display diagram showing a sample target document immediately after a shared document fragment has been incorporated. At this point in time, the target document 400 contains incorporated content 310 transferred from a source document (not shown) in addition to text 401. The incorporated content constitutes a company letterhead, including an image 411 of the company logo and a text address 412 of the company.
[0062] Where a user incorporates letterhead content in a fixed mode, the letterhead content will remain unchanged in the target document unless and until the incorporation is changed to a different mode. Where a user incorporates letterhead content in a divertible mode, the user may change the letterhead content in the context of the target document; such changes will not affect the letterhead content in the source document, and any changes to the letterhead content in the source document will not be reflected in the target document. Where a user incorporates letterhead content in a live mode, the user may change the letterhead content in the context of the target document, subject to any applicable permissions, and doing so will change the letterhead content in the source document and any other document that incorporates the letterhead content in the live mode. Similarly, changes to the letterhead content via the source document or any other document that incorporates the letterhead content in the live mode will be reflected in the target document.
[0063] Figure 5 is a display diagram showing a sample target document, where the content is changed, for example, by another user in the context of the source document after the shared document fragment is incorporated into the target document in real-time mode. It can be seen that at this time in the target document 500, the letterhead content 510 contains a new company logo 511 and a new company address 512, both of which are replaced in the context of the source document and reflected in the target document according to the incorporation of the content in the real-time mode.
[0064] Figure 6 is a flow chart showing steps typically performed by a facility in some embodiments to incorporate a document fragment into a document and adjust the mode of its incorporation. In step 601, the facility receives a user interaction for adding a fragment to a target document. In various embodiments, such an interaction may be, for example: copying the selected content to a clipboard and then pasting it to a target location in the target document; dragging the selected content from a source document to a target location in the target document; and the like. When a user selects content to be added to a target document that does not completely correspond to an entire existing fragment, the facility creates one or more fragments to which the selected content completely corresponds, for example by subdividing the fragment that appears in the source document. In some cases, this involves changing and / or adding a fragment reference in the source document, and incorporating the same content in one or more other documents in a real-time mode.
[0065] In step 602, the facility creates a fragment reference in the target document. In step 603, the facility populates both the origin component of the fragment reference and its current component with the fragment ID of the fragment added to the document. In step 604, the facility receives a user interaction that specifies a mode for incorporating the fragment into the target document. In some embodiments, a single interaction or a related series of interactions can add the fragment to the document and specify the mode. If the user action received in step 604 specifies a real-time mode, the facility continues in step 605; if it specifies a follow mode, the facility continues in step 606; if it specifies a divertible mode, the facility continues in step 607; if it specifies a fixed mode, the facility continues in step 612. If it specifies a special divertible mode, the facility continues in step 613; and if it specifies a special follow mode, the facility continues in step 614.
[0066] In step 605, where live mode is specified, the facility sets edit in context to yes for the reference and sets the version selection to latest. After step 605, the facility continues in step 604 to allow the user to subsequently specify a new mode for the segment. In step 606, where follow mode is specified, the facility sets edit in context to no for the reference and sets the version selection to latest. After step 606, the facility continues in step 604. In step 607, where divertible mode is specified, the facility sets edit in context to yes for the reference and sets the version selection to the current time or an earlier time selected by the user. In step 608, if the user chooses to edit the segment in the context of the reference, the facility continues in step 609, otherwise the facility continues in step 604. In step 609, the facility creates a new segment that reflects the application of the edit of step 608 to the added segment. The new segment has a segment ID different from the added segment. In step 610, the facility populates the current component of the fragment reference with the fragment ID of the new fragment. In step 611, the facility changes the mode of the reference to real-time. After step 611, the facility continues in step 605. In step 612, in the case where fixed mode is specified, the facility sets edit in context to no for the reference, and sets the version selection to the current time or an earlier time selected by the user. After step 612, the facility continues in step 604. In step 613, in the case where special divertible mode is specified, the facility sets edit in context to yes, and sets the version selection to a version selection rule, such as a version selection rule specified via additional user interaction, a default version selection rule, an inferred version selection rule, etc. After step 613, the facility continues in step 608. In step 614, in the case where special follow mode is specified, the facility sets edit in context to no, and sets the version selection to the version selection rule in a manner similar to step 613. After step 614, the facility continues in step 604.
[0067] Those skilled in the art will understand that Figure 6 The steps shown in each of the flowcharts discussed below may be changed in a variety of ways. For example, the order of the steps may be rearranged; some steps may be performed in parallel; the steps shown may be omitted, or other steps may be included; the steps shown may be divided into sub-steps, or multiple steps shown may be combined into a single step, etc.
[0068] Figure 7is a flow chart showing steps typically performed by a facility in some embodiments to materialize a document containing a shared fragment. In various embodiments, the facility performs these steps when a document is opened, when a document needs to be displayed, when a user attempts to add it to a document, and the like. In various embodiments, the execution of these steps by the facility is distributed between the client and the server in various ways. In step 701, the facility retrieves a document, for example, by retrieving its root fragment. The facility loops through steps 702-704 for each fragment reference that appears in the document, the fragment reference including a transfer fragment reference from one fragment to another. In step 703, the facility retrieves the content of the fragment using the fragment ID contained in the current component of the fragment reference. The retrieval is subject to any version selection condition contained in the conditional component of the fragment reference; that is, the retrieval is performed with respect to the latest version of the fragment specifying any version selection condition contained, or with respect to the latest version of the fragment in the absence of a version selection condition. In various embodiments, the facility uses various forms of fragment version selection logic. In some embodiments, the process of retrieving a fragment indicates permissions associated with the fragment (including whether the fragment can be edited by the current user), wherein the facility uses the permissions to indicate and control whether the user can edit the fragment in the context of the document. Figure 8-11 retrieval is discussed in more detail in step 704. In step 705, the facility makes the fragment editable in context based on the pattern of the fragment reference. In step 706, if there are additional fragment references to process, the facility continues in step 702 to process the next fragment reference, otherwise the facility continues in step 706. In step 706, the facility materializes the document using the fragment content retrieved in step 703. After step 706, the steps end. In some embodiments (not shown), rather than looping through the fragment references in step 704, the facility may further process the fragment references in step 705. Figure 7 The process shown in , which the facility performs as a recursive descent through a tree graph, where lenses act as parents to content nodes and modify rendering behavior when a document is materialized.
[0069] Figure 8 is a table diagram showing sample contents of a fragment directory table used by the facility in some embodiments to store information about fragments. In some embodiments, the fragment directory table and Figure 9-11The other tables described in are stored in the data center on a storage device that can be accessed by a server executing server software that is part of the facility. In some embodiments, some or all of these tables are stored in multiple data centers to provide a measure of viability and locality for the data they store. The fragment directory table 800 consists of rows, such as rows 801-802, each row corresponding to a different fragment. Each row is divided into the following columns: a fragment ID column 811, which contains a fragment ID identifying the fragment to which the row corresponds; a created by column 812, which contains information identifying the user who created the fragment; a creation time column 813, which has content indicating the time when the fragment was created; and an access permission column 814, which specifies the manner in which the fragment can be accessed by various users. For example, row 801 indicates that the fragment with fragment ID 894645 was created by user vision on 9 / 6 / 2002 14:19:01 and can be read and written by all users. In some embodiments, the facility uses a geographically constant time (e.g., a time expressed in Greenwich Mean Time) to coordinate servers and clients located in different time zones. In the event that the server receives a retrieval request for segment ID 894645, it uses row 801 to determine the access permissions for that segment.
[0070] although Figure 8 And each of the tabular diagrams discussed below shows tables whose contents and organization are designed to make them more easily understood by a human reader, but those skilled in the art will understand that the actual data structures used by the facility to store this information may differ from the tables shown, in that they may, for example, be organized in a different manner; may contain more or less information than shown; may be compressed, encrypted, and / or indexed; may contain a significantly greater number of rows than shown, and so on.
[0071] Fig. 9is a tabular diagram showing sample contents of a fragment version table used by the facility in some embodiments to store information about fragment versions. In particular, the facility uses the fragment version table to identify different versions of existing fragments and their chronological order. In some embodiments, the facility only stores a single version of each fragment, in which case the fragment version table is not required and the fragment ID is replaced by the fragment version ID in other tables stored by the facility. The fragment version table 900 consists of rows, such as rows 901-903, each row corresponding to a different fragment version. Each of the rows is divided into the following columns: a fragment version ID column 911, which contains the fragment version ID of the fragment version to which the row corresponds, which uniquely identifies the fragment version; a fragment ID column 912, which contains the fragment ID that identifies the fragment to which the fragment version corresponds; and an update time column, which indicates the time when the fragment version was last updated. For example, row 901 indicates that the segment version with segment version ID 65489151 corresponds to the segment with segment ID 894645 and was last updated on 9 / 15 / 2002 9:17:12. In the event that the server receives a retrieval request for segment ID 894645, it uses rows 901 and 902 to identify the two segment versions that exist for that segment ID. These two rows can also be used to determine which segment version is newer.
[0072] In some embodiments, where fragment versions are used, some fragment versions are writable, which allows authors to change content at a later time after it is created, at least if the fragment version is not referenced by any fixed fragment reference. However, in some embodiments, each fragment version is read-only, and any revision to the content contained in an existing fragment version causes the facility to create a new fragment version. In various embodiments, the creation of new fragment versions occurs at various levels of granularity, including a new fragment version for each editing session, a new fragment version for each keystroke, or some level in between, such as every five seconds, every minute, every 15 minutes, etc.
[0073] Fig.10is a tabular diagram illustrating sample contents of a fragment version instance table used by the facility in some embodiments to store information about fragment version instances. In particular, the facility uses a fragment version example directory table to identify instances of fragment versions stored on different servers for a particular fragment version, so that the facility can select one of the fragment versions to retrieve, and so that if the fragment version is changed in an embodiment, each of its instances can be changed or invalidated, if possible. The fragment version instance directory table 1000 consists of rows, such as rows 1001-1008, each row corresponding to a different combination of a fragment version and a server on which an instance of the fragment version is stored. Each row is divided into the following columns: a fragment version ID column 1011, which contains a fragment version ID that identifies the fragment version; and a server ID column 1012, which identifies the server on which the instance of the fragment version is stored. For example, row 1001 indicates that a fragment version with fragment version ID 12345498 has an instance stored on a server with server ID 9103. In various embodiments, the facility uses various other methods to identify the location of the instance where the segment version is stored, such as by using a data center ID, a storage device ID, etc.
[0074] Fig.11 is a tabular diagram illustrating sample contents of a fragment version instance content table used by the facility in some embodiments to store fragment version instances. The fragment version instance content table 1100 consists of rows, such as rows 1101-1103, each row corresponding to a fragment version instance stored entirely on a particular server. The fragment version instance content table 1100 is specifically stored on a server with server ID 9103. Each of the rows is divided into the following columns: a fragment version ID column 1111, which contains a fragment version ID identifying the fragment version to which the row corresponds; an update time column 1112, which indicates the time when the fragment version instance was last updated; and a fragment content column 1113, which contains the content of the fragment version instance. For example, row 1101 indicates that the fragment version instance with fragment version ID 91285817 and update time 1 / 16 / 1987 16:02:54 contains specific image data. Fragment 1113 contains data returned by the facility in response to a fragment retrieval request.
[0075] In some embodiments, unlike in Fig.11 As shown in , each segment version instance is stored as a single entity, and the facility adopts "erasure coding" technology, in which it distributes the contents of each segment version instance as any number of smaller fragments, which can be stored on any arrangement of servers.
[0076] Decoupled rendering resources
[0077] Fig.12 1201, the facility retrieves the content fragment referenced by the fragment reference. In some embodiments, this involves selecting and retrieving a specific version of the content fragment that is sensitive to the mode of the fragment reference in some cases as discussed above. In step 1202, if the fragment reference specifies a rendering fragment for use when presenting the referenced content fragment, the facility proceeds to step 1203, otherwise the facility continues in step 1204. In step 1203, the facility retrieves the rendering fragment specified by the fragment reference. In some embodiments, the facility in step 1203 (and in steps 1205 and 1206 discussed below) adopts the rendering fragment version selection logic described further below to select a specific version of the rendering fragment specified for retrieval. In some embodiments, in addition to specifying a presentation fragment, the fragment reference also specifies a basis for selecting a version of the presentation fragment, such as selecting the latest presentation fragment, or selecting the latest presentation fragment after a specified time. After step 1203, the facility continues in step 1207. In step 1204, if the referenced content fragment retrieved in step 1201 specifies a presentation fragment, the facility continues in step 1205, otherwise the facility continues in step 1206. In step 1205, the facility retrieves the presentation fragment specified by the referenced content fragment. After step 1205, the facility continues in step 1207. In step 1206, the facility retrieves the presentation fragment based on the type of the referenced content fragment. For example, in some embodiments, the facility retrieves a presentation fragment for a text content fragment and retrieves another presentation fragment for a digital table content fragment. In step 1207, the facility uses the presentation fragment retrieved in step 1203, 1205, or 1206 to present the referenced content fragment retrieved in step 1201. After step 1207, these steps end.
[0078] Fig.1313 is a table diagram showing sample contents of a content segment type mapping table used by the facility in some embodiments to select a presentation segment of a content segment based on the type of the content segment. Table 1300 consists of rows, such as rows 1301-1303, each row corresponding to a different presentation segment. In some embodiments, all presentation segments that can be used are listed in the content segment type mapping table; in some embodiments, only a suitable subset of available presentation segments are listed. In particular, each row specifies the type of content segment to be presented in column 1311 for the presentation segment to which it corresponds. For example, row 1301 indicates in column 1312 that the presentation segment with segment ID 569349 is intended to present a text content segment. Row 1301 also indicates in column 1313 that the presentation segment will be used as the default presentation segment for the type of content segment, that is, the presentation segment will be used for the text content segment, where the presentation segment for the text content segment is not listed in the content segment itself or in the segment reference used to incorporate the content segment. In various embodiments, the facility uses various other schemes to select a suitable presentation segment from the presentation segments listed for the type of the content segment.
[0079] In some embodiments, the facility uses the contents of a content fragment type mapping table or similar table as a basis for displaying to a user in the process of specifying a presentation fragment of a content fragment or a fragment reference that references a content fragment, the presentation fragments available for content fragments of the type of the content fragment. For example, in the case where the author is inserting a reference to a fragment of a text content fragment, the facility may present information, such as a text description, about each of the presentation fragments with fragment IDs 569349 and 443870.
[0080] Fig.14 14 is a flow chart showing steps typically performed by the facility in some embodiments to author a content fragment based on input from an author. In step 1401, the facility receives content from an author. At step 1402, the facility receives from the author a selection of a presentation fragment to be used to present the content, at least if not overwritten by a different presentation fragment specified by a fragment reference incorporated into the content fragment. In step 1403, the facility stores the fragment ID of the presentation fragment selected in step 1402 in the content fragment along with the content received in step 1401. After step 1403, the steps end.
[0081] Fig.1515 is a data structure diagram showing the relationship between the versions of content fragments and the versions of presentation fragments they reference. The content fragment has three versions 1510, 1520, and 1530. Each of the versions of the content fragment shown has content, a timestamp, and a reference to the presentation fragment. For example, content fragment version 1510 has text content 1511, a timestamp 1512, and an application 1513 to the presentation fragment. The presentation fragment referenced by content fragment version 1510 has two shown versions, presentation fragment versions 1550 and 1560. Each of these presentation fragment versions has a presentation code and a timestamp. For example, presentation fragment version 1550 has a presentation code 1551 and a timestamp 1552. For ease of understanding, a narrative summary describing the effect of the code is shown instead of the actual presentation code 1551: the code flows text in a text content fragment in a left-to-right order. Version 1560 of the same presentation fragment flows text in the opposite direction and has a later timestamp. Because references 1513 and 1523 are shown pointing down to presentation fragment version 1550, these references specify that the latest version of the presentation fragment be used; because reference 1533 points to the left of presentation fragment version 1550, the reference specifies that this particular version of the presentation fragment be used, even if a newer version is available. Thus, applications 1513 and 1523 are similar to live references to the content fragment, while reference 1533 is similar to a fixed reference to the content fragment.
[0082] exist Fig.15 The specifications for rendering the fragments shown in can produce different rendering results at different times. In various embodiments, this occurs when a real-time materialization request is received at a specific time, or when a materialization request for a content fragment specifies a specific effective time, or when the content fragment is displayed in a timeline viewer that a user can use to display content fragments at multiple effective times.
[0083] Fig.16 is a display diagram showing the Fig.15 Display 1600 includes content 1511 from content fragment version 1510 , which is displayed from left to right by rendering code 1551 in rendering fragment version 1550 .
[0084] Fig.17 is a display diagram showing the Fig.1515 / 13 16:12:10 and 11 / 5 / 13 9:22:00. It can be seen that display 1700 includes content 1511 from content fragment version 1510, which is displayed from right to left by rendering code 1561 in rendering fragment version 1560.
[0085] Fig.18 is a display diagram showing the Fig.15 11 / 5 / 13 9:22:00 and 12 / 1 / 13 15:11:19. It can be seen that display 1800 includes content 1521 from content fragment version 1520, which is displayed from right to left by rendering code 1561 in rendering fragment version 1560.
[0086] Fig.19 is a display diagram showing the Fig.15 The rendering result of the content fragment shown in FIG. 1900 after time 12 / 1 / 13 15:11:19. It can be seen that display 1900 includes content 1531 included by content fragment version 1530, which is displayed from left to right by rendering code 1551 in rendering fragment version 1550.
[0087] In some embodiments, a presentation fragment can be another presentation fragment to incorporate the code in the referenced presentation fragment into the referenced presentation fragment. Likewise, in some embodiments, the code of a presentation fragment can include logic for selecting between two or more other presentation fragments or presentation fragment versions referenced by them.
[0088] Fig. 20 2010 . The first presentation fragment has two versions, presentation fragment versions 2020 and 2030. The presentation fragment version 2020 includes rendering code 2021 for drawing bars of a graph based on the numerical values in the table, and rendering code 2022 for rendering these numbers as labels for the bars of the graph. The rendering code 2022 includes a reference 2026 to a version 2040 of the second presentation fragment. The presentation fragment version 2040 includes rendering code 2041 for rendering numbers using a comma as a separator between thousands and hundreds.
[0089] Fig.21 is a display diagram showing the Fig. 202030 is created. At this point, presentation fragment version 2020 is used. Its presentation code 2021 draws bars 2111, 2112, and 2113 at the correct height in display 2100. Its presentation code 2022 renders numbers 2121, 2122, and 2123 by executing presentation code 2041 in presentation fragment version 2040. Execution of presentation code 2041 causes numbers 2121 and 2123 to have comma separators between thousands and hundreds.
[0090] Fig. 22 is a display diagram showing the Fig. 20 , the content fragment shown in is the rendering result generated in the European geographic region before rendering fragment version 2030 is created. Because reference 2016 in content fragment version 2010 points to the top of rendering fragment version 202, it specifies the latest version of the corresponding rendering fragment, which is now rendering fragment version 2030. Its rendering code 2031 draws bars 2211, 2212, and 2213 at appropriate heights in display 2200. In addition, its rendering code 2032 renders numbers 2221, 2222, and 2223 differently based on the region. Here, in the case where the region is Eastern Europe, rendering code 2032 follows reference 2037 to rendering fragment version 2050, whose rendering code 2051 renders numbers 2221 and 2223 as having periods as thousands separators. On the other hand, in Fig. 20 The content fragment shown in is rendered after a rendering fragment version 2030 is created in the United States region, and a rendering code 2032 follows a reference 2036 to a rendering fragment version 2040 whose rendering code 2041 uses a comma thousands separator, as in Fig.21 As shown in .
[0091] Fig.23is a flow chart showing steps that are typically performed by the facility in some embodiments to add a reference to a second content fragment to a first content fragment. In step 2301, the facility receives a selection of a second content fragment in the context of the first content fragment from the author. In step 2302, the facility receives a selection of a reference mode for adding a fragment reference to the first content fragment from the author. In step 2303, the facility receives a selection of a presentation fragment to be used to present the second content fragment in the context of the first content fragment from the author. In step 2304, the facility creates a fragment reference, the fragment reference including the reference mode selected in step 2302, the fragment ID of the second content fragment selected in step 2301, and the fragment ID of the selected presentation fragment selected in step 2303. After step 2304, these steps end.
[0092] Fig.24 2410 . The fragment reference 2416 is a data structure diagram showing a fragment reference that incorporates one content fragment into another content fragment, the fragment reference specifying a presentation fragment for presenting the referenced content fragment within the referencing content fragment. The referencing content fragment 2410 includes native content 2411, and a fragment reference 2416. The fragment reference contains a live reference mode 2417, a pointer or fragment ID 2418 that references the referenced content fragment 2420, and a reference or fragment ID 2419 that references the selected presentation fragment 2430. Therefore, the presentation code 2431 in the referenced presentation fragment 2430 is used to present the content 2421 in the referenced content fragment 2420 when the referencing content fragment 2410 is displayed. Therefore, by specifying the presentation fragment as part of the fragment reference 2416, the author overrides any default presentation fragment selection based on the type of the referencing content fragment 2410. Likewise, if it is true that the referenced content fragment 2420 itself specifies a presentation fragment, then the presentation fragment specified by the referenced content fragment 2420 will also be overwritten by the specification in the content reference 2416 to the presentation fragment 2430.
[0093] In some embodiments, compared to as described above in conjunction with Fig.24 The discussed overwriting of a presentation fragment specified by a content fragment with a different presentation fragment specified by a fragment reference to the content fragment, the facility overwrites the presentation fragment specified in a fragment reference to a content fragment with a different presentation fragment specified within the content fragment.
[0094] In some embodiments, the facility provides a computer system for presenting a content segment. The facility includes: a request subsystem configured to receive each request for presenting a content segment, each of the requests received by the request subsystem specifying a segment identifier identifying the content segment; a segment retrieval subsystem configured to retrieve the content of the content segment from a segment storage for each request received by the request subsystem, the content segment being identified by the segment identifier specified by the request; an access subsystem configured to access the segment identifier associated with the content segment for each request received by the request subsystem, the content segment being specified by the request The fragment retrieval subsystem is further configured to, for each request received by the request subsystem, retrieve from the fragment storage the content of a presentation fragment identified by the fragment identifier accessed by the access subsystem for the request; and a calling subsystem configured to, for each request received by the request subsystem, call code in the content of the presentation fragment retrieved by the fragment retrieval subsystem for the request to present the content of the content fragment identified by the fragment identifier specified by the request. Each of these subsystems is a computer-related entity, including one of hardware, a combination of hardware and software, software, or software executed on a computer.
[0095] In some embodiments, the facility provides a computer-readable medium having content configured to cause a computing system to perform the following operations for presenting document content: in an application: receive a request for materializing specific document content; in response to receiving the request: cause the document content to be retrieved; and cause presentation code that is neither native to the application nor linked to the application to be executed to present the retrieved document content.
[0096] In some embodiments, the facility provides a method in a computing system for presenting document content. The method includes: in an application: receiving a request for materializing specific document content; in response to receiving the request: causing the document content to be retrieved; and causing presentation code that is neither native to the application nor linked to the application to be executed to present the retrieved document content.
[0097] In some embodiments, the facility provides a computer-readable medium storing a fragment incorporation reference data structure associated with a document. The data structure includes: a first fragment identifier that identifies a content fragment to be incorporated into the document; and a second fragment identifier that identifies a rendering fragment, the rendering fragment containing code to be executed to render the content of the content fragment in the context of the document, so that the content of the data structure can be used to: retrieve the content fragment identified by the first fragment identifier, retrieve the rendering fragment identified by the second fragment identifier, and execute the code in the rendering fragment to render the content of the content fragment.
[0098] in conclusion
[0099] Those skilled in the art will appreciate that the facilities described above may be directly adapted or extended in various ways.While the foregoing description has made reference to particular embodiments, the scope of the present invention is solely defined by the following claims and the elements recited therein.
Claims
1. A system for creating an electronic document containing document fragments, the system comprising: A processing unit configured to: receiving a first user interaction to add a fragment containing content to the electronic document at a target location; receiving a second user interaction to set a mode for incorporating the segment into the electronic document at the target location; as well as A fragment reference is created at the target location within the electronic document to represent the content contained in the fragment, the fragment reference comprising an identifier, an edit value, and a version selection value, the edit value specifying whether the content contained in the fragment is editable within the electronic document, and the version selection value specifying how to select a version of the fragment for incorporation into the electronic document, the edit value and the version selection value being set based on the mode for incorporating the fragment into the electronic document at the target location, the content contained in the fragment being stored in an entry in a table separate from the electronic document, the entry comprising the identifier and the content.
2. The system according to claim 1, wherein: The processing unit is configured to receive the first user interaction for adding the segment via at least one selected from the group consisting of pasting content into the electronic document at the target location and dragging content from a source document to the target location within the electronic document.
3. The system according to claim 1, wherein: The first user interaction and the second user interaction are received through a single interaction.
4. The system according to claim 1, wherein: The processing unit is further configured to receive a third user interaction to set access permissions for the segment, wherein the access permissions are associated with the identifier and specify one or more ways in which one or more users can access the segment.
5. The system according to claim 4, wherein: The one or more modes include at least one selected from the group consisting of reading the segment and writing the segment.
6. The system according to claim 1, wherein: In response to receiving a file system command to open a file containing the electronic document within an application, the processing unit is configured to generate a temporary materialized view of the electronic document at an operating system level by retrieving the content contained in the fragment from the table separate from the electronic document using the identifier contained in the fragment reference contained in the electronic document, and provide the temporary materialized view of the electronic document to the application.
7. The system according to claim 1, wherein: The mode for incorporating the segment into the electronic document includes at least one selected from the group consisting of a real-time mode, a follow mode, a divertible mode, and a fixed mode.
8. The system according to claim 1, wherein: When the mode for incorporating the fragment into the electronic document is a real-time mode, the edit value is set so that the content contained in the fragment is editable within the electronic document, and the version selection value is set to the latest version of the fragment.
9. The system according to claim 1, wherein: When the mode for incorporating the segment into the electronic document is a follow mode, the edit value is set so that the content included in the segment is not editable within the electronic document, and the version value is set to the latest version of the segment.
10. The system according to claim 1, wherein: When the mode for incorporating the segment into the electronic document is a divertible mode, the edit value is set so that the content included in the segment is editable within the electronic document, and the version value is set to a version of the segment at a specified time.
11. The system according to claim 1, wherein: When the mode for incorporating the segment into the electronic document is a fixed mode, the edit value is set so that the content included in the segment is not editable, and the version value is set to a version of the segment at a specified time.
12. A method for creating an electronic document containing document fragments, the method comprising: receiving, with a processing unit, a first user interaction to add a segment containing content to the electronic document at a target location; receiving, with the processing unit, a second user interaction to set a mode for incorporating the segment into the electronic document at the target location; as well as A fragment reference is created by the processing unit at the target location within the electronic document to represent the content contained in the fragment, the fragment reference including an identifier, an edit value, and a version selection value, the edit value specifying whether the content contained in the fragment is editable within the electronic document, and the version selection value specifying how to select a version of the fragment for incorporation into the electronic document, the edit value and the version selection value being set based on the mode for incorporating the fragment into the electronic document at the target location, the content contained in the fragment being stored in an entry in a table separate from the electronic document, the entry including the identifier and the content.
13. The method of claim 12, further comprising receiving a third user interaction to set access permissions for the segment, wherein: The access permissions are associated with the identifier and specify one or more ways in which one or more users can access the segment.
14. The method according to claim 13, wherein: The one or more modes include at least one selected from the group consisting of reading the segment and writing the segment.
15. The method according to claim 12, further comprising: In response to receiving a file system command to open a file containing the electronic document within an application, a temporary materialized view of the electronic document is generated at an operating system level by retrieving the content contained in the fragment from the table separate from the electronic document using the identifier contained in the fragment reference contained in the electronic document, and the temporary materialized view of the electronic document is provided to the application.
16. A storage device that persistently stores executable instructions that, when executed by a processing unit, perform a set of functions, the set of functions comprising: receiving a first user interaction to add a fragment containing content to the electronic document at a target location; receiving a second user interaction to set a mode for incorporating the segment into the electronic document at the target location; as well as A fragment reference is created at the target location within the electronic document to represent the content contained in the fragment, the fragment reference comprising an identifier, an edit value, and a version selection value, the edit value specifying whether the content contained in the fragment is editable within the electronic document, and the version selection value specifying how to select a version of the fragment for incorporation into the electronic document, the edit value and the version selection value being set based on the mode for incorporating the fragment into the electronic document at the target location, the content contained in the fragment being stored in an entry in a table separate from the electronic document, the entry comprising the identifier and the content.
17. The storage device of claim 16, further comprising receiving a third user interaction to set access permissions for the segment, wherein: The access permissions are associated with the identifier and specify one or more ways in which one or more users can access the segment.
18. The storage device according to claim 16, further comprising: In response to receiving a file system command to open a file containing the electronic document within an application, a temporary materialized view of the electronic document is generated at an operating system level by retrieving the content contained in the fragment from the table separate from the electronic document using the identifier contained in the fragment reference contained in the electronic document, and the temporary materialized view of the electronic document is provided to the application.
Citation Information
Patent Citations
Chaining configuration sets in a content management system
US20080189595A1
Extending the capabilities of an XSL style sheet to include components for content transformation
US6507857B1