Methods and systems are provided for exposing nested data in computer-generated documents in a transparent manner. A mechanism is provided for a client application to query a server application for a list of available file formats after an object is requested from a server application document for embedding into a client application document. Another mechanism is provided for the client application to request a particular format associated with the embedded object from the server application document. Once the client application obtains file format information available to the server application or associated with the particular object, the client application may utilize the obtained file formats for utilizing or operating on the embedded object according to the native file formats associated with the embedded object.

Patent
   7657896
Priority
Dec 21 2004
Filed
Dec 21 2004
Issued
Feb 02 2010
Expiry
Dec 24 2027
Extension
1098 days
Assg.orig
Entity
unknown
0
285
EXPIRED
1. A method for exposing formatting information about an embedded object to a receiving software application, comprising:
receiving a request for embedding an object from a second document into a first document, whereby receiving a request for embedding an object from a second document into a first document includes receiving a request for embedding an object where the requested object includes a second embedded object embedded in the requested object;
querying a server application from which the second document is generated for any file formats associated with the requested object;
receiving at a client application from which the first document is generated the any file formats associated with the requested object, whereby receiving at a client application from which the first document is generated the any file formats associated with the requested object includes receiving at the client application any file formats associated with the second embedded object;
reviewing a list of file formats available from a server application and reviewing particular file formats associated with the requested object to allow the client application to understand the any file formats associated with the requested object and to allow the client application to operate the embedded object according to the any file formats associated with the requested object;
determining at the client application how to embed the requested object in the first document in order to comply with the any file formats associated with the requested object, wherein the determination is made by:
identifying a content type for the requested object; and
in response to determining the content type, determining a file extension associated with the identified content type;
embedding the requested object in the first document; and
exposing to the client application the any file formats associated with the requested object for allowing the client application to operate the embedded object according to the any file formats associated with the embedded object, whereby exposing to the client application the any file formats associated with the requested object for allowing the client application to operate the embedded object according to the any file formats associated with the embedded object includes exposing to the client application the any file formats associated with the second embedded object for allowing the client application to operate the second embedded object according to the any file formats associated with the second embedded object.
9. A method for managing data across different computer-generated documents, comprising:
receiving a request for embedding an object from a second document into a first document, whereby receiving a request for embedding an object from a second document into a first document includes receiving a request for embedding an object where the requested object includes a second embedded object embedded in the requested object;
querying a server application from which the second document is generated for a list of file formats available from the server application;
querying the server application for any particular file formats associated with the requested object;
receiving at a client application from which the first document is generated the list of file formats available from the server application, whereby receiving at a client application from which the first document is generated the list of file formats associated with the requested object includes receiving at the client application any file formats associated with the second embedded object;
reviewing the list of file formats available from the server application and reviewing the particular file formats associated with the requested object to allow the client application to understand any file formats associated with the requested object and to allow the client application to operate the embedded object according to any file formats associated with the requested object;
determining at the client application how to embed the requested object in the first document in order to comply with any file formats associated with the requested object, wherein the determination is made by:
identifying a content type for the requested object; and
in response to determining the content type, determining a file extension associated with the identified content type;
receiving at the client application any particular file formats associated with the requested object;
embedding the requested object in the first document; and
exposing to the client application any file formats associated with the requested object for allowing the client application to operate the embedded object according to the any file formats associated with the embedded object, whereby exposing to the client application the any file formats associated with the requested object for allowing the client application to operate the embedded object according to the any file formats associated with the embedded object includes exposing to the client application the any file formats associated with the second embedded object for allowing the client application to operate the second embedded object according to the any file formats associated with the second embedded object.
14. A computer-readable storage medium having computer-executable instructions stored thereon which when executed by a computer perform a method for exposing formatting information about an embedded object to a receiving software application, comprising:
receiving a request for embedding an object from a second document into a first document, whereby receiving a request for embedding an object from a second document into a first document includes receiving a request for embedding an object wher the requested object includes a second embedded object embedded in the requested object;
querying the server application for a list of all file formats available from the server application;
querying a server application from which the second document is generated for any file formats associated with the requested object;
receiving at the client application the list of all file formats available from the server application, whereby receiving at a client application from which the first document is generated the list of all file formats associated with the requested object includes receiving at the client application any file formats associated with the second embedded object;
reviewing the list of all file formats available from the server application and reviewing particular file formats associated with the requested object to allow the client application to understand the any file formats associated with the requested object and to allow the client application to operate the embedded object according to the any file formats associated with the requested object;
determining at the client application how to embed the requested object in the first document in order to comply with the any file formats associated with the requested object, wherein the determination is made by:
identifying a content type for the requested object; and
in response to determining the content type, determining a file extension associated with the identified content type;
receiving at a client application from which the first document is generated the any file formats associated with the requested object;
embedding the requested object in the first document; and
exposing to the client application the any file formats associated with the requested object for allowing the client application to operate the embedded object according to the any file formats associated with the embedded object, whereby exposing to the client application the any file formats associated with the requested object for allowing the client application to operate the embedded object according to the any file formats associated with the embedded object includes exposing to the client application the any file formats associated with the second embedded object for allowing the client application to operate the second embedded object according to the any file formats associated with the second embedded object.
2. The method of claim 1, whereby querying the server application for the any file formats associated with the requested object includes passing an API call from the client application to the server application requesting the any file formats associated with the requested object.
3. The method of claim 2, whereby passing an API call from the client application to the server application requesting the any file formats associated with the requested object includes passing an API call of the form GetFileData(fileformat) to the server application.
4. The method of claim 1,
whereby receiving at a client application from which the first document is generated the any file formats associated with the requested object includes receiving a file formats manifest from the server application identifying the any file formats associated with the requested object; and
whereby exposing to the client application the any file formats associated with the requested object includes providing the client application access to the any file formats associated with the requested object identified on the file formats manifest.
5. The method of claim 1, further comprising:
querying the server application for a list of all file formats available from the server application;
receiving at the client application the list of all file formats available from the server application; and
whereby exposing to the client application the any file formats associated with the requested object for allowing the client application to operate the embedded object according to the any file formats associated with the embedded object includes exposing to the client application the list of all file formats available from the server application for allowing the client application to operate the embedded object according to all file formats available from the server application.
6. The method of claim 5, whereby querying a server application for a list of all file formats available from the server application includes passing an API call from the client application to the server application requesting the list of all file formats available from the server application.
7. The method of claim 6, whereby passing an API call from the client application to the server application requesting the list of all file formats available from the server application includes passing an API call of the form EnumerateFileFormats( ) to the server application.
8. The method of claim 5,
whereby receiving at the client application the list of all file formats available from the server application includes receiving a file formats manifest from the server application identifying all file formats available from the server application; and
whereby exposing to the client application the list of all file formats available from the server application for allowing the client application to operate the embedded object according to all file formats available from the server application includes providing the client application access to the all file formats available from the server application identified on the file formats manifest.
10. The method of claim 9, whereby querying a server application from which the second document is generated for a list of file formats available from the server application includes passing an API call from the client application to the server application requesting the list of file formats available from the server application.
11. The method of claim 10, whereby passing an API call from the client application to the server application requesting the list of file formats available from the server application includes passing an API call of the form EnumerateFileFormats( ) to the server application.
12. The method of claim 9, whereby querying the server application for any particular file formats associated with the requested object includes passing an API call from the client application to the server application requesting any particular file formats associated with the requested object.
13. The method of claim 12, whereby passing an API call from the client application to the server application requesting any particular file formats associated with the requested object includes passing an API call of the form GetFileData(fileformat) to the server application.
15. The computer-readable storage medium of claim 14, further comprising:
whereby exposing to the client application the any file formats associated with the requested object for allowing the client application to operate the embedded object according to the any file formats associated with the embedded object includes exposing to the client application the list of all file formats available from the server application for allowing the client application to operate the embedded object according to all file formats available from the server application.
16. The computer-readable storage medium of claim 15, whereby querying the server application for the any file formats associated with the requested object includes passing an API call from the client application to the server application requesting the any file formats associated with the requested object.
17. The computer-readable storage medium of claim 16, whereby querying a server application for a list of all file formats available from the server application includes passing an API call from the client application to the server application requesting the list of all file formats available from the server application.

