Abstract:
A computer program product provides an active interactive document resource with an active shell surrounding its data. The shell operates in a runtime environment, a nest, and can operate with a helper process for the coordination and distribution of tasks. The active document in conjunction with its shell provides functionality in basic document management features, interactivity features, search, and other miscellaneous features such as imbedding dynamically generated content. Basic document features include automatic update or synchronization of document content, maintaining a list of similar documents, adding related or updated content, automatic update of the document&#39;s index, and automatic update and conversion of the underlying document format. Interactivity features include interacting with other documents within the same nest or other nests, interacting with users, and maintaining security.

Description:
FIELD OF THE INVENTION  
         [0001]    The present invention generally relates to active documents, and more specifically to an active shell surrounding the active document, for providing basic management and connectivity features. The shell operates in a runtime environment and operates with a helper process for the coordination and distribution of tasks.  
         BACKGROUND OF THE INVENTION  
         [0002]    Typical documents created using current technology are passive. Documents are files that do not typically have executable code. The lowest representation level of data is the binary representation in a computer&#39;s memory, which data requires an interpreter to retrieve the semantics of that data. In a higher level context, a document adheres to a specification of its format to allow exchange and compatibility. Some application software is required to interpret, view, print, and interact with that document, reflecting the essentially passive nature of current document technology.  
           [0003]    Associating code and an execution environment with a document would transform it from a passive state to an active entity. The term “active document” is widely used in various different contexts. For the purposes of this discussion, an “active document” is defined as representing a lightweight executable software code that acts as a container for static or dynamically generated document resources. The active document provides a workplace to store additional data. In addition, it has a well-defined interface to interact with other live active documents, networks, persons, or other entities.  
           [0004]    An active document has an associated set of behaviors that have been referred to as activities. Activities are arbitrary actions performed as a result of a user opening, scrolling, editing, or closing a document. Although a document&#39;s activities are actually triggered by the document editor, they are associated with the document and preserved when the document is filed, copied, or even electronically mailed. Users have conventionally marked arbitrary items in a document as active or associate queries. However, a specific application, typically a special document-editor application, is still required to load and then execute the active document. If this document editor application is terminated, the document is no longer active.  
           [0005]    The Internet currently comprises mostly documents that are either static or dynamically generated. Transforming these passive resources into active participants would change the way the Internet behaves in various ways. First, live active documents are smart about their content. They can update document format, synchronize with newer versions, add related content, etc. Second, active documents can interact with other documents and users, exchange information, notify persons about their existence, and even trigger actions in a user&#39;s personal information manager (e.g. active calendar). Thus, there is a need for active documents that can be edited or otherwise manipulated by a variety of applications and can be treated as a process instead of a file. The need for such a system has heretofore remained unsatisfied.  
         SUMMARY OF THE INVENTION  
         [0006]    The present invention satisfies this need, and presents a system, a computer program product, and a associated method (collectively referred to herein as “the system” or “the present system”) for providing a runtime environment for interactive and live web based document resources. The present system is a live interactive document resource with an active shell surrounding its data.  
           [0007]    The shell comprises software code, such as Java, that provides basic management and connectivity features. The shell acts as a container holding the document data along with a work place to store additional data. Each shell has an interface accessible through an application programming interface (API) or a graphical user interface (GUI). One example of an API in this instance would be Internet services. The shell operates in a runtime environment called a nest and can operate with a helper process for the coordination and distribution of tasks.  
           [0008]    The active document in conjunction with its shell provides novel functionality in basic document management features, interactivity features, search, and other miscellaneous features, such as imbedding dynamically generated content. Basic document management features include automatic update or synchronization of document content, maintaining a list of similar documents, adding related or updated content, automatic update of the document&#39;s index, and automatic update and conversion of the underlying document format. Interactivity features include interacting with other documents within the same nest or other nests, interacting with users, and maintaining security.  
           [0009]    To synchronize the document content, the user provides to the document&#39;s shell the origin of the document (e.g. the URL of the document). The shell is then able to compare and synchronize its content with the original document on an automatic or user specified schedule. Consequently, the user will always have access to a document with current content. The document initiates the content synchronization, reflecting the active nature of the document.  
           [0010]    To maintain a list of similar documents, the shell requests the helper to search for particular documents (e.g. using the indexed keywords as a search criteria). The active document can automatically search for similar documents in the same nest or in one or more different nests. When searching for similar documents, the helper “asks” other shells if they are related or similar to the shell originating the request. A related or similar shell responds to the helper&#39;s request. The helper then forwards this response to the shell that originated the request. It is also possible for a shell to ask the helper for a list of shells within the nest; the shell can then submit the request directly to the neighboring shells.  
           [0011]    When a new shell is added to a nest, the helper informs all shells occupying the same nest that a new shell has arrived. Other shells can then add this event to their event queue. After some random time delay, these shells can contact their new neighbor. This time delay allows the new shell time to “rest”.  
           [0012]    Similarly, if a shell is deleted, the deleted shell sends its list of similar documents to the helper. The helper notifies the documents on this list of the deletion, eliminating pointers to nonexistent similar documents. In general, a relation between two shells is always a two-way relation; referential integrity in this relation will be enforced. The functionality of a reference list of similar documents provides a fast and convenient lookup for a user. The size of the list may be limited to a specific manageable size.  
           [0013]    Each document in the list will have a similarity score, managed by a priority queue. If a new document is similar, it will be entered in the list only if its similarity score is at least as large as the least similar document. The least similar document may then be deleted from the list, and the relationship with the least similar document is terminated.  
           [0014]    Another document management feature is adding related or updated content, making the active document a living document. A living document actively adds pertinent content without user intervention. Periodically, the shell may look for additional or updated content from various sources. For example, a document might represent a hub for computing resources. A shell is equipped with a web crawler or search module to crawl or search the web for related documents, updated content, etc. When located, this new content is added to the shell&#39;s workplace. Crawling and search tasks may be assigned to the helper to balance the work load between the shell and the helper.  
           [0015]    In principal, every task of a shell might be propagated to the helper. The helper uses models of distributed processing to coordinate and run the tasks, returning the results to the shell at a later time. A user is able to customize this gathering process. A GUI for the shell would allow the user set an update schedule, specify which portions of the document to update, etc.  
           [0016]    A third document management feature is automatic update of the document&#39;s index. The shell automatically updates its index when content is added or modified. In addition, the shell sends a notification request to similar shells (stored in the list of similar documents) to verify that these documents are still similar. A key feature of the present system is that the shell for each document maintains an index for that document. As opposed to a centralized index maintained by the application, the index is decentralized and maintained on the document level.  
           [0017]    Another document management feature is automatic update and conversion of the underlying document format. A user may not have an appropriate viewing device for interpreting the document data. For example, a shell may contain a PostScript® document. A user with no PostScript® viewer will be unable to view the document as stored. However, the user does have a JPG viewer. In situations such as this, the shell then asks the helper to convert the data on the fly and store the additional data in a supported format in the shell. The document content can now be displayed in the user&#39;s JPG viewer.  
           [0018]    In addition, a document format might change over time. For example, the document format of word processing documents might be upgraded to support more features. HTML documents on the Internet might change as document standards evolve. A shell monitors its document format and automatically modifies the new format as required. The helper performs the conversion; the new format is saved in the shell.  
           [0019]    One interactivity feature of the present system is the ability to interact with other documents. A shell can interact with other shells in the same nest or with shells in other nests. It can request a list of shells in the same nest from the helper. The helper itself can register with other helpers. Consequently, helpers can contact other helpers to retrieve a list of shells of other nests. The shell itself can get in touch with a different shell using standard networking protocols, such as SOAP.  
           [0020]    A shell can be identified through its unique address. The interaction feature of shells might be used to exchange data. For instance, a shell could exchange the list of similar documents with a similar shell. This merges the two lists into one, enhancing the list of similar documents for both shells. In addition, shells might exchange various content, synchronize content, and so forth.  
           [0021]    Another interactivity feature of the present system is the ability to interact with users. A shell can be connected to a personal and social automation management system, providing novel features for that management system. An active document recognizes that a particular user might be interested in its content and notifies this user. Consequently, instead of a user searching for documents, the documents come to the user.  
           [0022]    One method for implementing this feature is through the user listing their hobbies and interests with the management system. A shell might then contact the management system to locate users who might be interested in its content. The management system might then reply with a list of potential users. The shell might then send an email, instant message, or other message to this user providing a thumbnail or preview of its content. An interested user can interact with the shell, clone the shell to have a copy in the user&#39;s nest, etc. Furthermore, if the user likes the document content, the shell could notify similar shells to send a preview to this user. In addition, a shell can store the contact information for interested users for future occasions.  
           [0023]    Another interactivity feature of the present system is security. A nest will have security features implemented to maintain access control over its shells. In addition, all shells will have an access control list. In principle, a shell could derive its access control list from the access control list of the document. Standard security technologies such as those used in operating systems can be applied to help coordinate access permission and prevent unauthorized document access.  
           [0024]    A feature of the present system is its active search architecture. Current search technology is based on the principle of gathering information from the Internet, indexing it, and making it available for search. However, the Internet grows so rapidly that most of the major search engines are unable to keep up. Documents on the Internet are frequently modified, added, deleted, etc. Many new Internet sites appear on a daily basis. Active documents provide the basis for a new and novel search architecture that can complement the existing standard Internet search architecture.  
           [0025]    The active search architecture allows a shell to register its index and identity with a search engine supporting active documents. The search engine can then integrate this data in a searchable index. Once a document is deleted, it will send an erase request to the search engine. The active document will also notify a search engine automatically of changes in its index. The active search architecture eliminates the need for crawling or re-crawling resources; the document itself acts when modified. Furthermore, an active document can have a reference list of search engines with which it is registered (similar to the reference list for similar active documents).  
           [0026]    In an alternate embodiment, the helper could be responsible for maintaining a global index for a nest and for registering or exchanging that index with a search engine that supports active documents. This intermediary hierarchy could help to distribute and eliminate some network traffic.  
           [0027]    Another feature of the present invention is the ability to embed dynamically, generated content in a document. The features previously discussed primarily address static documents. A static document is created at a specific time and its content is not changing. In contrast, a dynamically generated document is created by some script or is executable at run time (e.g. at the user&#39;s request). Active documents can support dynamically generated documents by providing a runtime environment inside the shell for scripts, executables, etc. The content of such a document is then generated on demand or request based on various input parameters and may differ each time requested.  
           [0028]    With XML as a standard for describing content and structure and the advances in Java and web services architecture, the implementation of live active documents is technically feasible. Different vendors can implement different products based on the technology. Existing document resources can easily be converted into live documents using the appropriate tool. Current document technology and applications adhere to predefined standards; consequently, communication between different products is no problem. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0029]    The various features of the present invention and the manner of attaining them will be described in greater detail with reference to the following description, claims, and drawings, wherein reference numerals are reused, where appropriate, to indicate a correspondence between the referenced items, and wherein:  
         [0030]    [0030]FIG. 1 is a schematic illustration of an exemplary operating environment in which a system for providing a runtime environment for interactive or live web based document resources can be used according to the present invention;  
         [0031]    [0031]FIG. 2 is a block diagram of the high-level architecture of the system of FIG. 1;  
         [0032]    [0032]FIG. 3 is a block diagram of a shell of the system of FIGS. 1 and 2;  
         [0033]    [0033]FIG. 4 is comprised of FIGS. 4A and 4B, and represents a process flow chart illustrating a method of operation for creating the shell for an active document, using the system of FIGS. 1 and 2;  
         [0034]    [0034]FIG. 5 is a block diagram connectivity of the system of FIGS. 1 and 2;  
         [0035]    [0035]FIG. 6 is comprised of FIGS. 6A and 6B, and represents a block diagram and a graphical illustration, respectively, showing the method of the system of FIGS. 1 and 2 for determining similarity between active documents;  
         [0036]    [0036]FIG. 7 is a block diagram illustrating the method of the system of FIGS. 1 and 2 for automatically contacting users that might be interested in the content of an active document;  
         [0037]    [0037]FIG. 8 is a block diagram illustrating the method of the system of FIGS. 1 and 2 for synchronizing the contents of a document being collaboratively edited; and  
         [0038]    [0038]FIG. 9 is a block diagram illustrating the method of the system of FIGS. 1 and 2 for converting the underlying document format of an active document.  
     
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS  
       [0039]    The following definitions and explanations provide background information pertaining to the technical field of the present invention, and are intended to facilitate the understanding of the present invention without limiting its scope:  
         [0040]    Active Document: A lightweight executable software code that acts as a container for static or dynamically generated document resources.  
         [0041]    Hit: A response to a search query. The response is a document found by the search engine that contains key words or other attributes relevant to the search query.  
         [0042]    HTML (Hypertext Markup Language): A standard language for attaching presentation and linking attributes to informational content within documents. During a document authoring stage, HTML “tags” are embedded within the informational content of the document. When the web document (or “HTML document”) is subsequently transmitted by a web server to a web browser, the tags are interpreted by the browser and used to parse and display the document. In addition to specifying how the web browser is to display the document, HTML tags can be used to create hyperlinks to other web documents.  
         [0043]    HTTP (HyperText Transport Protocol): The communications protocol used to connect to servers on the World Wide Web. Its primary function is to establish a connection with a Web server and transmit HTML pages to the client browser.  
         [0044]    Internet: A collection of interconnected public and private computer networks that are linked together with routers by a set of standards protocols to form a global, distributed network.  
         [0045]    SGML (Standard Generalized Markup Language): A generic language for writing markup languages. SGML enables different presentations of the same information by defining the general structure and elements of a document.  
         [0046]    SOAP (Simple Object Access Protocol): A protocol that provides a way for applications to communicate with each other over the Internet, independent of platform, or the underlying hardware or software for a system.  
         [0047]    URL (Uniform Resource Locator): A unique address that fully specifies the location of a content object on the Internet. The general format of a URL is protocol://server-address/path/filename.  
         [0048]    World Wide Web (WWW, also Web): An Internet client-server hypertext distributed information retrieval system.  
         [0049]    XML: extensible Markup Language. A standard format used to describe semi-structured documents and data. During a document authoring stage, XML “tags” are embedded within the informational content of the document. When the XML document is subsequently transmitted between computer systems, the tags are used to parse and interpret the document by the receiving system.  
         [0050]    [0050]FIG. 1 portrays an exemplary overall environment in which a system and associated method for providing a runtime environment for interactive and live web based document resources according to the present invention may be used. System  10  includes a software programming code or computer program product that is typically embedded within, or installed on a host server  15 . Alternatively, system  10  can be saved on a suitable storage medium such as a diskette, a CD, a hard drive, or like devices. While the system  10  will be described in connection with the WWW, the system  10  can be used with a stand-alone database of terms that may have been derived from the WWW and/or other sources.  
         [0051]    The cloud-like communication network  20  is comprised of communication lines and switches connecting servers such as servers  25 ,  30 , to gateways such as gateway  35 . The servers  25 ,  30  and the gateway  35  provide the communication access to the WWW or Internet. Users, such as remote Internet users, are represented by a variety of computers such as computers  40 ,  45 ,  50 , and can query the host server  15  for desired information through the network  20 . Computers  40 ,  45 ,  50  each include software that will allow the user to browse the Internet and interface securely with the host server  15 . The host server  15  is connected to the network  20  via a communications link  55  such as a telephone, cable, or satellite link. The servers  25 ,  30  can be connected via high-speed Internet network lines  60 ,  65  to other computers and gateways.  
         [0052]    The high-level architecture of system  10  is illustrated by the block diagram of FIG. 2. System  10  comprises a shell  205 , a runtime environment called a nest  210 , and a coordination manager and task distribution unit called a helper  215 . Shell  205  comprises software code implemented, for example, in Java® that provides some basic management and connectivity features. Shell  205  acts as a container holding the data for the active document  220 . Shell  205  operates in nest  210 . Nest  210  can easily be integrated into current operating systems.  
         [0053]    A block diagram for the architecture of shell  205  is shown in FIG. 3. A tool can be used to convert a standard document resource into a live active document  220 . The conversion process integrates the content of the standard document into shell  205 . During this process, the standard document is converted into a normalized structure for internal representation within shell  205 . This normalized structure is the active document  220 , typically written in languages such as SGML or XML. However, the normalized structure is not required.  
         [0054]    If necessary, a shell  205  can contain multiple copies of the data in different formats. A shell  205  has a control unit  305  that manages all interactions with other shells, nests, and helpers. The plug in space  310  provides storage for additional software code, providing extensibility. The communication interface management  315  manages the external communication with other shells similar to the functionality of a protocol handler. The implementation of the communication interface management  315  should be based on communications standards such as SOAP. Each shell  205  has a work place  320  for persistent data storage in addition to storage space for its index  325  and reference space  330 . System  10  decentralizes the index; each active document  220  now has its own index  330  referring to its content. When the user queries against the active document  220 , the active document  220  itself responds to the query.  
         [0055]    The method  400  of system  10  for implementing a shell for an active document is described by the process flow chart of FIGS. 4A and 4B. The user creates an active document  220  or converts an existing document to an active document  220  at block  405 . System  10  then creates a shell  205  for the active document  220  at block  410 . Shell  205  is then registered with a dedicated runtime environment, nest  210 , at block  415 . At block  420 , system  10  activates shell  205 . Shell  205  could be implemented as a thread of control within nest  210 . Nest  210  will keep shell  205  active and alive and provides it with the necessary computation cycles. Some workload will be produced on the user&#39;s machine; the workload volume will depend on the number of shells  205  that nest  210  is serving. Implementing smart process management in nest  210  and moving non time-critial tasks to idle hours of the machine will alleviate machine usage.  
         [0056]    During its lifetime, the active document  220  will gradually collect additional data and state information. This data and state information is stored in the workplace  320  of shell  205 . Shell  205  can be stored in persistent storage such as a file system, database, etc. The software code of shell  205  contains a well defined API that provides connectivity, query, search, and various other document management features.  
         [0057]    The design goal of system  10  is to keep shell  205  itself lightweight to avoid unnecessary overhead for each active document  220 . Consequently, shell  205  has a basic execution framework that allows the user to add more functionality in form of plug-ins. These plug-ins are stored in a portion of the work place  320  or in nest  210 . In addition, a nest  210  will contain some API such that the operating system or a client can interact with the active document  220 .  
         [0058]    Once system  10  activates a shell  205 , shell  205  registers with the helper  215 . Helper  215  provides additional processing power to shell  205  and performs various tasks and services for shell  205  on demand. Shell  205  is small and can&#39;t manage large computational tasks. Updating or maintaining the data in active document  220  or the index  325  may involve computationally intensive tasks. Consequently, shell  205  generates a task for helper  215 . One such task would be converting the active document from XML to PDF® format. The helper  215  may reside on a different server machine for load balancing. Companies may provide these helper servers as a service or the helper  215  may be a grid of computers using a distributed approach. The main functions performed by shell  205  are communicating with other shells, nests, and helpers; indexing; delegating tasks to the helper; receiving results; parsing and converting.  
         [0059]    Once system  10  registers shell  205  with helper  215 , shell  205  sends its document content to the helper  215  at block  430 . The helper  215  analyzes the document format at block  435 . Continuing on to FIG. 4B, system  10  converts the document format to a common standardized XML format at block  440 . System  10  then indexes the content according to the selected format at block  445 . This index and other metadata is returned to shell  205  at block  450 . Shell  205  stores the index data in index  325  and stores additional data such as metadata in workplace  320  for future access.  
         [0060]    A user can interact with shell  205  directly by sending commands to shell  205 . Sample commands are “view content” or “print content”. Shell  205  will then invoke the appropriate document format viewer to display the content of active document  220 . In addition, nest  210  will provide network connectivity for each shell  205 . Consequently, shell  205  can be accessed over a network using a standardized protocol such as HTTP, SOAP, etc.  
         [0061]    The ability of a user to initiate commands implemented by the active document  220  is a novel feature of system  10 . Currently, a user selects a document using a pointing device in a file explorer (e.g. Windows Explorer®). The operating system has a mapping table of registered applications for the particular file type. From this mapping table, the operating system invokes the appropriate registered application with the name of the document as a parameter. Conversely, shell  205  receives a command from the user to view the content of its active document  220 . Shell  205  then performs the actions required to open the viewer application, etc. The operating system is not directly involved with opening active document  220 . System  10  might provide a GUI to help facilitate user input. Shell  205  models itself as a web service to provide users programmatic access.  
         [0062]    [0062]FIG. 5 shows the structural connectivity between components. A novel feature of system  10  is the ability of a shell to communicate with other shells. A shell such as shell  505  can communicate with its nest  510 , other shells  515 ,  520  in its nest  510 , other nests such as nest  525 , or shells within other nests such as shells  530 ,  535 ,  540  in nest  525 . Nest  510  can communicate with helper  545 , and helper  545  can communicate with other helpers such as helper  550 . It is also possible for helpers such as helper  545  to directly communicate with a shell such as shell  505 . This structural connectivity is the basis for the active search architecture of system  10 . For example, a user sends a query to nest  510  and nest  525 . Nest  510  and nest  525  execute the query in parallel, querying each of the shells in their nest at the same time. The shells  505 ,  515 ,  520 , execute the query from nest  510 . If a “hit” occurs, the shell returns an address such as a URL to nest  510 , and nest  510  forwards the address to the user. Similarly, shells  530 ,  535 ,  540  execute the query from nest  525 , returning addresses as appropriate to nest  525  to forward to the user.  
         [0063]    [0063]FIG. 6A illustrates the method  600  used by system  10  to determine similarity between active documents. Each active document has its own feature vector that can be derived from the index: 
         {overscore (V)}(X 1 ,X 2 ,X 3 ,X 4 , . . . , X i ). 
         [0064]    In a novel aspect of system  10 , each shell exchanges feature vectors: shell  605  exchanges feature vectors with shell  610  and with shell  615 . Shell  615  also exchanges feature vectors with shell  610 . Shell  605  compares its own feature vector V 1   620  with the feature vector V 2   625  of shell  610 . The comparison between these two vectors is shown graphically in the multidimensional vector space model of FIG. 6B. Shell  605  calculates the angle, α, between V 1   620  and V 2   625 . If αis small, V 1   620  and V 2   625  are similar; otherwise, they are not similar. Each shell maintains a list of similar documents. If a user requests information that the active document does not have, the shell can refer or point the user to a similar file that does have the information. In a preferred embodiment, the feature vector is stored in each document.  
         [0065]    [0065]FIG. 7 illustrates the method  700  used by system  10  to automatically contact users that might be interested in the content of an active document. As user A  705  and user B  710  interact via communication interface module  715  with active document  720  in shell  725 , shell  725  reads and stores their user profiles in index  730 . Alternatively, shell  725  can obtain user profiles through a personal and social automation management system in which users list interests, hobbies, etc. User A  705  later modifies active document  720  in shell  725 , writing an article about technology X. Shell  725  knows the interests of user B  710  from the user&#39;s profile. The active document  720  has evolved, now containing information of interest to user B  710 . The shell  725  sends an e-mail to user B  710  informing them that active document  720  might be of interest. User B is apprised of the content of active document  720  even though the paper is not yet published.  
         [0066]    [0066]FIG. 8 illustrates the method  800  of system  10  synchronizing active document content. With current document management technology, collaborative editing is difficult to maintain when many users are working on the same document. A novel feature of system  10  is its ability to manage the collaborative editing process. User  1   805 , user  2   810 , and user  3   815  are editing active document  820  in shell  825 . Shell  825  synchronizes the content, index, and other information regarding active document  820  with a mirror shell  830 .  
         [0067]    [0067]FIG. 9 illustrates the method  900  of system  10  in converting the underlying document format of the active document. All active documents are active from the time the user&#39;s personal computer is turned on. User  905  opens word processing application  910  and wishes to edit active document  915  by notifying shell  920  through the communications interface module  925 . Shell  920  converts the XML format of active document  915  to word processing format  930  then sends the word processing data to word processing application  910 . User  905  may now edit active document  915  with word processing application  910 . Shell  920  can read the XML format of active document  915 . Shell  920  is a running process; there is no read operation for active document  915 .  
         [0068]    User  905  may wish to read active document  915  in PDF format. User  905  then opens Acrobat®  935 ; it sends a command to shell  920  requesting active document  915 . Shell  920  converts the XML format of active document  915  to PDF format  940  and returns to Acrobat®  935  a byte stream of data, not a file. In addition, web browser  945  may send a command to shell  920  requesting active document  915  in HTML format. Shell  920  converts the XML format of active document  915  to HTML  950  for web browser  945 . The active document  915  is stored only once in a general format. The active document  915  renders itself in the format required by the application used to modify or view the document.  
         [0069]    It is to be understood that the specific embodiments of the invention that have been described are merely illustrative of certain application of the principle of the present invention. Numerous modifications may be made to the system and method for providing a runtime environment for interactive and live web based document resources invention described herein without departing from the spirit and scope of the present invention.