Real-time-on-demand dynamic document generation6763500Abstract Real-time, on-demand dynamic document generation is disclosed. A merging logic integrates one or more auxiliary files with a main file to dynamically generate a displayed document. The merging logic determines the number and the locations of the auxiliary files. The logic validates each auxiliary file against a schema that defines how the auxiliary files can modify the main file. After validation, the merging logic merges the auxiliary files with the main file in accordance with the schema to generate the document. Claims What is claimed is: Description BACKGROUND OF INVENTION
<?xml version-"1.0" ?>
<Schema xmlns-"urn:schemas-microsoft-com:xml-data" xmlns:dt-
"urn:schemas-microsoft-com:datatypes">
<AttributeType name="TechTag" dt:type="string"/>
<AttributeType name-"TechName" dt:type-"string"/>
<AttributeType name="SubTech" dt:type="string"/>
<AttributeType name-"Version" dt:type-"string"/>
<AttributeType name="FileName" dt:type="string"/>
<AttributeType name-"FileDate" dt:type-"dateTime"/>
<AttributeType name="Serve" dt:type="string"/>
<AttributeType name="Placement" dt:type="enumeration" dt:values=
"Start End Before After Alphabetical"/>
<AttributeType name="Component" dt:type="enumeration" dt:values=
"Entire Content Platform"/>
<AttributeType name="Target" dt:type="enumeration" dt:values=
"All CEOrly Win32Only CEReplacePage"/>
<AttributeType name-"Key" dt:type-"string"/>
<AttributeType name="Index" dt:type="number"/>
<AttributeType name-"Column" dt:type-"number"/>
<AttributeType name="ID" dt:type="string"/>
The Placement attribute is particularly relevant. The Placement attribute defines where external information in an auxiliary file should be located relative to a location in the main file. This attribute defines how the external information in the auxiliary file is merged with the information in the main file. The values for the attribute include at the start, at the end, after, and in alphabetical order. The Target attribute defines a particular version or class of the main file in which the auxiliary file should appear. Based on the value of the Target attribute, the information can be applied to all main files, only to main files that are designated as CE (CEOnly), or only to main files that are designated as Win32 (Win32Only). This attribute can be used on specific section elements or can be used to specify that the entire main file should be replaced (CEReplace). Basic text-handling elements of the schema are defined next.
<ElementType name-"AddText" content-"textOnly">
<attribute type="Target"/>
<attribute type-"Placement"/>
</ElementType>
<ElementType name="Remove" content="textOnly">
<attribute type-"Target"/>
<attribute type-"Component"/>
</ElementType>
<ElementType name-"Replace" content-"eltOnly">
<attribute type-"Target"/>
<attribute type="Component"/>
<element type-"AccText"/>
</ElementType>
The three basic elements are AddText, Remove (text), and Replace (text). These elements encapsulate the text that should be added, removed, or replaced. The AddText element is used by other element tags that represent sections, tables, lists, or other constructs, to specify the text to be added to those constructs. The Remove element allows the auxiliary file to remove, or delete, information. Finally, the Replace element allows the auxiliary file to replace, or change, information from the main file with external information. Where the main file has one or more tables of information, rows and cells of the table can be modified by the auxiliary file as described by the following schema elements.
<ElementType name="ModifyCell" content="eltOnly">
<attribute type-"Key"/>
<attribute type-"Column"/>
<element type="AddText" minOccurs="0" maxOccurs="*"/>
<element type="Remove" minOccurs="0" maxOccurs="*"/>
<element type="Replace" minOccurs="0" maxOccurs="*"/>
</ElementType>
<ElementType name="AddRow" content="eltOnly">
<attribute type="Key"/>
<attribute type-"Placement"/>
<element type="ModifyCell" minOccurs="0" maxOccurs="*"/>
</ElementType>
<ElementType name="DeleteRow" content="eltOnly">
<attribute type-"Target"/>
<attribute type-"Key"/>
</ElementType>
<ElementType name-"Table" content-"eltOnly">
<attribute type="Index"/>
<element type-"AddRow" minOccurs-"0" maxOccurs-"*"/>
<element type-"DeleteRow" minOccurs-"0" maxOccurs-"*"/>
<element type="ModifyCell" minOccurs="0" maxOccurs="*"/>
</ElementType>
The auxiliary file can modify a particular cell using the ModifyCell element of the schema. It can add a new row using the AddRow element, and delete an existing row in the main file using the DeleteRow element. The Table element defines the operations that can be performed on a table. The schema also specifies how to add, modify, and remove information within a list of definitions that may be found in the main file, using the following schema elements.
<ElementType name="AddItem" content="eltOnly">
<attribute type-"Key"/>
<attribute type="Placement"/>
<element type-"AddText" minOccurs-"0" maxOccurs-"*"/>
</ElementType>
<ElementType name="DeleteItem" content="eltOnly">
<attribute type-"Target"/>
<attribute type="Key"/>
</ElementType>
<ElementType name="ModifyItem" content="eltOnly">
<attribute type-"Key"/>
<element type-"AddText" minOccurs-"0" maxOccurs-"*"/>
<element type="Remove" minOccurs="0" maxOccurs="*"/>
<element type="Table" minOccurs="0" maxOccurs="*"/>
</ElementType>
<ElementType name="List" content="eltOnly">
<attribute type="Index"/>
<element type-"AddItem" minOccurs-"0" maxOccurs-"*"/>
<element type="DeleteItem" minOccurs="0" maxOccurs="*"/>
<element type-"ModifyItem" minOccurs-"0" maxOccurs-"*"/>
</ElementType>
<ElementType name="Term" content="eltOnly">
<element type-"AddText" minOccurs-"0" maxOccurs-"*"/>
<element type="Remove" minOccurs="0" maxOccurs="*"/>
<element type-"Replace" minOccurs-"0" maxOccurs-"*"/>
</ElementType>
<ElementType name="Definition" content="eltOnly">
<element type-"AddText" minOccurs-"0" maxOccurs-"*"/>
<element type="Remove" minOccurs="0" maxOccurs="*"/>
<element type-"Replace" minOccurs-"0" maxOccurs-"*"/>
<element type="Table" minOccurs="0" maxOccurs="*"/>
</ElementType>
<ElementType name-"AddDefItem" content-"eltOnly">
<attribute type="Key"/>
<attribute type-"Placement"/>
<element type="Term" minOccurs="0" maxOccurs="*"/>
<element type-"Definition" minOccurs-"0" maxOccurs-"*"/>
</ElementType>
<ElementType name="DeleteDefItem" content="eltOnly">
<attribute type-"Target"/>
<attribute type="Key"/>
</ElementType>
<ElementType name-"ModifyDefItem" content-"eltOnly">
<attribute type="Key"/>
<element type-"Term" minOccurs-"0" maxOccurs-"*"/>
<element type-"Definition" minOccurs-"0" maxOccurs-"*"/>
</ElementType>
<ElementType name-"DefList" content-"eltOnly">
<attribute type-"Index"/>
<element type="AddDefItem" minOccurs="0" maxOccurs="*"/>
<element type-"DeleteDefItem" minOccurs-"0" maxOccurs-"*"/>
<element type-"ModifyDefItem" minOccurs-"0" maxOccurs-"*"/>
</ElementType>
The List element defines the operations that can be performed on a list, as specified by the AddItem element to add an item to the list, the DeleteItem element to remove an item from the list, and the ModifyItem element to change an item in the list. Two particular types of items are specified in the schema, a Term element to define a term, and a Definition element to define the definition for a term. Definition items can be added, deleted, or modified, using the AddDefItem, DeleteDefItem, and ModifyDefItem elements, respectively. The DefList element specifies the operations that can be performed on definitions in the list, as the AddDefItem, DeleteDefItem, and ModifyDefItem elements. The schema specifies how auxiliary files can modify code, such as program listings, within the main file, using the following Code element.
<ElementType name="Code" content="eltOnly">
<attribute type="Index"/>
<element type-"AddText" minOccurs-"0" maxOccurs-"*"/>
<element type="Remove" minOccurs="0" maxOccurs="*"/>
<element type="Replace" minOccurs="0" maxOccurs="*"/>
</ElementType>
The Code element specifies that text can be added, deleted, or changed, by using the AddText, Remove, and Replace elements, respectively. The schema next defines what a section is within the main file that can be modified by an auxiliary file.
<ElementType name-"Section" content-"eltOnly">
<attribute type="ID"/>
<element type-"AddText" minOccurs-"0" maxOccurs-"*"/>
<element type="Remove" minOccurs="0" maxOccurs="*"/>
<element type-"Replace" minOccurs-"0" maxOccurs-"*"/>
<element type-"Code" minOccurs-"0" maxOccurs-"*"/>
<element type="Table" minOccurs="0" maxOccurs="*"/>
<element type-"DefList" minOccurs-"0" maxOccurs-"*"/>
<element type="List" minOccurs="0" maxOccurs="*"/>
</ElementType>
In particular, the Section element specifies that information can be code, a table, definitions within a list, or a list, as specified by the Code, Table, DefList, and List elements, respectively. Where the information is none of these, such as generic text, then the Section element specifies that it can be augmented, deleted, or changed by using the AddText, Removed, and Replace elements, respectively. The example schema concludes with some housekeeping information, as follows.
<ElementType name="MergeInfo" content="empty">
<attribute type-"Target"/>
<attribute type="FileName"/>
<attribute type-"FileDate"/>
<attribute type="Server"/>
</ElementType>
<ElementType name-"SourceFile" content-"eltOnly">
<attribute type-"FileName"/>
<attribute type="FileDate"/>
<attribute type-"Server"/>
<element type="MergeInfo" minOccurs="0" maxOccurs="*"/>
<element type-"Section" minOccurs-"0" maxOccurs-"*"/>
</ElementType>
<ElementType name="OwnerTech" content="empty">
<attribute type-"TechTag"/>
<attribute type-"TechName"/>
<attribute type="SubTech"/>
<attribute type-"Version"/>
</ElementType>
<ElementType name="DeltaFile" content="eltOnly">
<element type-"OwnerTech" minOccurs-"0" maxOccurs-"*"/>
<element type="SourceFile" minOccurs-"0" maxOccurs="*"/>
</ElementType>
</Schema>
Example Computerized Device The invention can be implemented within a computerized environment having one or more computerized devices. The diagram of FIG. 4 shows an example computerized device 400. The example computerized device 400 can be, for example, a desktop computer, a laptop computer, or a personal digital assistant (PDA). The invention may be practiced with other computer system configurations as well, including multiprocessor systems, microprocessor-based or programmable consumer electronics, network computers, minicomputers, and mainframe computers. The invention may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. The device 400 includes one or more of the following components: processor (s) 402, memory 404, storage 406, a communications component 408, input device(s) 410, a display 104, and output device(s) 414. For a particular instantiation of the device 400, one or more of these components may not be present. For example, a PDA may not have any output device(s) 414. The description of the device 400 is to be used as an overview of the types of components that typically reside within such a device, and is not meant as a limiting or exhaustive description. The processor(s) 402 may include a single central-processing unit (CPU), or a plurality of processing units, commonly referred to as a parallel processing environment. The memory 404 may include read-only memory (ROM) and/or random-access memory (RAM). The storage 406 may be any type of storage, such as fixed-media storage devices and removable-media storage devices. Examples of the former include hard disk drives, and flash or other non-volatile memory. Examples of the latter include tape drives, optical drives like CD-ROM drives, and floppy disk drives. The storage devices and their associated computer-readable media provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data. Any type of computer-readable media that can store data and that is accessible by a computer can be used. The device 400 may operate in a network environment. Examples of networks include the Internet, intranets, extranets, local-area networks (LAN"s), and wide-area networks (WAN"s). The device 400 may include a communications component 408, which can be present in or attached to the device 400. The component 408 may be one or more of a network card, an Ethernet card, an analog modem, a cable modem, a digital subscriber loop (DSL) modem, and an Integrated Services Digital Network (ISDN) adapter. The input device(s) 410 are the mechanisms by which a user provides input to the device 400. Such device(s) 410 can include keyboards, pointing devices, microphones, joysticks, game pads, and scanners. The display 104 is how the device 400 typically shows output to the user. The display 104 can include cathode-ray tube (CRT) display devices and flat-panel display (FPD) display devices. The device 400 may provide output to the user via other output device(s) 414. The output device(s) 414 can include speakers, printers, and other types of devices. The methods that have been described can be computer-implemented on the device 400. A computer-implemented method is desirably realized at least in part as one or more programs running on a computer. The programs can be executed from a computer-readable medium such as a memory by a processor of a computer. The programs are desirably storable on a machine-readable medium, such as a floppy disk or a CD-ROM, for distribution and installation and execution on another computer. The program or programs can be a part of a computer system, a computer, or a computerized device. Conclusion It is noted that, although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement that is calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover any adaptations or variations of the present invention. Therefore, it is manifestly intended that this invention be limited only by the claims and equivalents thereof.
|
Same subclass Same class Consider this |
||||||||||