The present invention generally relates to managing data across different computer-generated documents. More particularly, the present invention relates to methods and systems for exposing nested data in computer-generated documents in a transparent manner.

With the advent of the computer age, computer and software users have grown accustomed to user-friendly software applications that help then write, calculate, organize, prepare presentations, send and receive electronic mail, make music, and the like. For example, modem electronic word processing applications allow users to prepare a variety of useful documents. Modem spreadsheet applications allow users to enter, manipulate, and organize data. Modem electronic slide presentation applications allow users to create a variety of slide presentations containing text, pictures, data or other useful objects.

Documents, spreadsheets, presentations, and the like generated by such applications are often created from a variety of existing content such as other documents, spreadsheets, presentations, databases, images, etc. These so-called compound documents thereby often have embeddings that have the potential to create problems in documents by creating opaque regions in otherwise transparent files. In many embedding scenarios, there is communication between the containing or receiving application (the client application) and the application that generates the embedding (the server application).

A variety of problems may be caused when such compound documents are saved and/or repurposed (e.g., emailed to another user, tools run against, consumed by another application). One type of problem associated with such compound documents includes accidental information disclosure. For example, when documents contain documents or portions of other documents (embedded objects), it is often difficult to determine exactly what content is included in the embedded object. For example, a slide presentation document may include an embedded spreadsheet chart that is a view of salary information for a company. From within the presentation, it may appear as though it is only a summary of the salary information that may be suitable for a target audience. In fact, the embedded object may include underlying information that provides all details associated with the subject salary information. Under such a scenario, an unsuspecting manager might send the presentation around to a target audience not realizing that he/she has exposed detailed salary information for each employee in the company.

Another problem associated with such compound documents includes accidental or even intentional distribution of software code and/or viruses. While most anti-virus scanners know how to check for particular file types associated with known viruses, such scanners may not necessarily support scanning into all embedded content for determining whether the embedded content contains unacceptable code or a virus.

Another problem associated with such compound documents includes difficulties associated with integrating such documents into existing application solutions. In general, the way embedded content is stored within a document file format is different from the original document format. For example, an embedded chart in a presentation might use the chart syntax for the chart with some type of wrapper as defined by the presentation format. Even if a given solution can integrate with the presentation syntax, the solution may not be able to integrate with the chart syntax. The consequences of this integration problem may be that a solution provider/integrator might need to build a custom application solution for each type of embedded content, and in a large organization or government, this may be a prohibitive amount of work, especially given the lifetimes of documents and the pace at which document solutions and tools change.

It is with respect to these and other considerations that the present invention has been made.

Embodiments of the present invention solve the above and other problems by providing methods and systems for exposing nested data in computer-generated documents in a transparent manner. According to one embodiment, a mechanism is provided for a client application to query a server application for a list of available file formats after an object is requested from a server application document for embedding into a client application document. According to another embodiment, a mechanism is provided for the client application to request a particular format associated with the embedded object from the server application document. According to these embodiments, the ability to nest one transparent container (document or object) into another transparent container is also provided. For example, nesting one document or document object within another document or document object allows file formats that may be used against the containing document or object to be used against the embedded document or document object. Once the client application obtains file format information available to the server application or associated with the particular object, the client application may utilize the obtained file formats for utilizing or operating on the embedded object according to the native file formats associated with the embedded object.

