Abstract:
A method and system for comparing compound documents. An original compound document and a modified compound document are analyzed to determine and mark the location of embedded objects. A comparison is performed between an original primary document and the modified primary document, ignoring the embedded objects, the output of which is a comparison output document. The embedded objects are compared by copying the contents of the embedded objects to compatible documents, comparing the embedded object from the original compound document and the embedded object from the modified compound document, the output of which is inserted into the comparison output document using the location markers of the embedded objects.

Description:
RELATED APPLICATION DATA 
       [0001]    This patent application claims priority to U.S. Provisional Patent Application No. 60/763,300, filed Jan. 29, 2006, which is hereby incorporated by reference. 
     
    
     BACKGROUND 
       [0002]    1. Field of the Invention 
         [0003]    The field of the invention relates generally to systems and methods of electronic document comparison. 
         [0004]    2. Related Background 
         [0005]      FIGS. 1 and 2  illustrate the relationship between documents, objects, users and applications users may use to create, modify, compare and manage electronic documents. 
         [0006]    An electronic document, or document, may be viewed as a collection of user-input data used with a certain application (such as, Microsoft Word®, Corel WordPerfect® and Microsoft Excel®). In a general sense, a document is the data or information generated when using a computer application.  FIG. 1  is a generalized block diagram illustrating the relationships between a document that may be used with the present invention and an application as such relationships exist in conventional document creation, management and editing programs. A user  101  interacts with an application  102  to create, view, alter, edit or manage a document  103 . The application makes use of the document so the user may edit the document, view the document, or perform other actions in relation to the document. 
         [0007]    With the advent of OLE (Object Linking and Embedding), a document may contain data from other applications as well as from the main application. The data from other applications are contained in “objects”, or “document objects.” One example of the use of OLE is when a Word document has a spreadsheet table from Excel embedded within it. In this example the excel spreadsheet is an object within a Word document. Embedded objects may include text, tables, pictures or drawings, or other forms of data. A document with one or more objects from other applications is typically referred to as a “Compound Document”. Unless otherwise specified, an “object” refers to a section of the document that is created from, or edited by, an application other than the application that edits or creates the primary document the object is embedded into. 
         [0008]    Single format documents, that is documents not including embedded objects from other applications, are often compared using the well-known algorithm called ‘LCS’ (longest known sequence) or HCS (heaviest common sequence) to determine differences between two documents. There exist specialized adaptations or versions of LCS and HCS specially made to compare Word Documents, Excel Documents, HTML documents and PDF documents. In addition to LCS, other comparison algorithms include: HCS (heaviest common sequence), LCSS (longest common sub sequence) or MSS (matching similarity sequence). These comparison algorithms are implemented in comparison engines, some of which are integrated into document creation and editing applications (such as Word, Excel, Open Office™, StarOffice™, etc.), and some of which are implemented separately from the document creation and editing applications, as discussed below in connection with  FIG. 3 . 
         [0009]      FIG. 2  is a generalized block diagram illustrating the relationship between the objects of an electronic document and the corresponding application used to create, edit or view them. A compound document  201 , such as a Word document, may incude objects such as an Excel spreadsheet, a picture, a PowerPoint slide or graphic, and a Visio drawing. The compound document  201  is created and edited by an application  202 . In this example, the application creating and editing a compound Word document may be Microsoft&#39;s Word program. The applications  203  creating and editing the embedded objects are, respectively, Microsoft&#39;s Excel, Paint, PowerPoint and Visio. 
         [0010]    Conventional document management, creation, editing and viewing applications often include the ability to compare documents and output a document which illustrates the differences between two documents. Typically, the output document including indications of the differences between the two input documents is referred to as a “redline” or “redline document.”  FIG. 3  is a generalized block diagram illustrating a conventional document comparison application as may be found in the prior art. A document comparison engine  303  may compare an original document  301  (or first document) to a modified document  302  (or second document). The output of the comparison is a “redline” document or comparison output document  304 . Typically, the comparison output document provides indications of what has changed between the original document and the modified document. Conventional document comparison engines and applications provide for comparison of single format documents. 
         [0011]    Accordingly, a need exists to provide a comparison system and method capable of comparing compound documents. 
     
    
     
       BRIEF DESCRIPTION OF THE FIGURES  
         [0012]      FIG. 1  is a generalized block diagram illustrating the relationships between an electronic document that may be used with the present invention and an application of the prior art that may be used to create or modify such an electronic document. 
           [0013]      FIG. 2  is a generalized block diagram illustrating the relationship between the objects of a electronic document that may be used with the present invention and a corresponding application of the prior art used to create, edit or view such objects. 
           [0014]      FIG. 3  is a generalized block diagram illustrating a conventional document comparison application as may be found in the prior art. 
           [0015]      FIG. 4  is a generalized block diagram illustrating the extraction and marking of embedded objects in a document to be compared, according to one possible embodiment. 
           [0016]      FIG. 5  is a generalized block diagram illustrating the comparison of compound document objects, according to one possible embodiment. 
           [0017]      FIG. 6  is a generalized flow diagram illustrating the process of finding the differences in compound documents, according to one possible embodiment. 
       
    
    
     SUMMARY 
       [0018]    The present invention provides for a computer based system and method for comparing compound documents. An original compound document and a modified compound document are analyzed to determine and mark the location of embedded objects. A comparison is performed between an original primary document and the modified primary document, ignoring the embedded objects, the output of which is a comparison output document. The embedded objects are compared by copying the contents of the embedded objects to compatible documents, comparing the embedded object from the original compound document and the embedded object from the modified compound document, the output of the comparison is inserted into the comparison output document using the location markers of the embedded objects. 
       DETAILED DESCRIPTION  
       [0019]    The present invention is described in the context of a specific embodiment. This is done to facilitate the understanding of the features and principles of the present invention and the present invention is not limited to this embodiment. In particular, the present invention is described in the context of a computer system used to compare, edit, view and/or modify electronic documents. 
         [0020]      FIG. 4  is a generalized block diagram illustrating the extraction and marking of embedded objects in a document to be prepared. A compound document  401  has the objects  403  embedded in the document and “extracted”  402 . In the presently preferred embodiment, extraction involves copying the object to a corresponding document of the same document type, or document format, as the object being copied. Additionally, the location (or locations)  404  of the objects in the primary document are marked. In the presently preferred embodiment, the location is marked in the primary document file. Alternatively, the position of the objects may be marked outside of the primary document, for example in a database or in another file. 
         [0021]      FIG. 5  is a generalized block diagram illustrating the comparison of compound document objects. The input documents to the comparison process, the original document  501  and the modified document  502 , contain embedded objects  503  from a different document type than the primary document. In the example embodiment shown there are two embedded objects in the input documents, one Excel object and one PowerPoint object. The primary document type of the input documents are Word documents. The marked location information is used in the comparison process to confine the comparison to the primary document type, thereby excluding the embedded objects from the comparison of the primary document type. 
         [0022]    The comparison process compares the text of the primary document type of the input documents, the results of the comparison output to a primary comparison output document. The comparison of the first embedded object types, the Excel objects, are is output to the comparison output document as an Excel object embedded in the primary comparison output document according to the marked location information. The marked location information is used to locate the comparison output of the Excel objects in the comparison output object. Similarly, the comparison of the second embedded object types, the PowerPoint objects, are output to the comparison output document as an PowerPoint object embedded in the comparison output document. The marked location information is used to position the comparison output of the PowerPoint objects in the comparison output document. 
         [0023]    While the example input documents only contained two embedded objects, alternate embodiments may contain more or fewer embedded objects. With such input documents, the presently preferred embodiment compares all of the embedded objects of the input documents. However, alternative embodiments may choose to ignore one or more embedded object pairs (an embedded object pair includes an original embedded object from the original input document and the corresponding embedded object from the modified input document), or choose to ignore one ore more embedded object types, from comparison. In yet another alternative embedment, the user may indicate, through a comparison command, or through configuration of a document application implementing an alternative embodiment, that certain objects or certain object types are to be ignored from comparison. 
         [0024]    Additionally, input documents may contain multiple embedded objects of the same document type located at different positions within the primary document (for example, a Word document with multiple Excel spreadsheets located at different positions within the Word document). In the presently preferred embodiment, the multiple embedded objects are compared and the results of the comparisons are embedded in objects in the comparison output document, using the marked location information. 
         [0025]      FIG. 6  is a generalized flow diagram illustrating the process of comparing documents to find the differences in the compound documents by opening the document identified for comparison. At step  601  a request to compare documents is received. The request may be from a user, or from another program or process. At step  602  the input comparison document (or primary input document), the document designated for comparison, is examined for OLE objects. In the presently preferred embodiment, at step  601  both the original input document and the modified input document are examined for OLE objects. If an OLE object is found at step  602 , then at step  603  the location of the discovered OLE object is marked. At step  604  the primary comparison documents are compared, ignoring the embedded objects. In the preferred embodiment, the comparison process ignores the embedded objects using the location markings from step  603 . At step  605  the results of the comparison of the primary comparison documents is output to a primary comparison output document, or “redline” primary comparison document. Referring to the example of  FIG. 5 , the output of step  605  is comparison output primary document which is a Word document, or a comparison output Word document. 
         [0026]    At step  606  the OLE objects found at step  602 , in one embodiment are copied to a document of the type that created the object to create an object comparison document. That is, if the object contains data which is from a given application, the data of the object is copied to a document of the type of the given application (or to a compatible application document type). As an example, if the OLE object were of the type created by PowerPoint, preferably the data of this object is copied to a PowerPoint comparison document. Similar action is taken for OLE objects from other applications. Step  606  is performed for both the object from the original comparison document and from the modified comparison document, thus resulting in an original OLE object comparison document and a modified OLE object comparison document. 
         [0027]    At step  607  a comparison engine of the type to compare documents of the given application is initiated to compare the original OLE object comparison document and the modified OLE object comparison document. Thus, referring again to the example of  FIG. 5 , step  607  initiates the comparison engine to compare Excel object comparison documents created at step  606 . Similarly, at step  607  the comparison engine to compare PowerPoint documents is initiated to compare the PowerPoint object comparison documents created at step  606 . At step  607  the original OLE object comparison document and modified OLE object comparison document are compared using a comparison engine appropriate for the document type of the object. The results of the comparison performed at step  607  generates a “redline” OLE object document, or comparison output OLE object document, are placed in a comparison output primary document, or “redline” primary document at step  608 . Referring again to the example of  FIG. 5 , the output of step  607  is a comparison output Excel object document and a comparison output PowerPoint document. 
         [0028]    Step  609  inserts the comparison output OLE object document (or documents) in the comparison output primary document output from step  605 . Referring again to the example of  FIG. 5 , the comparison output Excel object document and comparison output PowerPoint document are inserted at the comparison output Word document. 
         [0029]    The insertion of the comparison output OLE object document uses the OLE object marking information from step  601 . By using the location markings the comparison output document is able to provide the user with a document that has a similar organization to the original and modified input documents. 
         [0030]    If the comparison input documents included additional embedded objects which have not been compared, at step  610  the comparison process returns to step  606  to compare the next embedded object pair. If there are no additional embedded objects which have not been compared (or there are no embedded objects which have not been designated to exempt from comparison). 
         [0031]    While the above embodiments and examples compared only two documents, alternate embodiments could compare three or more documents. 
         [0032]    The invention has been described with reference to particular embodiments. However, it will be readily apparent to those skilled in the art that it is possible to embody the invention in specific forms other than those of the preferred embodiments described above. This may be done without departing from the spirit of the invention. 
         [0033]    Thus, the preferred embodiment is merely illustrative and should not be considered restrictive in any way. The scope of the invention is given by the appended claims, rather than the preceding description, and all variations and equivalents which fall within the range of the claims are intended to be embraced therein.