Dynamic Properties of Documents and the Use of These Properties
Claim Score by NHIP
Abstract
A browser for executing HTML code received from a computer network having a computer. The browser comprises code programmed to analyze HTML code and identify scalar properties and expressions, each expression defining the value of a dynamic property and being a function of the scalar property; code programmed to map a dependent/dependency relationship between the expression and the scalar property; and code programmed to notice a change in a value of the scalar property and to execute the expression in response to the change in value of the scalar property.

Term
Term ended
Projected expiry passed 30 January 2020, 6.7 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
19 claims: 4 independent, 15 dependent
- 1Broadest claimClaim Score 61, broad(NHIP)A computer-readable medium having computer-executable instructions for performing a method of using expressions to establish a relationship between properties in code executable by a browser running on a computer, each property defining a characteristic of an object, wherein the computer-readable instructions are written in HTML code and define a document that forms the browser, the method comprising:declaring the value of a first property as a scalar value, wherein the first property is a width of a window of the browser;declaring the value of a second property as an expression, wherein the second property is a function of the first property, and wherein the expression represents an element in the window of the browser;automatically changing the value of the second property in response to a change in the value of the first property;and updating the document upon changing the value of the second property.
- 2A computer-readable medium having stored thereon a data structure, the data structure including a plurality of nodes, comprising:at least one leaf node stored in memory, each leaf node containing a scalar property, wherein the scalar property is a width of a window of a browser;at least one expression node stored in memory, the at least one expression node containing an expression written in a markup language and defining a dynamic property, the expression being a function of the scalar property, the expression for programming formatting instructions, wherein the expression represents an element in the window of the browser;at least one pointer stored in memory, the at least one pointer mapping a dependent/dependency relationship between the scalar properties and the expressions, wherein upon notification of a change in the value for one of the scalar properties, the browser executes the expressions dependent on the scalar property having a changed value.
- 11A computer for determining and outputting dynamic properties in HTML code received from a computer network, the computer comprising:a processor: a peripheral in data communication with the processor;memory in data communication with the processor, the memory storing a browser for execution by the processor, the browser including code programmed to: (a) analyze the HTML code to identify scalar properties and expressions, at least one of the expressions defining the value of a dynamic property and being a function of at least one scalar property, wherein the scalar property is a width of a window of the browser, and wherein the expression represents an element in the window of the browser;(b) map a dependent/dependency relationship between the at least one of the expressions and the scalar properties, wherein each expression depends from at least one scalar property;and (b) upon notification of a change in value of the scalar property, execute the at least one of the expressions that depends on the scalar property having a changed value.
- 15A computer data signal embodied in a carrier wave readable by a computing system and encoding a computer program of instructions for executing a computer process using expressions to establish a relationship between properties of a document generated by HTML code that is executable by a browser, the properties including constant properties and dynamic properties, said computer process comprising:providing a value of one or more scalar properties, wherein the value of the scalar properties is not a function of another property, and wherein at least one of the scalar properties is a width of a window of the browser;creating one or more expressions declaring a value of a dynamic property, each dynamic property being a function of another property, the expression for programming formatting instructions, and wherein the expression represents an element in the window of the browser;and generating a dependency graph, the dependency graph having a plurality of nodes, including at least one expression node and one leaf node, each expression node corresponding to an expression and each leaf node corresponding to a value of a scalar property, the dependency graph mapping the relationship between the properties.
Independent claims4
61 paragraphs in 7 sections, as filed
RELATED APPLICATION
0001This application is a continuation of U.S. patent application Ser. No. 09/315,334 filed on May 20, 1999, the entirety of which is hereby incorporated by reference.
TECHNICAL FIELD
0002The present invention relates to dynamic properties within documents and the use of those dynamic properties by a software program. More particularly, the invention relates to dynamic properties within a document that are processed by a software program, and to the program's interpretation of the dynamic properties when processing the documents.
BACKGROUND
0003Referring to <figref idref="DRAWINGS">FIG. 1</figref>, a server <b>100</b> is in data communication with the Internet <b>102</b> and is configured to post Web pages that a computer user can access and view on a computer <b>104</b> at a remote location. The entire collection of web documents that are linked together and accessible through the Internet is called the World-Wide Web.
0004A Web page is typically created from an HTML document <b>106</b>, which is a set of code in a text file format. The HTML document <b>106</b> controls the presentation and display of information on the computer <b>104</b>. Examples of information that can be displayed on a Web page through the use of the HTML document <b>106</b> includes textual information, images, video, audio, and other executable programs.
0005The HTML document <b>106</b> includes properties that are used to control various attributes of the document including the format of its output. Properties define the characteristics or attributes of an object. Some uses for properties include setting the font for characters, the color for characters and background areas, and the position of objects within a viewing area. Additionally, many HTML documents <b>106</b> are programmed so that certain events will change the value for the properties. For example, the HTML document <b>106</b> might specify that the color and point size of text should change as the size of a window display area changes.
0006While the Internet <b>102</b> and the technology related to HTML documents <b>106</b> has revolutionized the way in which people access information, there are still shortcomings that limit who can develop these documents and post Web pages. For example, it is not possible to describe the relationships between objects, properties, and variables in terms of functions rather than specify explicit sequences of steps to follow. As a result, writing code that changes the value of properties based on certain events can be very complex and require knowledge of procedural programming and other complex programming techniques. Programming knowledge is thus a barrier to building a rich, dynamic, and self-adjusting HTML document for many people. Furthermore, the code that allows the value for properties to be modified can be long and tedious to write. Such complex code also places overhead on the processing power of the computer and can slow down the computer's ability to update and display a Web page.
SUMMARY
0007In general terms, the present invention addresses these problems by using executable expressions within documents that are processed by a software program. The expressions can define one property as a function of another property. Instead of having a static value, the value of properties are updated dynamically as the software program processing the document executes the expression.
0008One aspect of this invention relates to a computer-readable medium having computer-executable instructions for performing a method that uses expressions to establish a relationship between properties of a document that is executable by a browser running on a computer. Each property defines a characteristic of an object. The method comprises declaring the value of a first property as a scalar value; and declaring the value of a second property as an expression, wherein the second property is a function of the first property.
0009Another aspect of the invention relates to a computer-readable medium having stored thereon a data structure. The data structure includes a plurality of nodes and comprises at least one leaf node stored in memory. Each leaf node contains a scalar property. At least one expression node is stored in memory. Each expression node contains an expression defining a dynamic property of a document, the expression being a function of the scalar property. At least one pointer is stored in memory. Each pointer maps a dependent/dependency relationship between the scalar properties and the expressions, wherein upon notification of a change in the value for one of the scalar properties, a browser executes the expressions dependent on the scalar property having a changed value.
0010Another aspect of the invention is a method of using expressions to establish a relationship between properties of a document generated by HTML code that is executable by a browser. The properties include constant properties and dynamic properties. The method comprises declaring a value of one or more scalar properties, wherein the value of the scalar properties is not a function of another property; creating one or more expressions, each expression declaring a value of a dynamic property, each dynamic property being a function of another property; and generating a dependency graph, the dependency graph having a plurality of nodes, including at least one expression node and one leaf node, each expression node corresponding to an expression and each leaf node corresponding to a value of a scalar property, the dependency graph mapping the relationship between the properties.
0011Yet another aspect of the invention is directed to a computer for determining and outputting dynamic properties in HTML code that is received from a computer network. The computer comprises a processor. A peripheral device is in data communication with the processor. Memory is also in data communication with the processor. The memory stores a browser for execution by the processor. The browser includes code programmed to: (a) analyze the HTML code to identify scalar properties and expressions, each expression defining the value of a dynamic property and being a function of at least one scalar property; (b) map a dependent/dependency relationship between the expressions and the scalar properties, wherein each expression depends from at least one scalar property; and (c) upon notification of a change in value of the scalar property, execute each expression that depends on the scalar property having a changed value.
0012Still another aspect of the invention is a browser system for executing HTML code that is received from a remote computer that is in data communication with a network. The browser comprises code programmed to analyze HTML code and identify scalar properties and expressions, each expression defining the value of a dynamic property and being a function of the scalar property; code programmed to map a dependent/dependency relationship between the expression and the scalar property; and code programmed to notice a change in a value of the scalar property and to execute the expression in response to the change in value of the scalar property.
0013Yet another aspect of the invention includes an apparatus for determining and processing dynamic properties of a document in HTML code that is received at a client computing system. The client computing system is in a network that includes a server. The apparatus comprises an expression engine that identifies expressions and scalar properties received at the browser. Each expression for a document defines the value of a dynamic property and is a function of at least one scalar property. A recalc engine maps a dependent/dependency relationship between the expressions and the scalar properties, wherein each expression depends from at least one scalar property. The recalc engine, upon notification of a change in value of the scalar property, executes each expression that depends on the scalar property that has a changed value. A script engine is responsive to the recalc engine and generates a display in accordance with the dynamic property.
0014Still another aspect of the invention is a computer data signal embodied in a carrier wave that is readable by a computing system and encodes a computer program of instructions for executing a computer process using expressions. The expressions establish a relationship between properties of a document generated by HTML code that is executable by a browser. The properties include constant properties and dynamic properties. The computer process comprises providing a value of one or more scalar properties, wherein the value of the scalar properties is not a function of another property; creating one or more expressions, each expression declaring a value of a dynamic property, each dynamic property being a function of another property; and generating a dependency graph, the dependency graph having a plurality of nodes, including at least one expression node and one leaf node, each expression node corresponding to an expression and each leaf node corresponding to a value of a scalar property, the dependency graph mapping the relationship between the properties.
DESCRIPTION OF THE DRAWINGS
0015<figref idref="DRAWINGS">FIG. 1</figref> illustrates one possible embodiment of a networking environment.
0016<figref idref="DRAWINGS">FIG. 2</figref> illustrates one possible embodiment of a computer for running a browser and executing documents that include a dynamic property that is a function of another property.
0017<figref idref="DRAWINGS">FIG. 3</figref> illustrates one possible embodiment of a browser system working with an HTML document that includes expressions.
0018<figref idref="DRAWINGS">FIG. 4</figref> illustrates a dependency graph that maps the relationship between expressions and properties that are included in the HTML document illustrated in <figref idref="DRAWINGS">FIG. 3</figref>.
0019<figref idref="DRAWINGS">FIGS. 5-7</figref> illustrates logical operation flow charts for the browser shown in <figref idref="DRAWINGS">FIG. 3</figref>.
DETAILED DESCRIPTION
0020Various embodiments of the present invention will be described in detail with reference to the drawings, wherein like reference numerals represent like parts and assemblies throughout the several views. Reference to various embodiments does not limit the scope of the invention, which is limited only by the scope of the claims attached hereto.
0021The following discussion is intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. Although not required, the invention will be described in the general context of computer-executable instructions being executed by a personal computer. Generally, programmed operations perform particular tasks or implement particular abstract data types.
0022Moreover, the invention may be practiced with other computer system configurations such as hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, and mainframe computers. The invention also may 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, computer programs may be located in both local and remote memory storage devices.
0023With reference to <figref idref="DRAWINGS">FIG. 2</figref>, an exemplary system for implementing the invention includes a general purpose computing device in the form of a conventional personal computer <b>200</b>, including a processor unit <b>202</b>, a system memory <b>204</b>, and a system bus <b>206</b> that couples various system components including the system memory <b>204</b> to the processor unit <b>200</b>. The system bus <b>206</b> may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus and a local bus using any of a variety of bus architectures. The system memory includes read only memory (ROM) <b>208</b> and random access memory (RAM) <b>210</b>. A basic input/output system <b>212</b> (BIOS), which contains basic routines that help transfer information between elements within the personal computer <b>200</b>, is stored in ROM <b>208</b>.
0024The personal computer <b>200</b> further includes a hard disk drive <b>212</b> for reading from and writing to a hard disk, a magnetic disk drive <b>214</b> for reading from or writing to a removable magnetic disk <b>216</b>, and an optical disk drive <b>218</b> for reading from or writing to a removable optical disk <b>219</b> such as a CD ROM, DVD, or other optical media. The hard disk drive <b>212</b>, magnetic disk drive <b>214</b>, and optical disk drive <b>218</b> are connected to the system bus <b>206</b> by a hard disk drive interface <b>220</b>, a magnetic disk drive interface <b>222</b>, and an optical drive interface <b>224</b>, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, programs, and other data for the personal computer <b>200</b>.
0025Although the exemplary environment described herein employs a hard disk, a removable magnetic disk <b>216</b>, and a removable optical disk <b>219</b>, other types of computer-readable media capable of storing data can be used in the exemplary system. Examples of these other types of computer-readable mediums that can be used in the exemplary operating environment include magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), and read only memories (ROMs).
0026A number of program modules may be stored on the hard disk, magnetic disk <b>216</b>, optical disk <b>219</b>, ROM <b>208</b> or RAM <b>210</b>, including an operating system <b>226</b>, one or more application programs <b>228</b>, other program modules <b>230</b>, and program data <b>232</b>. A user may enter commands and information into the personal computer <b>200</b> through input devices such as a keyboard <b>234</b> and mouse <b>236</b> or other pointing device. Examples of other input devices may include a microphone, joystick, game pad, satellite dish, and scanner. These and other input devices are often connected to the processing unit <b>202</b> through a serial port interface <b>240</b> that is coupled to the system bus <b>206</b>. Nevertheless, these input devices also may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). A monitor <b>242</b> or other type of display device is also connected to the system bus <b>206</b> via an interface, such as a video adapter <b>244</b>. In addition to the monitor <b>242</b>, personal computers typically include other peripheral output devices (not shown), such as speakers and printers.
0027The personal computer <b>200</b> may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer <b>246</b>. The remote computer <b>246</b> may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the personal computer <b>200</b>. The network connections include a local area network (LAN) <b>248</b> and a wide area network (WAN) <b>250</b>. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
0028When used in a LAN networking environment, the personal computer <b>200</b> is connected to the local network <b>248</b> through a network interface or adapter <b>252</b>. When used in a WAN networking environment, the personal computer <b>200</b> typically includes a modem <b>254</b> or other means for establishing communications over the wide area network <b>250</b>, such as the Internet. The modem <b>254</b>, which may be internal or external, is connected to the system bus <b>206</b> via the serial port interface <b>240</b>. In a networked environment, program modules depicted relative to the personal computer <b>200</b>, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary, and other means of establishing a communications link between the computers may be used.
0029Additionally, the embodiments described herein are implemented as logical operations or a sequence of steps running on the computer. These logical operations are implemented as interconnected machine modules within the computer. The implementation used is a matter of choice dependent on the performance requirements of the computer. Accordingly, the logical operations making up the embodiments of the invention described herein can be variously referred to as operations, steps, or modules.
0030As shown in <figref idref="DRAWINGS">FIG. 3</figref>, one possible software program that is loaded on the computer is a browser <b>304</b>, which is client software that enables a user to view an HTML document <b>300</b> posted on the World-Wide Web, another network, or on the user's computer. An exemplary version of the browser <b>304</b> is integrated with, and forms a part of, an operating system. An example of such a browser is version 5.0 of a browser named “INTERNET EXPLORER,” which was developed by and is distributed by Microsoft Corporation of Redmond, Wash. An example of such an operating system is “WINDOWS 98,” which was also developed by and distributed by Microsoft Corporation. Although an HTML document is described herein, other types of documents can embody expressions. A document is any collection of characters that is readable and executable by a computer.
0031The browser <b>304</b> can detect and process expressions <b>302</b> that are included in the HTML document <b>300</b>. Expressions <b>302</b> enable a developer of a web page, or other appropriate document, to describe relationships between objects, properties, and variables in terms of functions, rather than specifying a sequence of steps. Accordingly, a developer can declare the values for dynamic properties as formulas, not only as constants. The variables that can be included in a formula used to define a dynamic property can include both other dynamic properties and scalar properties.
0032Expressions <b>302</b> can be declared either procedurally or in cascading style sheets (CSS). The use of CSS allows expressions to be defined in style sheets and cascaded to many matching elements. As a result, developers of HTML documents can declare elements, properties, and formulas as either CSS attributes or as HTML properties.
0033The following example illustrates one possible syntax that can be used to form expressions <b>302</b> in HTML.
EXAMPLE
MyElement.setExpressionI(“innerHTML”, “document.body.clientWidth”)
0034In this example, the string innerHTML is the identifier that names a variable or dynamic property. The string document.body.clientWidth is a dependency of the expression. This expression declares innerHTML as being a function of document.body.clientWidth. Accordingly, a change in the value of document.body.clientWidth will affect a change in the value of innerHTML.
0035The next example illustrates another possible syntax that can be used to form expressions. In this example, an expression sets the width of an element (e.g., the string “Expressions are cool . . . ”) to one fourth the width of the parent. The height of the element is established by the browser. Another expression causes the element to disappear when its height is too large to fit within the display area of the browser.
Example
0036<tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="left" /><thead><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry><html></entry></row><row><entry><body ></entry></row><row><entry><div style=“background: orange; position: absolute;</entry></row><row><entry> left: 0;</entry></row><row><entry> top: 0;</entry></row><row><entry> width: expression(parentElement.clientWidth / 4);</entry></row><row><entry> visibility: expression(offsetHeight > parentElement.clientHeight ?</entry></row><row><entry> ‘hidden’ : ‘inherit’);</entry></row><row><entry>”></entry></row><row><entry>Expressions are cool. They let a web page developer declaratively</entry></row><row><entry>specify computed values for CSS properties instead of writing script.</entry></row><row><entry>This example shows how to combine sizing and visibility. The width of</entry></row><row><entry>this element is ¼ of the display area of the browser. The height is</entry></row><row><entry>left up to the layout engine. This element disappears when the height</entry></row><row><entry>is too large to fit in the display area of the browser.</entry></row><row><entry></div></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0037Although these examples are in HTML, expressions can be used with any language that is executable by an interpreter such as a browser. Examples include any appropriate markup language, which is a set of code created and stored in a text file, such as SGML. For scripting, a dynamic property and expression can be expressed as any legal scripting statement that is compatible with the browser <b>304</b>. Examples of scripting languages that can be used include “JSCRIPT” and “VISUAL BASIC” script, which were developed by and are distributed by Microsoft. “JAVASCRIPT” is another example of a scripting language that can be used.
0038One possible embodiment of the browser <b>304</b> includes discrete sets or modules of code that form an expression engine <b>306</b>, a recalc engine <b>308</b>, and a scripting engine <b>310</b>. The expression engine <b>306</b> reviews syntax of the HTML document <b>300</b> that the browser <b>304</b> is executing and identifies expressions <b>302</b> and scalar properties that are set forth in that document. It then passes this information to the recalc engine <b>308</b> for processing. The recalc engine <b>308</b> processes the expressions <b>302</b>, builds a dependency graph, performs the calculations to determine the values for variable properties, and assigns the values to the variable properties. Using these values for the properties, the scripting engine <b>310</b> actually executes the document code, including the expressions, and generates and output for the computer <b>200</b>. This output can have many different forms, including text and graphics that are displayed on the monitor <b>242</b>.
0039Operation of the expression engine <b>306</b>, recalc engine <b>308</b>, and scripting engine <b>310</b> are described below in more detail. Additionally, although these engines are described as being discrete sets of code, they could be integrated into one set of code, into different sets of code, or integrated throughout the code that forms the browser <b>304</b>.
0040Referring to <figref idref="DRAWINGS">FIG. 4</figref>, the recalc engine <b>308</b> creates a hierarchical tree or dependency graph <b>401</b> that maps the relationship between expressions. The dependency graph <b>401</b> provides a framework for determining the order in which expressions are evaluated and executed. The dependency graph <b>401</b> includes expression nodes and leaf nodes. In the illustrated example, the dependency graph <b>401</b> includes a plurality of expression nodes a, b, and c <b>402</b>, <b>404</b>, and <b>408</b>, respectively. Leaf nodes include foo, d, and e <b>406</b>, <b>410</b>, and <b>412</b>, respectively.
0041Each expression node <b>402</b>, <b>404</b>, and <b>408</b> represents an expression and is dynamic. Additionally, each expression node has one or more children on which it depends. The child of an expression node can be another expression node or a leaf node. Each leaf node is scalar because it assigns a scalar value to a scalar property. Leaf nodes do not have any children or dependencies. An example of a property that might correspond to a leaf node is the width of the window display area.
0042The dependency graph <b>401</b> forms a network of dependencies between the nodes. For example, the leaf node e <b>410</b> corresponds to a scalar property e, and the expression node c <b>408</b> corresponds to the variable or dynamic property c. Expression node c <b>408</b> depends on the leaf node e <b>410</b> and is its dependent node. Similarly, the leaf node e <b>410</b> is a dependency of the expression node c <b>408</b>. Because the dependency is direct, expression node c <b>408</b> is a least-dependent node.
0043Similarly, the expression node a <b>402</b> does not have any dependents and is at the end of a network of dependencies. Accordingly, the expression node a <b>402</b> is a most-dependent expression node. Any nodes that are direct dependencies of the expression node a <b>402</b> are next-most dependent nodes. In the example illustrated in <figref idref="DRAWINGS">FIG. 3</figref>, therefore, the expression node c <b>408</b> is both a least-dependent node and a next-most dependent node.
0044The recalc engine <b>308</b> also creates a variable table <b>400</b>, which is a lookup table of object/dispid pairs. In one possible embodiment, the lookup table is formed from a hash table of IDispatch objects. Each object entry is a list of dispid entries that correspond to a particular variable and point to the actual nodes in the dependency graph <b>401</b>. The variable table <b>400</b> provides quick mapping between a variable and a node in the dependency graph <b>401</b>. The variable table <b>400</b> also sets up and receives event notifications, which allows the object to listen for or notice events that affect a change in a property value. One possible mechanism for setting up and receiving event notifications is the OLE interface, IPropertyNotifySink.
0045<figref idref="DRAWINGS">FIG. 5</figref> describes operation of the browser when creating a dependency graph. As an HTML document <b>300</b> is downloaded from the computer network, the browser <b>304</b> parses it and operation <b>500</b> of the expression engine <b>306</b> examines the syntax of the code to identify expressions <b>302</b> and scalar properties. Upon identifying an expression, operation <b>502</b> of the recalc engine <b>308</b> passes the character string that forms the expression syntax to the recalc engine <b>308</b>.
0046Operation <b>504</b> then uses syntax coloring to analyze the character string and extract the names of dependencies. During syntax coloring, the recalc engine <b>308</b> sends a request to the scripting engine <b>310</b> asking for the appropriate syntax coloring scheme. The scripting engine <b>310</b> returns to the recalc engine <b>308</b> the color values that it should use. The recalc engine <b>308</b> then identifies each character and assigns a color to it.
0047By identifying the characters that correlate to the start of a new color and the characters that correlate to the end of a new color, the recalc engine <b>308</b> determines which sets of characters form a keyword and which set of characters form an identifier. The recalc engine <b>308</b> uses this information to identify the names in an expression that form the dependency. The recalc engine also uses this information to build the variable table <b>400</b>.
0048Operation <b>506</b> of the recalc engine <b>308</b> resolves the names to actual properties. Resolution of the names is performed by generating pointers that map the dependency names to the actual properties that are calculated by the expressions <b>302</b>. This mapping creates objects that are executable by the scripting engine <b>310</b>.
0049Operation <b>508</b> of the recalc engine <b>308</b> creates a node for each expression after its names are resolved. Operation <b>510</b> creates a data structure that forms the nodes by setting aside a set of registers in memory that stores the text string version of the expression; a compiled or executable version of the expression; a flag that indicates whether the node is in a dirty state; and information about dependencies, including a list of the nodes that are dependent on it and nodes that depend from it. Additionally, operation <b>512</b> sets the variables in the variable table <b>400</b> and receives notifications about changes in an object that will affect a change in its value.
0050After the nodes are created, operation <b>514</b> of the recalc engine <b>308</b> records the dependencies between the nodes by creating pointers that map one node to the other nodes from which it depends. This mapping is accomplished by matching the name of the dependency in an expression with the name of the variable property recorded in other nodes. In one possible embodiment, mapping is performed after creation of all the nodes. In another possible embodiment, the mapping is created on the fly as matching nodes are created.
0051In addition to the above, the text string version of the expression is sent to the script engine <b>310</b>, which generates an executable version of the expression. The executable version of the expression is returned to the recalc engine <b>308</b>, where it is stored in the corresponding node.
0052Referring now to operation <b>600</b> in <figref idref="DRAWINGS">FIG. 6</figref>, during execution of the HTML document <b>300</b>, notification is received about changes in an object that will effect the value of the variable or property. In response, operation <b>601</b> changes the state of the corresponding node from clean to dirty. Operation <b>602</b> of the recalc engine <b>308</b> then propagates the dirty state to the other nodes that depend from the dirty node. This propagation continues upward in the dependency graph <b>401</b> until the most-dependent node, and hence expression, is marked as dirty. Because of the upward propagation, when a node has more than one dependency, one of the dependencies might be marked as dirty while the other dependencies remain in a clean state. This dirty state, together with the mapping between the nodes, is used by the recalc engine <b>308</b> to determine which expression should be executed and in what order the expressions are executed.
0053After the most-dependent node is changed to a dirty state, the expression engine <b>306</b> automatically schedules a recalc at operation <b>604</b>. The recalc can be scheduled to occur either synchronously or asynchronously. If the recalculation is scheduled to occur synchronously, the recalc engine <b>308</b> automatically executes the values for the variable properties upon changing the most-dependent node to a dirty state. If the recalculation is scheduled to occur asynchronously, the recalc engine <b>308</b> independently executes a recalc after certain conditions are met or certain events occur. In asynchronous recalculation, for example, the expression engine <b>306</b> does not schedule a recalculation until there are no additional scalar properties changing and all of the dependent nodes are marked as dirty. This condition saves computational overhead when the values for several scalar properties are changing at the same time.
0054Referring now to <figref idref="DRAWINGS">FIG. 7</figref>, the expression engine <b>306</b> automatically instructs the recalc engine <b>308</b> to perform the recalculation at the appropriate time or after the appropriate conditions are met. In some situations, however, the developer of the HTML document <b>300</b> might need to manually instruct the recalc engine <b>308</b> to recalculate the expressions <b>302</b>. An example of such a situation is when expressions <b>302</b> refer to global properties or variables. Recalc (true) is an example of a function that manually instructs the recalc engine <b>308</b> to execute all of the expressions <b>302</b> in the HTML document <b>300</b>.
0055After the recalc engine <b>308</b> receives the recalc instruction, operation <b>700</b> examines all of the nodes in the dependency graph <b>401</b> to identify those that are both dirty and do not have any dependent nodes (i.e., most-dependent). This examination begins with the leaf nodes and works its way through the dependency graph <b>401</b>. Nodes marked as clean are skipped.
0056After the most-dependent nodes are identified, operations <b>702</b> and <b>704</b> of the recalc engine <b>308</b> evaluates each of these nodes and determines whether their immediate dependencies (i.e., the next-most-dependent nodes) are up to date or have current values. If there are more than one most-dependent or starting nodes, they can be traversed in any order. Operation <b>702</b> evaluates these dependencies by examining whether the dependency nodes are marked as dirty or clean.
0057When all of the dependencies for the most-dependent nodes are up to date, operation <b>706</b> of the recalc engine <b>308</b> executes the expression to calculate the new value for the variable property. The recalc engine <b>308</b> then assigns the new value to the variable property and marks the node as clean.
0058For each of dependency of the most-significant node that is not up to date, the recalc engine <b>308</b> repeats the evaluation operation for that node to determine whether its dependencies are, in turn, up to date. If the dependencies for this next-most dependent node are up to date, the recalc engine <b>308</b> executes the formula set forth in the expression and assigns the recalculated value to the variable property for that node. The state of the next-most-dependent node is then marked as clean. The recalc engine <b>308</b> repeats these operations for each of the dirty nodes working its way through the dependency graph <b>401</b> to the leaf nodes.
0059The various embodiments described above are provided by way of illustration only and should not be construed to limit the invention. Those skilled in the art will readily recognize various modifications and changes that may be made to the present invention without following the example embodiments and applications illustrated and described herein, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.
Contents7
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| WO2009158172A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| RU2666238C2 | Cited by | Russian Federation | Search report |
| US10248687B2 | Cited by | United States of America | Applicant |
| US10521081B2 | Cited by | United States of America | Applicant |
| US2004236790A1 | Cited by | United States of America | Pre-grant |
| US9864489B2 | Cited by | United States of America | Applicant |
| US10437431B2 | Cited by | United States of America | Applicant |
| US10482429B2 | Cited by | United States of America | Applicant |
| US10482637B2 | Cited by | United States of America | Applicant |
| US9690448B2 | Cited by | United States of America | Applicant |
| US10521073B2 | Cited by | United States of America | Applicant |
| US9665850B2 | Cited by | United States of America | Applicant |
| US9501465B2 | Cited by | United States of America | Applicant |
| US9690450B2 | Cited by | United States of America | Applicant |
| US9026903B1 | Cited by | United States of America | Applicant |
| US10642927B2 | Cited by | United States of America | Applicant |
| US8745027B1 | Cited by | United States of America | Applicant |
| US10592073B2 | Cited by | United States of America | Applicant |
| US9619116B2 | Cited by | United States of America | Applicant |
| US9715678B2 | Cited by | United States of America | Applicant |
| WO2009158172A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9021348B1 | Cited by | United States of America | Applicant |
| US9645698B2 | Cited by | United States of America | Applicant |
| US2015169533A1 | Cited by | United States of America | Pre-grant |
| US9727989B2 | Cited by | United States of America | Applicant |
| US10437964B2 | Cited by | United States of America | Applicant |
| US10997562B2 | Cited by | United States of America | Applicant |
| CN102077199A | Cited by | China | Search report |
| US10635266B2 | Cited by | United States of America | Applicant |
| US8056006B2 | Cited by | United States of America | Search report |
| US9875009B2 | Cited by | United States of America | Applicant |
3 members in 1 office
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 31533499 | United States of America | A | |
| 31533499 | United States of America | A | |
| 45645606 | United States of America | A | |
| 09315334 | – | – | – |
| US19990315334 | – | – | – |
| US20060456456 | – | – | – |
Members3
| Document | Office | Kind | |
|---|---|---|---|
| US7100112B1 | United States of America | B1 | |
| US2006242575A1 | United States of America | A1 | |
| US7469377B2 | United States of America | B2 |
32 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Paralegal or electronic terminal disclaimer approvedP574 | P574 | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Mail Examiner Interview Summary (PTOL - 413)MEXIN | MEXIN | |
| Terminal Disclaimer FiledDIST | DIST | |
| Response after Non-Final ActionA... | A... | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Miscellaneous Incoming LetterLET. | LET. | |
| Application Is Now CompleteCOMP | COMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Cleared by OIPE CSRL194 | L194 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF |
Numbers
- Publication
- 20060242575
- Publication, DOCDB
- 2006242575
- Publication, EPODOC
- US2006242575
- Application
- 11456456
- Application, DOCDB
- 45645606
- Application, EPODOC
- US20060456456
Titles
- English
- Dynamic Properties of Documents and the Use of These Properties
Classification
- CPC, 2
- G06F40/221
- G06F40/143
- IPC, 2
- G06F17 00
- G06F40 143
- USPC, 1
- 715235000