These and other features and advantages, which characterize the present invention, will be apparent from a reading of the following detailed description and a review of the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention as claimed.

FIG. 1 is a block diagram showing the architecture of a personal computer that provides an illustrative operating environment for embodiments of the present invention.

FIG. 2 is a simplified block diagram illustrating interaction between a client application and a server application for obtaining formatting and other information about an embedded object embedded into a client application document from a server application document.

FIG. 3 is a flow diagram illustrating steps performed by a method and system of the present invention for exposing nested data associated with an embedded object embedded into a client application document from a server application document according to embodiments of the present invention.

As briefly described above, embodiments of the present invention are directed to methods and systems for exposing nested data associated with an object embedded into a client application document from a server application document so that a client application may understand and utilize formatting, methods, mechanisms and processes associated with the embedded object so that the embedded object does not become an opaque region in the client application document outside of the functional reach or understanding of the client application. These embodiments may be combined, other embodiments may be utilized, and structural changes may be made without departing from the spirit or scope of the present invention. The following detailed description is therefore not to be taken in a limiting sense and the scope of the present invention is defined by the appended claims and their equivalents.

Referring now to the drawings, in which like numerals refer to like elements through the several figures, aspects of the present invention and an exemplary operating environment will be described. FIG. 1 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. While the invention will be described in the general context of program modules that execute in conjunction with an application program that runs on an operating system on a personal computer, those skilled in the art will recognize that the invention may also be implemented in combination with other program modules.

Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

Turning now to FIG. 1, an illustrative architecture for a personal computer 2 for practicing the various embodiments of the invention will be described. The computer architecture shown in FIG. 1 illustrates a conventional personal computer, including a central processing unit 4 (“CPU”), a system memory 6, including a random access memory 8 (“RAM”) and a read-only memory (“ROM”) 10, and a system bus 12 that couples the memory to the CPU 4. A basic input/output system containing the basic routines that help to transfer information between elements within the computer, such as during startup, is stored in the ROM 10. The personal computer 2 further includes a mass storage device 14 for storing an operating system 16, application programs, such as the application program 205, and data.

The mass storage device 14 is connected to the CPU 4 through a mass storage controller (not shown) connected to the bus 12. The mass storage device 14 and its associated computer-readable media, provide non-volatile storage for the personal computer 2. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available media that can be accessed by the personal computer 2.

By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer.

According to various embodiments of the invention, the personal computer 2 may operate in a networked environment using logical connections to remote computers through a TCP/IP network 18, such as the Internet. The personal computer 2 may connect to the TCP/IP network 18 through a network interface unit 20 connected to the bus 12. It should be appreciated that the network interface unit 20 may also be utilized to connect to other types of networks and remote computer systems. The personal computer 2 may also include an input/output controller 22 for receiving and processing input from a number of devices, including a keyboard or mouse (not shown). Similarly, an input/output controller 22 may provide output to a display screen, a printer, or other type of output device.

As mentioned briefly above, a number of program modules and data files may be stored in the mass storage device 14 and RAM 8 of the personal computer 2, including an operating system 16 suitable for controlling the operation of a networked personal computer, such as the WINDOWS operating systems from Microsoft Corporation of Redmond, Wash. The mass storage device 14 and RAM 8 may also store one or more application programs. In particular, the mass storage device 14 and RAM 8 may store an application program 205 for providing a variety of functionalities to a user. For instance, the application program 205 may comprise many types of programs such as a word processing application, a spreadsheet application, a desktop publishing application, and the like. According to an embodiment of the present invention, the application program 205 comprises a multiple functionality software application suite for providing functionality from a number of different software applications. Some of the individual program modules that may comprise the multiple functionality application suite 205 include a word processing application 125, a slide presentation application 135, a spreadsheet application 140 and a database application 145. An example of such a multiple functionality application suite 205 is OFFICE manufactured by Microsoft Corporation. Other software applications illustrated in FIG. 1 include an electronic mail application 130.

FIG. 2 is a simplified block diagram illustrating interaction between a client application (client) and a server application (server) for obtaining formatting and other information about an object embedded into a client application document from a server application document. Referring to FIG. 2, a client application document 215 representing a top-level container receives an embedded object 230 from a server application document representing an inner container. The embedding object 225 represents text, data, pictures, images, charts, and the like that is copied to or moved to the client application document 215, or that is pointed to by the client application document 215.

The client application 205 is representative of a software application being utilized for generating or editing the client application document. The server application 210 is representative of a software application being used for generating or editing the server application document. The client application 205 and the server application 210 may represent multi-application suites containing multiple software applications, for example, word processing applications, spreadsheet applications, slide presentation applications, database applications, and the like. In addition, as should be understood, the client application 205 and the server application 210 may be two of such multiple applications belonging to a single application suite. On the other hand, the client application 205 and the server application 210 may be separate applications operated by different users or entities in a distributed computing network where the client application 205 is enabled to communicate with the server application as described herein.

As illustrated in FIG. 2, an embedding object 225 is embedded into a client application document 215 in order to insert the data, coding or other information associated with the embedding object 225 into the client application document 215 as an embedded object 230. For example, the client application 205 may be a word processing application with which a client application document 215, for example, a memorandum, is being generated or edited. In order to provide a chart of data, for example, salary information for all sales employees of a given organization, the author/editor of the client application document 215 may desire to embed a chart object 225 from a server application document 220, for example, a spreadsheet document, generated or edited by a server application 210, for example, a spreadsheet application. As briefly described above, a problem with prior methods and systems for embedding objects into a client application document results from an inability of the client application 205 responsible for generating and/or editing the client application document 215 to understand or read formatting information, properties, methods, mechanisms, and the like associated with the embedded object imparted to the embedded object by the server application 210 responsible for generating and/or editing the embedded object.

For example, the following is a simplified Extensible Markup Language (XML) representation of a sample word processing document having an embedded slide presentation application object in the sample word processing document. As should be understood by those skilled in the art, the example XML representations illustrated and described below are simplified, are for purposes of example only, and are not limiting in any way of the application or operation of embodiments of the present invention described herein. Referring to the example XML representation below, the information contained in the following representation after the XML markup “<w:binData w:name=”oledata.mso”> and before the XML markup </w:binData> is representative of the slide presentation object embedded into the sample word processing document. As can be seen, the information associated with the embedded object may be very difficult to understand, if at all, by the client application generating or editing the associated client application document, for example, the word processing document.

<?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?>
<?mso-application progid=“Word.Document”?>
 <w:wordDocument
xmlns:w=http://schemas.microsoft.com/office/word/2003/wordml>
<w:docOleData>
 <w:binData w:name=“oledata.mso”>
  0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQA
GAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAEAAAAgAAAAEA
AAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////DEANQAzADE
ANAAxADUAOQA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAABgAAgH///////////////8AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AWgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////
/////////AAAAAAAAAAAAAAAAAAAAAAAAA
  o9RcjOS6a7TCVdc9sz2e+UeMivhf3rqQ16rKUv5C1/GrIg50C2abLymb
5dtQ0193p4PwRNzkJ+3vazrk5e5zmsU24+e1V75Pznd8785xzBOQBLAJUIHY
hKSfq0nDgmiGYAM4ELgVnARcDFwHuACmA2YAFzgLnAe4F5wPuAS4B
LgfnAZcD7gQXAQmARsBi4HKgErgA+AFQBHwQ+BFwJfBhYA1wFXA1cA
3wE+Cjx2kZ0LVADLAU+BtQCdcB1wDLg48By4Hpl+w2obwRWAJ8E6oEg
8CnVf64WxKLuHxEf6U1zzhxEqmiw3pgqY3/k3OcxXxFujscSsVDSCsY67Hg
wFo4mrYZIuMUWIbSiIRi3E3Y02ZQMx6IiinJ0iwXd4iV0/Koff3FcDQwRk2d
fTpgcbxy7a/rvPbbB5Pg+bhj018qG1qaOqHVzOBJpisei7KUGaqUm6sBctehmC
iNzRfAcx7yNnqX005ixXk0f9Z5zxNBXd73+Vn1r4Pv3+mnBpQ8/w/H+b5Lzk
ftvIbkHawQ497aRnLObSM7b3STn5g/UN4Mk1/AjJOcxJ+
 </w:binData>
</w:docOleData>
<w:p>
 <w:r>
  <w:t>
  This is some text
  </w:t>
 </w:r>
</w:p>

According to embodiments of the present invention, when an embedded object is requested by a client application document 215 for embedding in the client application document as an embedded object 230, the client application 205 queries the server application 210 responsible for generating and/or editing a server application document from which the embedded object 230 is being requested for formatting information, properties, methods, mechanisms, and/or the like associated with the requested object. The client application 205 requests from the server application 210 information about the requested object to allow the client application 205 to understand the formatting, coding and other properties associated with the requested object and to enable the client application 205 to operate on the requested object according to the properties imparted to the embedded object by the server application so that the embedded object coding, formatting and properties become transparent and available to the client application.

As described above, the client application requests information about the requested object to enable the client application to better utilize the requested object. According to prior and well-known OLE object embedding principles, an embedded object may include various information that may be available to the client application 205. For example, metafile information may be passed to the client application that is an image that the server application returns from the serving application. But, because the client application does not understand the embedded object's file format, according to prior methods, it is up to the server application to give the client application an image to use to display the object. For instance, if a spreadsheet object is embedded in a word processing document, the view that is displayed of that spreadsheet object in the word processing document is an image of the spreadsheet object. The image is updated whenever the embedded object is activated, and usually this happens when a user double clicks on the embedded object. Other information may include a classID that identifies the server application that should be called to render the embedded object. That is, the classID maps to the server application. Additional information may include information regarding actual persistence of the file. According to one embodiment this information is in the form of an IStorage format. For example, a spreadsheet object within a word processing document is stored similarly as it is stored when it is saved by the spreadsheet application (server).

According to embodiments of the present invention, the metafile information is stored as a separate image that any client application can access as needed. For example, when the image is saved, rather than write the information out as a simple binary data file, the registry is surveyed to determine if the application that matches the classID for the requested object has indicated a content type for the object. According to embodiments, the content type identifies the object. For example, for an image object of a server document, the content type associated with the object may be “JPEG” or “GIF.” If the server application has identified a content type for the object, then a determination is made as to what file extension is associated with the identified content type. If a content type and a file extension are determined, then the client application may call out the content type and apply the correct extension to the file (object). The client application may then take the requested object from the server application document and treat the requested object as a native object of the client application because the client application understands the content type and file extension. In addition, the registry may be surveyed to determine if the persistence format for the file (requested object) is an IStorage format. Some file formats like the well-known “.doc” format are in IStorage format. According to embodiments of the present invention, the object data stream may be “wrapped” in an IStorage format so that it can also be acted on by the client application as described herein.

According to an embodiment, objects may be embedded in embedded objects. For example, a chart object embedded into a word processing document may, in turn, include a slide presentation object from a slide presentation application embedded into the chart object. Accordingly, the slide presentation object would be embedded in the chart object, which may then be embedded in the client application document 215 as the embedded object 230. According to embodiments of the present invention, the server application 210 would request and receive formatting information, properties, methods and mechanisms associated with the slide presentation object embedded into the chart object, and ultimately, the client application 205, for example, a word processing application, would receive formatting information, properties, methods and mechanisms associated with the embedded object from both the example spreadsheet application and the example slide presentation application associated with the slide presentation application object embedded into the chart object.

The following is a simplified XML representation illustrating the nesting of one container (document or object) into another container (document or object). For the following example, consider a first object includes a parts list and consider that an embedded object includes parts identification information.

<container>
 <partslist>
  <part id=”1”/>
  <container>
   <partslist>
    <part id=1’”/>
    <part id=”2”/>
   </partslist>
  </container>
  <part id=”n”/>
 </partslist>
</container>

According to a particular example implementation types could be assigned to “parts” and the <part id=“#”/> syntax could be replaced with <part id=“#” type=“item”/> and the nested <container> could be replaced with <part id=“#” type=“container”/>. In addition, an inheritance model with the nested containers may be created. For example, metadata may be associated with a container (document or object) that describes whether or not code might be found within the embedded document's or object's parts. As shown below, this metadata association may be made by using an attribute on the <container> element.

<container containscode=”false”>
 <partslist>
  <part id=”1”/>
  ...
  <part id=”n”/>
 </partslist>
</container>

By creating a hierarchy between nested objects, many problems associated with nested objects described above may be addressed. For example, given the example above, if an embedding is added to the container that contains code (e.g., potential virus), without a hierarchical relationship between the embedded object and the receiving document or object a representation like the following representation may result.

<container containscode=”false”>
 <partslist>
  <part id=”1”/>
  <container containscode=”true”>
   <partslist>
    <part id=1’”/>
    <part id=”2”/>
   </partslist>
  </container>
  <part id=”n”/>
 </partslist>
</container>

On the other hand, with a relationship between the embedded object and the containing document or object (container), an improved representation such as the following may be generated.

<container containscode=”true”>
 <partslist>
  <part id=”1”/>
  <container containscode=”true”>
   <partslist>
    <part id=1’”/>
    <part id=”2”/>
   </partslist>
  </container>
  <part id=”n”/>
 </partslist>
</container>

As described herein, when an embedding object 225 is requested from a server application document 220 for embedding in a client application document 215 as an embedded object 230, a formats query 240 is passed from the client application 205 to the server application 210 for information about file formats associated with the requested object. As described herein, the term “file formats” is meant to include format types, for example, Hypertext Markup Language (HTML), rich text formatting (RTF), XML, and the like, formatting properties, and methods and/or mechanisms (coding) utilized by the server application for generating or editing the requested object.

According to one embodiment of the present invention, the client application 205 passes an application program interface (API) call to the server application 210 for the requested information. According to this embodiment, the client application 205 may pass a first API call for obtaining all file formats available from the server application that may have been used by the server application on or in association with the requested object. The first API call may be in the form of “EnumerateFileFormats( )” for obtaining a listing of all file formats available from the server application 210 that may be utilized by the server application for formatting or applying properties to the requested object. If the server application is of a different type as the client application (e.g., spreadsheet application versus word processing application), the client application may need a list of all available file formats for operating the embedded object according to the file formats native to the object as received from the server application document.

Alternatively, a second API call may be passed to the server application to obtain only the file format information associated with the requested object. For example the second API call may be in the form of “GetFileData(fileformat)” and may be passed from the client application 205 to the server application 210 for obtaining particular format information applied to the particular requested object. Once the client application 205 obtains a listing of available file formats and/or particular file formats applied to the requested object, the client application 205 may utilize the requested object in the client application document 215 in a transparent manner as the client application 205 would utilize or operate on other data or information contained in the client application document 215.

According to alternative embodiments, the formats query 240 between the client application 205 and the server application 210 may take the form of a web service 250, illustrated in FIG. 2, for obtaining file format information from the server application 210. As should be understood, the server application 210 may be located separately from the client application 205 over a distributed computing network such as the Internet 245. According to this embodiment of the present invention, a web service 250 may be utilized for receiving queries from client applications 205 and for obtaining requested file format information from server applications 210. According to a web service application 250, the client application 205 does not have to generate API calls or other requests according to the known language or protocols of the server applications 210. That is, the web service 250 may operate as an interface or layer between the requesting client application 205 for receiving requested information from server applications associated with requested server application documents and requested embedding objects 225.

According to another embodiment, a file format manifest may be generated by the server application 210 for enumerating file formats available from the server application or that are associated with particular objects from server application documents. According to this embodiment, when an embedding object 225 is requested from a server application document 220 for embedding into a client application document 215, the formats query 240 from the client application 205 to the server application 210 requests the file format manifest 260 from the server application 210 associated with the server application document and the embedding object 225. Once the client application 205 receives the file format manifest 260, the client application 205 may parse the file format manifest 260 to obtain file format information associated with the server application 210 or to obtain particular file format information associated with the requested embedding object 225.

Having described embodiments of the present invention with respect to FIGS. 1 and 2 above, FIG. 3 is a flow diagram illustrating steps performed by a method and system of the present invention for exposing nested data associated with an embedded object embedded into a client application document from a server application document. The routine 300 begins at start block 305 and proceeds to block 310 where a request is received at the client application 205 for an embedded object in the client application document 215. For example, the request may be in the form of a copying of a chart object from a spreadsheet document 220 containing employee salary information into a memorandum document 215 being generated with a word processing client application 205.

At block 315, in response to the request for the embedded object 230 into the client application document 215, the client application 205 sends a formats query 240 to the server application 210 for a listing of application file formats available from the server application 210, for example, a spreadsheet application. As describe above, the formats query 240 may be in the form of an API call to the server application 210, or the formats query 240 may be a call to a web service 250, or the formats query 240 may be a request for a file format manifest 260 for review by the client application 205. At block 320, the client application 205 queries the server application 210 for particular file formats information associated with the requested object 225. As should be understood, the query from the client application to the server application for both a listing of available file formats and for particular file formats associated with the requested object may be in the form of a single formats query 240.

At block 325, the requested file formats information is received by the client application 205, and at block 330, the client application 205 receives and embeds the requested object 225 into the client application document 215 as the embedded object 230. At block 345, the client application 205 utilizes the received file format information for processing and for rendering transparent the embedded object 230. For example, if the embedded object 230 is a chart object from a spreadsheet application document containing a summary of employee salary information, because the client application 205 has access to file format information associated with the embedded object, all other information associated with the embedded object becomes transparent to the client application 205. For example, if the embedded object also includes detailed employee information associated with the summary salary information, the client application 205 may access the detailed employee information and may process or otherwise operate on the detailed information associated with the embedded object because the client application 205 has access to file formats, methods, mechanisms or other properties applied to or associated with all data contained or associated with the embedded object as received from the server application document 220 and as imparted to the embedded object by the server application 210. The method ends at block 395.

As described herein, methods and systems provide for exposing nested data contained in an embedded object so that a client application receiving the embedded object may understand file formats and other properties associated with the embedded object for allowing the embedded object and its associated file formats and properties to be transparent to the receiving client application. It will be apparent to those skilled in the art that various modifications or variations may be made in the present invention without departing from the scope or spirit of the invention. Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein.

Jones, Brian, Rothschiller, Chad, Villaron, Shawn Alan

Patent Priority Assignee Title
Patent Priority Assignee Title
4410286, Jun 16 1981 IBM INFORMATION PRODUCTS CORPORATION, 55 RAILROAD AVENUE, GREENWICH, CT 06830 A CORP OF DE Printing complex characters
4594674, Feb 18 1983 International Business Machines Corporation Generating and storing electronic fonts
4649513, Nov 15 1983 International Business Machines Corporation Apparatus and method for processing system printing data records on a page printer
4870611, Nov 15 1983 International Business Machines Corporation Apparatus and method for system printing mode control
5222205, Mar 16 1990 Hewlett-Packard Company Method for generating addresses to textured graphics primitives stored in rip maps
5267155, Oct 16 1989 DOCUMENT GENERATION CORPORATION Apparatus and method for computer-assisted document generation
5469533, Jul 19 1992 Microsoft Technology Licensing, LLC Resource-oriented printer system and method of operation
5487138, Sep 02 1993 Hewlett-Packard Company Method to reduce memory requirements in Asian printers while improving performance
5537526, Nov 12 1993 Apple Inc Method and apparatus for processing a display document utilizing a system level document framework
5579466, Sep 01 1994 Microsoft Technology Licensing, LLC Method and system for editing and formatting data in a dialog window
5579519, Mar 05 1990 Interleaf, Inc. Extensible electronic document processing system for creating new classes of active documents
5613124, Apr 15 1994 Microsoft Technology Licensing, LLC Method and system for generating and storing multiple representations of a source object in object storage
5655130, Oct 14 1994 Unisys Corporation Method and apparatus for document production using a common document database
5675788, Sep 15 1995 BHW INFO EDCO COM, LLC Method and apparatus for generating a composite document on a selected topic from a plurality of information sources
5692157, Jun 17 1992 Microsoft Technology Licensing, LLC Method and system for transferring data between objects using registered data formats
5701342, Dec 14 1992 The Commonwealth of Australia of Anzac Park Complex document security
5740439, Jul 06 1992 Microsoft Technology Licensing, LLC Method and system for referring to and binding to objects using identifier objects
5745910, May 10 1993 Apple Inc Frame structure which provides an interface between parts of a compound document
5752055, Dec 27 1994 International Business Machine Corp. Systems and method for automatically linking parts within compound documents
5752056, Mar 02 1994 Apple Inc System for binding document parts and handlers by fidelity of parts or by automatic translation of parts
5819295, Oct 30 1995 Matsushita Electric Industrial Co., Ltd. Document storing and managing system
5845058, Oct 05 1994 Microsoft Technology Licensing, LLC Device independent spooling in a print architecture
5893109, Mar 15 1996 ENIGMA INFORMATION SYSTEMS LTD Generation of chunks of a long document for an electronic book system
5903903, Apr 25 1996 Microsoft Technology Licensing, LLC System for determining the sequence and placement of pages for a multiple-page document
5903905, Apr 30 1996 Microsoft Technology Licensing, LLC Method for simultaneously constructing and displaying a dynamic preview of a document that provides an accurate customized document
5905504, Apr 15 1994 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P System and method for dithering and quantizing image data to optimize visual quality of a color recovered image
5911776, Dec 18 1996 Unisys Corporation Automatic format conversion system and publishing methodology for multi-user network
5950215, Feb 07 1995 NEC Corporation System for managing a compound document
5960168, Oct 05 1994 Microsoft Technology Licensing, LLC Deferred printing
5993088, Sep 30 1998 International Business Machines Corporation Method for improving print performance and quality by accumulating, storing and using resource accounting information with a print job
6023714, Apr 24 1997 Microsoft Technology Licensing, LLC Method and system for dynamically adapting the layout of a document to an output device
6026416, May 30 1996 Microsoft Technology Licensing, LLC System and method for storing, viewing, editing, and processing ordered sections having different file formats
6067531, Jul 21 1998 RAKUTEN, INC Automated contract negotiator/generation system and method
6094665, Sep 18 1997 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Method and apparatus for correcting a uniform resource identifier
6134552, Oct 07 1997 SAP SE Knowledge provider with logical hyperlinks
6144974, Dec 13 1996 Adobe Systems Incorporated; ADOBE SYSTEMS Automated layout of content in a page framework
6175845, Jan 06 1998 International Business Machines Corporation Method and component for presentation of information
6182080, Sep 12 1997 Netvoyage Corporation System, method and computer program product for storage of a plurality of documents within a single file
6182096, Jun 30 1998 Ricoh Company, LTD Method and apparatus of creating highly portable output files by combining pages from multiple input files
6199082, Jul 17 1995 Microsoft Technology Licensing, LLC Method for delivering separate design and content in a multimedia publishing system
6212530, May 12 1998 Hewlett Packard Enterprise Development LP Method and apparatus based on relational database design techniques supporting modeling, analysis and automatic hypertext generation for structured document collections
6247018, Apr 16 1998 CA, INC Method for processing a file to generate a database
6247066, Nov 06 1995 Hitachi, Ltd. Compound document processing method
6269403, Jun 30 1997 Microsoft Technology Licensing, LLC Browser and publisher for multimedia object storage, retrieval and transfer
6342904, Dec 17 1998 WIREFREE SERVICES BELGIUM S A Creating a slide presentation from full motion video
6362870, Oct 26 1998 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Image copier having enhanced duplex capabilities; method of printing a copy of a document to produce a duplex copy product
6393441, May 30 1996 Microsoft Technology Licensing, LLC System and method for printing ordered sections having different file formats
6407821, Sep 08 1998 Ricoh Company, LTD Method and apparatus for printing documents including embedded print objects with an intelligent printing system
6418448, Dec 06 1999 METHOD AND APPARATUS FOR PROCESSING MARKUP LANGUAGE SPECIFICATIONS FOR DATA AND METADATA USED INSIDE MULTIPLE RELATED INTERNET DOCUMENTS TO NAVIGATE, QUERY AND MANIPULATE INFORMATION FROM A PLURALITY OF OBJECT RELATIONAL DATABASES OVER THE WEB
6449653, Mar 25 1997 Microsoft Technology Licensing, LLC Interleaved multiple multimedia stream for synchronized transmission over a computer network
6457017, May 17 1996 SOFTSCAPE SOFTWARE LLC Computing system for information management
6480206, Feb 24 1998 Oracle America, Inc Method and apparatus for an extensible editor
6484189, Apr 26 1991 Gateway, Inc Methods and apparatus for a multimedia authoring and presentation system
6496206, Jun 29 1998 Canon Kabushiki Kaisha Displaying thumbnail images of document pages in an electronic folder
6507858, May 30 1996 Microsoft Technology Licensing, LLC System and method for storing ordered sections having different file formats
6509974, May 17 2000 MIDWEST ATHLETICS AND SPORTS ALLIANCE LLC Automated job creation for job preparation
6519764, Jul 06 1992 Microsoft Technology Licensing, LLC Method and system for naming and binding objects
6538760, Sep 08 1998 Ricoh Company, LTD Method and apparatus for generating a production print stream from files optimized for viewing
6549918, Sep 21 1998 Microsoft Technology Licensing, LLC Dynamic information format conversion
6583789, Dec 03 1998 GOOGLE LLC Method and system for processing glyph-based quality variability requests
6591278, Mar 03 2000 AVIATIS CORPORATION Project data management system and method
6604144, Jun 30 1997 Microsoft Technology Licensing, LLC Data format for multimedia object storage, retrieval and transfer
6608693, Apr 30 1999 HEWLETT-PACKARD DEVELOPMENT COMPANY, L P Apparatus and method for generating a print job from a command stream describing multiple copies of a document
6609200, Dec 20 1996 FleetBoston Financial Corporation Method and system for processing electronic documents
6654737, May 23 2000 DASSAULT SYSTEMES AMERICAS CORP Hypertext-based database architecture
6657647, Sep 25 2000 Intellectual Ventures I LLC Controlling the order in which content is displayed in a browser
6658477, May 12 1999 Microsoft Technology Licensing, LLC Improving the control of streaming data through multiple processing modules
6674540, May 24 1999 HEWLETT-PACKARD DEVELOPMENT COMPANY L P Assembling and printing compound documents
6675353, Jul 26 1999 Microsoft Technology Licensing, LLC Methods and systems for generating XML documents
6675356, Dec 22 1998 GOOGLE LLC Distributed document-based calendaring system
6681223, Jul 27 2000 International Business Machines Corporation System and method of performing profile matching with a structured document
6694485, Jul 27 1999 International Business Machines Corporation Enhanced viewing of hypertext markup language file
6715126, Sep 16 1998 International Business Machines Corporation Efficient streaming of synchronized web content from multiple sources
6763343, Sep 20 1999 DELL, USA, L P Preventing duplication of the data in reference resource for XML page generation
6771291, Jun 07 2000 DISTEFANO WEBSITE INNOVATIONS, INC Method for developing electronic documents employing multiple display regions
6781609, May 09 2000 International Business Machines Corporation Technique for flexible inclusion of information items and various media types in a user interface
6785673, Feb 09 2000 ALTO DYNAMICS, LLC Method for converting relational data into XML
6789229, Apr 19 2000 Microsoft Technology Licensing, LLC Document pagination based on hard breaks and active formatting tags
6812941, Dec 09 1999 International Business Machines Corp. User interface management through view depth
6871321, Mar 29 2000 System for managing networked information contents
6910843, Nov 26 2001 HEWLETT-PACKARD DEVELOPMENT COMPANY L P Cover authoring systems and methods and bookbinding systems incorporating the same
6912555, Jan 18 2002 MICRO FOCUS LLC Method for content mining of semi-structured documents
6918082, Dec 17 1998 LONE STAR DOCUMENT MANAGEMENT, LLC Electronic document proofing system
6925597, Apr 14 2000 SAMSUNG ELECTRONIC CO , LTD ; SAMSUNG ELECTRONICS CO , LTD Systems and methods for digital document processing
6925631, Dec 08 2000 Mosaid Technologies Incorporated Method, computer system and computer program product for processing extensible markup language streams
6931590, Jun 30 2000 Hitachi, Ltd. Method and system for managing documents
6938203, Aug 11 1997 RHETORITECH PERSUASIVE LANGUAGE TECHNOLOGIES INC Method and apparatus for authoring of customizable multimedia documents
6941510, Jun 06 2000 Microsoft Technology Licensing, LLC Method and apparatus for efficient management of XML documents
6952801, Jun 07 1995 R.R. Donnelley Book assembly process and apparatus for variable imaging system
6961902, Mar 07 2000 AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD Interactive system for and method of automating the generation of legal documents
6981207, Jan 11 2000 VERSATA, INC Automatic documentation of configurable systems by outputting explanatory information of configuration parameters in a narrative format and configuration parameters differences
6993527, Dec 21 1998 Adobe Inc Describing documents and expressing document structure
7036076, Apr 14 2000 SAMSUNG ELECTRONIC CO , LTD Systems and methods for digital document processing
7051276, Sep 27 2000 Microsoft Technology Licensing, LLC View templates for HTML source documents
7054841, Sep 27 2001 JDA SOFTWARE GROUP, INC Document storage and classification
7080083, Dec 21 2001 CHARTOLEAUX KG LIMITED LIABILITY COMPANY Extensible stylesheet designs in visual graphic environments
7134071, Nov 21 2001 Ricoh Company, LTD Document processing utilizing a version managing part
7168035, Jun 11 2003 Microsoft Technology Licensing, LLC Building a view on markup language data through a set of components
7171618, Jul 30 2003 GOOGLE LLC Multi-versioned documents and method for creation and use thereof
7290205, Jun 23 2004 SAS Institute Inc. System and method for management of document cross-reference links
7301544, Mar 31 2005 Microsoft Technology Licensing, LLC Printing tree-described documents
7412649, Jan 24 2005 GOOGLE LLC Viewing and editing markup language files with complex semantics
7418652, Apr 30 2004 Microsoft Technology Licensing, LLC Method and apparatus for interleaving parts of a document
7487448, Apr 30 2004 Microsoft Technology Licensing, LLC Document mark up methods and systems
7549118, Apr 30 2004 Microsoft Technology Licensing, LLC Methods and systems for defining documents with selectable and/or sequenceable parts
20010003828,
20010013043,
20010016842,
20010018697,
20010034739,
20010039552,
20010044809,
20010044813,
20010051962,
20010054042,
20020004805,
20020016800,
20020038348,
20020049790,
20020059265,
20020059337,
20020065848,
20020065849,
20020065857,
20020073236,
20020087602,
20020099797,
20020103835,
20020107886,
20020111133,
20020116416,
20020116421,
20020120647,
20020129058,
20020174145,
20020184263,
20020188638,
20020194220,
20030004957,
20030023637,
20030028560,
20030033287,
20030046317,
20030065946,
20030074633,
20030079181,
20030093520,
20030115547,
20030120671,
20030126136,
20030126260,
20030137539,
20030137691,
20030142128,
20030145134,
20030149934,
20030149935,
20030158851,
20030163552,
20030167446,
20030172168,
20030172343,
20030177446,
20030177449,
20030182450,
20030182656,
20030195784,
20030196176,
20030221167,
20030222890,
20030229845,
20030233420,
20030237048,
20030237049,
20040003343,
20040003388,
20040015782,
20040015890,
20040015908,
20040019853,
20040030711,
20040030987,
20040034848,
20040049737,
20040054669,
20040054967,
20040066527,
20040078755,
20040088332,
20040103073,
20040117733,
20040128535,
20040128623,
20040139049,
20040148278,
20040148567,
20040153467,
20040172584,
20040172592,
20040181753,
20040183837,
20040194025,
20040205533,
20040205539,
20040205580,
20040205623,
20040205653,
20040205656,
20040216048,
20040221233,
20040225957,
20040226012,
20040230894,
20040243551,
20040267553,
20040268304,
20050005233,
20050022113,
20050063010,
20050066335,
20050071385,
20050071755,
20050091574,
20050091575,
20050099398,
20050105116,
20050108001,
20050108212,
20050108278,
20050120061,
20050125720,
20050125728,
20050132279,
20050144556,
20050177784,
20050192813,
20050198561,
20050204016,
20050210026,
20050223312,
20050246724,
20050248790,
20050249536,
20050251739,
20050251740,
20050251742,
20050268221,
20050278616,
20050278626,
20060010371,
20060026585,
20060031749,
20060031758,
20060041838,
20060047743,
20060056334,
20060080314,
20060080316,
20060080603,
20060095834,
20060117019,
20060136809,
20060155529,
20060168562,
20060206794,
20060227150,
20070061384,
20070136443,
20070136662,
EP1376387,
EP1452966,
EP1672528,
EP1672543,
JP2003288334,
KR20030048630,
RU2202825,
WO144932,
WO180044,
WO221339,
WO3009517,
WO3021537,
WO2006021673,
WO2006133053,
WO9901802,
ZA200509350,
/
Executed onAssignorAssigneeConveyanceFrameReelDoc
Dec 21 2004Microsoft Corporation(assignment on the face of the patent)
Date Maintenance Fee Events


Date Maintenance Schedule
Feb 02 20134 years fee payment window open
Aug 02 20136 months grace period start (w surcharge)
Feb 02 2014patent expiry (for year 4)
Feb 02 20162 years to revive unintentionally abandoned end. (for year 4)
Feb 02 20178 years fee payment window open
Aug 02 20176 months grace period start (w surcharge)
Feb 02 2018patent expiry (for year 8)
Feb 02 20202 years to revive unintentionally abandoned end. (for year 8)
Feb 02 202112 years fee payment window open
Aug 02 20216 months grace period start (w surcharge)
Feb 02 2022patent expiry (for year 12)
Feb 02 20242 years to revive unintentionally abandoned end. (for year 12)